Class: Rollo::Model::Service
- Inherits:
-
Object
- Object
- Rollo::Model::Service
- Defined in:
- lib/rollo/model/service.rb
Instance Method Summary collapse
- #decrease_instance_count_by(count_delta, options = {}, &block) ⇒ Object
- #desired_count ⇒ Object
- #desired_count=(count) ⇒ Object
- #desired_count_met? ⇒ Boolean
- #ensure_instance_count(count, &block) ⇒ Object
- #increase_instance_count_by(count_delta, options = {}, &block) ⇒ Object
-
#initialize(ecs_cluster_name, ecs_service_arn, region, ecs_resource = nil, waiter = nil) ⇒ Service
constructor
A new instance of Service.
- #instance ⇒ Object
- #name ⇒ Object
- #reload ⇒ Object
- #replica? ⇒ Boolean
- #running_count ⇒ Object
- #wait_for_service_health(&block) ⇒ Object
Constructor Details
#initialize(ecs_cluster_name, ecs_service_arn, region, ecs_resource = nil, waiter = nil) ⇒ Service
Returns a new instance of Service.
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/rollo/model/service.rb', line 10 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 |
Instance Method Details
#decrease_instance_count_by(count_delta, options = {}, &block) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/rollo/model/service.rb', line 72 def decrease_instance_count_by(count_delta, = {}, &block) minimum = [: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 ⇒ Object
42 43 44 |
# File 'lib/rollo/model/service.rb', line 42 def desired_count @ecs_service.desired_count end |
#desired_count=(count) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/rollo/model/service.rb', line 46 def desired_count=(count) @ecs_resource.client .update_service( cluster: @ecs_cluster_name, service: @ecs_service_arn, desired_count: count ) end |
#desired_count_met? ⇒ Boolean
55 56 57 |
# File 'lib/rollo/model/service.rb', line 55 def desired_count_met? running_count == desired_count end |
#ensure_instance_count(count, &block) ⇒ Object
85 86 87 88 |
# File 'lib/rollo/model/service.rb', line 85 def ensure_instance_count(count, &block) self.desired_count = count wait_for_service_health(&block) end |
#increase_instance_count_by(count_delta, options = {}, &block) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/rollo/model/service.rb', line 59 def increase_instance_count_by(count_delta, = {}, &block) maximum = [: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 ⇒ Object
26 27 28 |
# File 'lib/rollo/model/service.rb', line 26 def instance @ecs_service end |
#name ⇒ Object
22 23 24 |
# File 'lib/rollo/model/service.rb', line 22 def name @ecs_service.service_name end |
#reload ⇒ Object
30 31 32 |
# File 'lib/rollo/model/service.rb', line 30 def reload @ecs_service = ecs_service end |
#replica? ⇒ Boolean
34 35 36 |
# File 'lib/rollo/model/service.rb', line 34 def replica? @ecs_service.scheduling_strategy == 'REPLICA' end |
#running_count ⇒ Object
38 39 40 |
# File 'lib/rollo/model/service.rb', line 38 def running_count @ecs_service.running_count end |
#wait_for_service_health(&block) ⇒ Object
90 91 92 93 94 95 96 97 98 99 |
# File 'lib/rollo/model/service.rb', line 90 def wait_for_service_health(&block) @waiter.until do |attempt| reload if block callbacks_for(block) .try_respond_with(:waiting_for_health, attempt) end desired_count_met? end end |