lib/command/run.rb in cpl-1.2.0 vs lib/command/run.rb in cpl-1.3.0
- old
+ new
@@ -27,60 +27,57 @@
```sh
# Opens shell (bash by default).
cpl run -a $APP_NAME
# Need to quote COMMAND if setting ENV value or passing args.
- cpl run 'LOG_LEVEL=warn rails db:migrate' -a $APP_NAME
-
- # COMMAND may also be passed at the end.
cpl run -a $APP_NAME -- 'LOG_LEVEL=warn rails db:migrate'
# Runs command, displays output, and exits shell.
- cpl run ls / -a $APP_NAME
- cpl run rails db:migrate:status -a $APP_NAME
+ cpl run -a $APP_NAME -- ls /
+ cpl run -a $APP_NAME -- rails db:migrate:status
# Runs command and keeps shell open.
- cpl run rails c -a $APP_NAME
+ cpl run -a $APP_NAME -- rails c
# Uses a different image (which may not be promoted yet).
- cpl run rails db:migrate -a $APP_NAME --image appimage:123 # Exact image name
- cpl run rails db:migrate -a $APP_NAME --image latest # Latest sequential image
+ cpl run -a $APP_NAME --image appimage:123 -- rails db:migrate # Exact image name
+ cpl run -a $APP_NAME --image latest -- rails db:migrate # Latest sequential image
# Uses a different workload than `one_off_workload` from `.controlplane/controlplane.yml`.
- cpl run bash -a $APP_NAME -w other-workload
+ cpl run -a $APP_NAME -w other-workload -- bash
# Overrides remote CPLN_TOKEN env variable with local token.
# Useful when superuser rights are needed in remote container.
- cpl run bash -a $APP_NAME --use-local-token
+ cpl run -a $APP_NAME --use-local-token -- bash
```
EX
- attr_reader :location, :workload, :one_off, :container
+ attr_reader :location, :workload_to_clone, :workload_clone, :container
def call # rubocop:disable Metrics/MethodLength
@location = config.location
- @workload = config.options["workload"] || config[:one_off_workload]
- @one_off = "#{workload}-run-#{rand(1000..9999)}"
+ @workload_to_clone = config.options["workload"] || config[:one_off_workload]
+ @workload_clone = "#{workload_to_clone}-run-#{random_four_digits}"
- step("Cloning workload '#{workload}' on app '#{config.options[:app]}' to '#{one_off}'") do
+ step("Cloning workload '#{workload_to_clone}' on app '#{config.options[:app]}' to '#{workload_clone}'") do
clone_workload
end
- wait_for_workload(one_off)
- wait_for_replica(one_off, location)
+ wait_for_workload(workload_clone)
+ wait_for_replica(workload_clone, location)
run_in_replica
ensure
progress.puts
- ensure_workload_deleted(one_off)
+ ensure_workload_deleted(workload_clone)
end
private
def clone_workload # rubocop:disable Metrics/MethodLength
# Create a base copy of workload props
- spec = cp.fetch_workload!(workload).fetch("spec")
- container_spec = spec["containers"].detect { _1["name"] == workload } || spec["containers"].first
+ spec = cp.fetch_workload!(workload_to_clone).fetch("spec")
+ container_spec = spec["containers"].detect { _1["name"] == workload_to_clone } || spec["containers"].first
@container = container_spec["name"]
# remove other containers if any
spec["containers"] = [container_spec]
@@ -109,11 +106,11 @@
if config.options["use_local_token"]
container_spec["env"] << { "name" => "CONTROLPLANE_TOKEN", "value" => ControlplaneApiDirect.new.api_token }
end
# Create workload clone
- cp.apply_hash("kind" => "workload", "name" => one_off, "spec" => spec)
+ cp.apply_hash("kind" => "workload", "name" => workload_clone, "spec" => spec)
end
def runner_script # rubocop:disable Metrics/MethodLength
script = Scripts.helpers_cleanup
@@ -139,9 +136,9 @@
end
def run_in_replica
progress.puts("Connecting...\n\n")
command = %(bash -c 'eval "$CONTROLPLANE_RUNNER"')
- cp.workload_exec(one_off, location: location, container: container, command: command)
+ cp.workload_exec(workload_clone, location: location, container: container, command: command)
end
end
end