class Rollo::Model::Service
Public Class Methods
new( ecs_cluster_name, ecs_service_arn, region, ecs_resource = nil, waiter = nil)
click to toggle source
# File lib/rollo/model/service.rb, line 8 def initialize( ecs_cluster_name, ecs_service_arn, region, ecs_resource = nil, waiter = nil) @ecs_cluster_name = ecs_cluster_name @ecs_service_arn = ecs_service_arn @ecs_resource = ecs_resource || Aws::ECS::Resource.new(region: region) reload @waiter = waiter || Wait.new(attempts: 720, timeout: 30, delay: 5) end
Public Instance Methods
decrease_instance_count_by(count_delta, options = {}, &block)
click to toggle source
# File lib/rollo/model/service.rb, line 67 def decrease_instance_count_by(count_delta, options = {}, &block) minimum = options[:minimum_instance_count] || 0 initial = desired_count decreased = initial - count_delta target = [decreased, minimum].max callbacks_for(block).try_respond_with( :prepare, initial, target) ensure_instance_count(target, &block) end
desired_count()
click to toggle source
# File lib/rollo/model/service.rb, line 39 def desired_count @ecs_service.desired_count end
desired_count=(count)
click to toggle source
# File lib/rollo/model/service.rb, line 43 def desired_count=(count) @ecs_resource.client .update_service( cluster: @ecs_cluster_name, service: @ecs_service_arn, desired_count: count) end
ensure_instance_count(count, &block)
click to toggle source
# File lib/rollo/model/service.rb, line 79 def ensure_instance_count(count, &block) self.desired_count = count wait_for_service_health(&block) end
has_desired_count?()
click to toggle source
# File lib/rollo/model/service.rb, line 51 def has_desired_count? running_count == desired_count end
increase_instance_count_by(count_delta, options = {}, &block)
click to toggle source
# File lib/rollo/model/service.rb, line 55 def increase_instance_count_by(count_delta, options = {}, &block) maximum = options[:maximum_instance_count] || Float::INFINITY initial = desired_count increased = initial + count_delta target = [increased, maximum].min callbacks_for(block).try_respond_with( :prepare, initial, target) ensure_instance_count(target, &block) end
instance()
click to toggle source
# File lib/rollo/model/service.rb, line 23 def instance @ecs_service end
is_replica?()
click to toggle source
# File lib/rollo/model/service.rb, line 31 def is_replica? @ecs_service.scheduling_strategy == 'REPLICA' end
name()
click to toggle source
# File lib/rollo/model/service.rb, line 19 def name @ecs_service.service_name end
reload()
click to toggle source
# File lib/rollo/model/service.rb, line 27 def reload @ecs_service = get_ecs_service end
running_count()
click to toggle source
# File lib/rollo/model/service.rb, line 35 def running_count @ecs_service.running_count end
wait_for_service_health(&block)
click to toggle source
# File lib/rollo/model/service.rb, line 84 def wait_for_service_health(&block) @waiter.until do |attempt| reload callbacks_for(block) .try_respond_with(:waiting_for_health, attempt) if block has_desired_count? end end
Private Instance Methods
callbacks_for(block)
click to toggle source
# File lib/rollo/model/service.rb, line 103 def callbacks_for(block) Hollerback::Callbacks.new(block) end
get_ecs_service()
click to toggle source
# File lib/rollo/model/service.rb, line 95 def get_ecs_service @ecs_resource.client .describe_services( cluster: @ecs_cluster_name, services: [@ecs_service_arn]) .services[0] end