Class: Command::MaintenanceOff
- Defined in:
- lib/command/maintenance_off.rb
Constant Summary collapse
- NAME =
"maintenance:off"- OPTIONS =
[ app_option(required: true) ].freeze
- DESCRIPTION =
"Disables maintenance mode for an app"- LONG_DESCRIPTION =
<<~DESC - Disables maintenance mode for an app - Specify the one-off workload through `one_off_workload` in the `.controlplane/controlplane.yml` file - Optionally specify the maintenance workload through `maintenance_workload` in the `.controlplane/controlplane.yml` file (defaults to 'maintenance') - Maintenance mode is only supported for domains that use path based routing mode and have a route configured for the prefix '/' on either port 80 or 443 DESC
Constants inherited from Base
Base::DEFAULT_ARGS, Base::EXAMPLES, Base::HIDE, Base::NO_IMAGE_AVAILABLE, Base::REQUIRES_ARGS, Base::USAGE
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#call ⇒ Object
rubocop:disable Metrics/MethodLength.
Methods inherited from Base
all_commands, all_options, all_options_by_key_name, app_option, #args_join, commit_option, #cp, #ensure_workload_deleted, image_option, #initialize, #latest_image, #latest_image_from, #latest_image_next, org_option, #perform, #progress, skip_confirm_option, #step, #step_error, #step_finish, terminal_size_option, upstream_token_option, use_local_token_option, version_option, #wait_for_replica, #wait_for_workload, wait_option, workload_option
Constructor Details
This class inherits a constructor from Command::Base
Instance Method Details
#call ⇒ Object
rubocop:disable Metrics/MethodLength
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/command/maintenance_off.rb', line 17 def call # rubocop:disable Metrics/MethodLength one_off_workload = config[:one_off_workload] maintenance_workload = config.current[:maintenance_workload] || "maintenance" domain_data = cp.find_domain_for([one_off_workload, maintenance_workload]) unless domain_data raise "Can't find domain. " \ "Maintenance mode is only supported for domains that use path based routing mode " \ "and have a route configured for the prefix '/' on either port 80 or 443." end domain = domain_data["name"] domain_workload = cp.get_domain_workload(domain_data) if domain_workload == one_off_workload progress.puts("Maintenance mode is already disabled for app '#{config.app}'.") return end cp.fetch_workload!(maintenance_workload) # Start all other workloads Cpl::Cli.start(["ps:start", "-a", config.app, "--wait"]) progress.puts # Switch domain workload step("Switching workload for domain '#{domain}' to '#{one_off_workload}'") do cp.set_domain_workload(domain_data, one_off_workload) # Give it a bit of time for the domain to update sleep 30 end progress.puts # Stop maintenance workload Cpl::Cli.start(["ps:stop", "-a", config.app, "-w", maintenance_workload, "--wait"]) progress.puts("\nMaintenance mode disabled for app '#{config.app}'.") end |