class Mikoshi::Plan::Service
Constants
- IGNORE_OPTIONS_WHEN_UPDATE
- TASK_DEFINITION_WITH_REVISION
Public Class Methods
new(yaml_path: nil, client: nil)
click to toggle source
Calls superclass method
Mikoshi::Plan::Base::new
# File lib/mikoshi/plan/service.rb, line 13 def initialize(yaml_path: nil, client: nil) super if @data[:service][:task_definition].match(TASK_DEFINITION_WITH_REVISION).nil? raise ArgumentError, 'task_definition should have revision by numerically.' end @data[:service].store :service_name, @data[:service][:service] end
Public Instance Methods
create_service()
click to toggle source
# File lib/mikoshi/plan/service.rb, line 23 def create_service invoke_before_create_hooks @client.create_service(@data[:service].except(:service)) wait_until_services_stable invoke_after_create_hooks end
deploy_service(message: false)
click to toggle source
# File lib/mikoshi/plan/service.rb, line 41 def deploy_service(message: false) @message = message case operation when :create create_service when :update update_service end rescue StandardError => e invoke_failed_hooks raise e end
update_service()
click to toggle source
# File lib/mikoshi/plan/service.rb, line 32 def update_service invoke_before_update_hooks @client.update_service(@data[:service].except_keys(IGNORE_OPTIONS_WHEN_UPDATE)) wait_until_services_stable invoke_after_update_hooks end
Private Instance Methods
invoke_failed_hooks()
click to toggle source
# File lib/mikoshi/plan/service.rb, line 92 def invoke_failed_hooks invoke_hooks(@data[:hooks][:failed]) unless @data.dig(:hooks, :failed).nil? end
operation()
click to toggle source
# File lib/mikoshi/plan/service.rb, line 57 def operation if @operation @operation else resp = @client.describe_services(cluster: @data[:service][:cluster], services: [@data[:service][:service]]) @operation ||= if resp.services.empty? || resp.services.first.status == 'INACTIVE' :create else :update end end end
wait_until_services_stable()
click to toggle source
# File lib/mikoshi/plan/service.rb, line 72 def wait_until_services_stable params = { cluster: @data[:service][:cluster], services: [@data[:service][:service]] } @client.wait_until(:services_stable, params) do |w| w.max_attempts = 30 w.delay = 10 w.before_wait do puts 'Waiting to change status of service...' if @message end end end