hako 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2aaacf745660c3193a66d0527ff2ec56dac915b
4
- data.tar.gz: 3110462e23bdaf2318eb964735405e38bdcd1176
3
+ metadata.gz: be720c4761b90dbbae3c8d302cbe3c50421c915a
4
+ data.tar.gz: 40a6297d8e167ea157cb3080749d56c70ab9cbe0
5
5
  SHA512:
6
- metadata.gz: 0e2f3a18e41a7cf61b25feea55feaa258d0365759d6cd24adaeb01b0b78c67cddbf6a1f94158cc2234b384506f612ed0b0645921331ccc5304ef51b8ab6ca7a0
7
- data.tar.gz: d36842d199259f48306ba64fef90db984d84909971f2599e11429d2f95e6d6be511b8d6629b099cc2e825cd482f3830dfa79f6295b2a56da0017765250e63487
6
+ metadata.gz: b5f6863cebd0493b0d47a72bc82296490195446aa8a8fd74a2f401f0b67046aa472f14266928ceba3e71694da7aa8a5050d4e6bfa81399cdb44a552c5600e2e4
7
+ data.tar.gz: 13e21ae6fa1ae860a5598f8abe5910b5b8e759889ec9a439f9984b79d407588c4b43719a51f90b09eb2bd1530913f1993fb206e54bad07d172330b18c240fc7b
@@ -1,3 +1,7 @@
1
+ # 1.3.1 (2017-05-16)
2
+ ## Bug fixes
3
+ - Retry DescribeAutoScalingGroups when rate limited
4
+
1
5
  # 1.3.0 (2017-05-15)
2
6
  ## New features
3
7
  - Add `oneshot_notification_prefix` option
@@ -815,6 +815,8 @@ module Hako
815
815
  raise "Unable to find rollback target. #{task_definition.task_definition_arn} is INACTIVE?"
816
816
  end
817
817
 
818
+ MIN_ASG_INTERVAL = 1
819
+ MAX_ASG_INTERVAL = 120
818
820
  # @param [Aws::ECS::Types::TaskDefinition] task_definition
819
821
  # @return [Boolean] true if the capacity is reserved
820
822
  def on_no_tasks_started(task_definition)
@@ -823,8 +825,17 @@ module Hako
823
825
  end
824
826
 
825
827
  autoscaling = Aws::AutoScaling::Client.new
828
+ interval = MIN_ASG_INTERVAL
826
829
  loop do
827
- asg = autoscaling.describe_auto_scaling_groups(auto_scaling_group_names: [@autoscaling_group_for_oneshot]).auto_scaling_groups[0]
830
+ begin
831
+ asg = autoscaling.describe_auto_scaling_groups(auto_scaling_group_names: [@autoscaling_group_for_oneshot]).auto_scaling_groups[0]
832
+ rescue Aws::AutoScaling::Errors::Throttling => e
833
+ Hako.logger.error(e)
834
+ interval = [interval * 2, MAX_ASG_INTERVAL].min
835
+ Hako.logger.info("Retrying after #{interval} seconds...")
836
+ sleep interval
837
+ next
838
+ end
828
839
  unless asg
829
840
  raise Error.new("AutoScaling Group '#{@autoscaling_group_for_oneshot}' does not exist")
830
841
  end
@@ -835,11 +846,12 @@ module Hako
835
846
  return true
836
847
  end
837
848
 
849
+ interval = [interval / 2, MIN_ASG_INTERVAL].max
838
850
  # Check autoscaling group health
839
851
  current = asg.instances.count { |i| i.lifecycle_state == 'InService' }
840
852
  if asg.desired_capacity != current
841
- Hako.logger.debug("#{asg.auto_scaling_group_name} isn't in desired state. desired_capacity=#{asg.desired_capacity} in-service instances=#{current}")
842
- sleep 1
853
+ Hako.logger.debug("#{asg.auto_scaling_group_name} isn't in desired state. desired_capacity=#{asg.desired_capacity} in-service instances=#{current}. Retry after #{interval} seconds")
854
+ sleep interval
843
855
  next
844
856
  end
845
857
 
@@ -849,8 +861,8 @@ module Hako
849
861
  out_instances.delete(ci.ec2_instance_id)
850
862
  end
851
863
  unless out_instances.empty?
852
- Hako.logger.debug("There's instances that is running but not registered as container instances: #{out_instances}")
853
- sleep 1
864
+ Hako.logger.debug("There's instances that is running but not registered as container instances: #{out_instances}. Retry after #{interval} seconds")
865
+ sleep interval
854
866
  next
855
867
  end
856
868
 
@@ -858,6 +870,7 @@ module Hako
858
870
  desired = current + 1
859
871
  Hako.logger.info("Increment desired_capacity of #{asg.auto_scaling_group_name} from #{current} to #{desired}")
860
872
  autoscaling.set_desired_capacity(auto_scaling_group_name: asg.auto_scaling_group_name, desired_capacity: desired)
873
+ sleep interval
861
874
  end
862
875
  end
863
876
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hako
4
- VERSION = '1.3.0'
4
+ VERSION = '1.3.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hako
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kohei Suzuki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-15 00:00:00.000000000 Z
11
+ date: 2017-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk