prima-twig 0.57.0 → 0.57.80

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/twig-feature +26 -271
  3. data/lib/prima_aws_client.rb +93 -0
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 263cb3add15f62f517e594cd0319db08a667ada510f43d586e18bc68cc221709
4
- data.tar.gz: 22659c79c2ae2a16377e65043e182c48768b1445b4bd79c01273e60274991904
3
+ metadata.gz: 51903b41de0cd28b6e1b56faa840380a3373ca3103b58365136cf426350da89a
4
+ data.tar.gz: b0d891e37eab45b631c00047941c56814fe595edc023eb746c2ff2c02290ff22
5
5
  SHA512:
6
- metadata.gz: e8dd33e8a28dc23c7bee07318f30895c7c2c3dba67d1841791f66ee32a42095945abe871753d587b92731c169e259a60caec2bee7935219ca775efd695b28d69
7
- data.tar.gz: 10c2eaf08194ea86fb6cc836cd9127772955b944d27f2af4647fc597cf61aa94aa41d07dcb8e329a2af2db1c5d5f4da5ee5d14c8ea5c603d212de977173f44f8
6
+ metadata.gz: 54a09eec6cb7a1bf6a70c9060223cb79959862b034425182faf38c7fbb57b85817e46a8db89a5edcf698702ebffd8fe7777123a56fa60b2cd6970d735306dafe
7
+ data.tar.gz: 0d8006713738879a987506f5e8d8c075970d77f252fbe684769d5222113d44395cdcae26da2f38adeaf01740f1a6fbce6f78d26b91f323495cdb64fc1992dff0
@@ -22,12 +22,7 @@ class Release
22
22
  exec "twig feature #{ARGV.join ' '}"
23
23
  end
24
24
  end
25
- @cf = Aws::CloudFormation::Client.new
26
- @alb = Aws::ElasticLoadBalancingV2::Client.new
27
- @ec2 = Aws::EC2::Client.new
28
- @ecs = Aws::ECS::Client.new
29
25
  @batch = Aws::Batch::Client.new
30
- @asg = Aws::AutoScaling::Client.new
31
26
  @s3 = Aws::S3::Client.new
32
27
  @s3_bucket = 'prima-artifacts'
33
28
  @artifact_path = '/tmp/prima-artifact.zip'
@@ -79,8 +74,6 @@ class Release
79
74
  qainit_deploy_update!
80
75
  elsif 'read' == args[1]
81
76
  qainit_read_config! args[2]
82
- elsif 'minimal' == args[1]
83
- qainit_minimal_deploy! args[2]
84
77
  else
85
78
  if args[1]
86
79
  select_branches(args[1..-1])
@@ -105,8 +98,6 @@ class Release
105
98
  deploy_update!
106
99
  elsif 'lock' == args[1]
107
100
  deploy_lock!
108
- elsif 'minimal' == args[1]
109
- qainit_drone_minimal_deploy!
110
101
  else
111
102
  if args[1]
112
103
  select_branches(args[1])
@@ -499,35 +490,6 @@ class Release
499
490
  git checkout master`
500
491
  end
501
492
 
502
- def qainit_minimal_deploy!(project)
503
- abort('L\'unico progetto permesso è prima') unless ['prima'].include? project
504
- project_definition = choose_branch_to_deploy(project)
505
-
506
- `git checkout master && git pull && git remote prune origin`
507
-
508
- default_name = project_definition[:name]
509
- output "Inserisci la feature a cui si riferisce il QA: [#{default_name}]".cyan
510
- feature_number = String(STDIN.gets.chomp)
511
- feature_number = default_name if feature_number.empty?
512
-
513
- if `git branch -l | grep #{feature_number}`.size > 0
514
- `git checkout #{feature_number} && git pull`
515
- else
516
- `git checkout -b #{feature_number}`
517
- end
518
-
519
- # così recupero le informazioni sul branch, poi vado a scrivere il file branch_names con una sola riga
520
- branch = {'project' => { 'name' => project_definition[:name], 'revision' => project_definition[:revision], 'default_branch' => project_definition[:default_branch]}}
521
-
522
- File.open('branch_names', 'w') { |file| file.write(JSON.generate(branch)) }
523
-
524
- `git add projects && \
525
- git add branch_names && \
526
- git commit -m 'minimal_#{feature_number}' && \
527
- git push --set-upstream origin #{feature_number} && \
528
- git checkout master`
529
- end
530
-
531
493
  def qainit_deploy_update!
532
494
  `git checkout master && git pull`
533
495
  # cancelliamo tutti i branch che non sono più sul repo remoto
@@ -566,11 +528,7 @@ class Release
566
528
 
567
529
  File.open('branch_names', 'w') { |file| file.write(JSON.generate(@projects)) }
568
530
 
569
- if `git log -1` =~ /minimal_/
570
- `git commit -am 'minimal_update'`
571
- else
572
- `git commit -am 'update'`
573
- end
531
+ `git commit -am 'update'`
574
532
  `git push && git checkout master`
575
533
  end
576
534
 
@@ -678,9 +636,6 @@ class Release
678
636
  when 'shutdown'
679
637
  output 'Shutting down'.green
680
638
  qainit_drone_shutdown!
681
- when 'minimal'
682
- output 'Starting minimal deploy'.green
683
- qainit_drone_minimal_deploy!
684
639
  else
685
640
  output 'Starting standard deploy'.green
686
641
  deploy_feature!
@@ -692,7 +647,6 @@ class Release
692
647
  `mkdir -p cloudformation/stacks/task cloudformation/stacks/route53 cloudformation/stacks/asg cloudformation/stacks/elb`
693
648
  @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/task/db.yml', response_target: 'cloudformation/stacks/task/db.yml'})
694
649
  @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/route53/qa.yml', response_target: 'cloudformation/stacks/route53/qa.yml'})
695
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/route53/minimal_qa.yml', response_target: 'cloudformation/stacks/route53/minimal_qa.yml'})
696
650
  @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/asg/ecs-asg-allinone.yml', response_target: 'cloudformation/stacks/asg/ecs-asg-allinone.yml'})
697
651
  @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/ecs-cluster.yml', response_target: 'cloudformation/stacks/ecs-cluster.yml'})
698
652
  @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/elb/alb-public-qa.yml', response_target: 'cloudformation/stacks/elb/alb-public-qa.yml'})
@@ -707,173 +661,6 @@ class Release
707
661
  end
708
662
  end
709
663
 
710
- def qainit_drone_minimal_deploy!
711
- # tenere solo il project da deployare (l'unico project è prima)
712
- @ami_id = get_ami_id("ecs-fleet-allinone-staging")
713
- project = ''
714
- @projects.each_key do |project_key|
715
- if @projects[project_key]['revision']
716
- project = project_key
717
- git_checkout_version(project_key, @projects[project_key]['revision'])
718
- end
719
- end
720
- deploy_id = get_deploy_id
721
-
722
- @git_branch = ENV['DRONE_BRANCH']
723
- @dns_record_identifier = deploy_id
724
- hostname_pattern_priority = hostname_pattern_priority()
725
- tags = [
726
- {
727
- key: "qainit",
728
- value: @git_branch
729
- },
730
- {
731
- key: project,
732
- value: @projects[project]['name']
733
- },
734
- {
735
- key: "hostname_pattern_priority",
736
- value: hostname_pattern_priority
737
- }
738
- ]
739
-
740
- cluster_stack_name = "ecs-cluster-qa-#{deploy_id}"
741
-
742
- if stack_exists?(cluster_stack_name)
743
- tags = get_stack_tags(cluster_stack_name)
744
- hostname_pattern_priority = tags.detect do |tag|
745
- tag.key == 'hostname_pattern_priority'
746
- end.value
747
- end
748
-
749
- stack_name_alb = @base_stack_name_alb + deploy_id[0..5]
750
- stack_name_alb_ws = @base_stack_name_alb_ws + deploy_id[0..5]
751
-
752
- create_cluster_stack(cluster_stack_name, tags) unless stack_exists?(cluster_stack_name)
753
- wait_for_stack_ready(cluster_stack_name) unless stack_ready?(cluster_stack_name)
754
-
755
- create_alb_stack(stack_name_alb, "http", deploy_id, 'qa-minimal') unless stack_exists?(stack_name_alb)
756
- create_alb_stack(stack_name_alb_ws, "websocket", deploy_id, 'qa-minimal') unless stack_exists?(stack_name_alb_ws)
757
-
758
- resp = @cf.describe_stack_resource({stack_name: cluster_stack_name, logical_resource_id: 'ECSCluster'})
759
- @ecs_cluster_name = resp.stack_resource_detail.physical_resource_id
760
-
761
- asg_stack_name = "ecs-asg-allinone-qa-#{deploy_id}"
762
- create_asg_stack(asg_stack_name, tags) unless stack_exists?(asg_stack_name)
763
-
764
- deploy_id = get_deploy_id
765
- create_pyxis_artifact(@projects["pyxis-npm"]['revision'], deploy_id)
766
- create_prima_artifact(@projects["prima"]['revision'], @projects["prima"]['name'], deploy_id, true) unless artifact_exists?('prima-artifacts-encrypted', "prima/#{@projects["prima"]['revision']}.tar.gz")
767
-
768
- wait_for_stack_ready(stack_name_alb) unless stack_ready?(stack_name_alb)
769
- wait_for_stack_ready(stack_name_alb_ws) unless stack_ready?(stack_name_alb_ws)
770
-
771
- stack_name_route53 = "ecs-route53-qa-#{deploy_id}"
772
- stack_body = IO.read('cloudformation/stacks/route53/minimal_qa.yml')
773
- parameters = [
774
- {
775
- parameter_key: "DnsRecordIdentifier",
776
- parameter_value: @dns_record_identifier
777
- },
778
- {
779
- parameter_key: "PrimaElbHostname",
780
- parameter_value: get_alb_host(stack_name_alb)
781
- },
782
- {
783
- parameter_key: 'CrashElbHostname',
784
- parameter_value: get_alb_host(stack_name_alb_ws)
785
- }
786
- ]
787
-
788
- create_stack(stack_name_route53, stack_body, parameters, tags, @cf_role) unless stack_exists?(stack_name_route53)
789
- wait_for_stack_ready(stack_name_route53) unless stack_ready?(stack_name_route53)
790
-
791
- stack_name_web = "ecs-task-web-qa-#{deploy_id}"
792
- git_checkout_version('prima', @projects["prima"]['revision'])
793
- stack_body = IO.read('projects/prima/app/cloudformation/tasks/web.yml')
794
- parameters = [
795
- {
796
- parameter_key: "Environment",
797
- parameter_value: "qa-minimal"
798
- },
799
- {
800
- parameter_key: "ReleaseVersion",
801
- parameter_value: "#{@projects["prima"]['revision']}"
802
- },
803
- {
804
- parameter_key: "TaskDesiredCount",
805
- parameter_value: "1"
806
- },
807
- {
808
- parameter_key: "ECSClusterName",
809
- parameter_value: @ecs_cluster_name
810
- },
811
- {
812
- parameter_key: "ALBShortName",
813
- parameter_value: "web-qa-#{deploy_id}"[0..27]
814
- },
815
- {
816
- parameter_key: "WebQaBaseHostname",
817
- parameter_value: "#{@dns_record_identifier}.qa.colaster.com"
818
- },
819
- {
820
- parameter_key: "HostnamePattern",
821
- parameter_value: "ww*-#{@dns_record_identifier}.qa.colaster.com"
822
- },
823
- {
824
- parameter_key: "HostnamePatternPriority",
825
- parameter_value: hostname_pattern_priority
826
- },
827
- {
828
- parameter_key: "HostnamePatternAggregatorPriority",
829
- parameter_value: (hostname_pattern_priority.to_i + 1).to_s
830
- },
831
- {
832
- parameter_key: "EnvHash",
833
- parameter_value: deploy_id
834
- },
835
- {
836
- parameter_key: "AssangeHostname",
837
- parameter_value: "assange-#{@dns_record_identifier}.qa.colaster.com"
838
- },
839
- {
840
- parameter_key: "BackofficeHostname",
841
- parameter_value: "backoffice-#{@dns_record_identifier}.qa.colaster.com"
842
- },
843
- {
844
- parameter_key: "WebHostname",
845
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
846
- },
847
- {
848
- parameter_key: "FePrimaDomain",
849
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
850
- },
851
- {
852
- parameter_key: "HostnamePattern",
853
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
854
- }
855
- ]
856
- if stack_exists?(stack_name_web)
857
- cur_version = get_currently_deployed_version(stack_name_web)
858
- update_stack(stack_name_web, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["prima"]['revision'])
859
- else
860
- create_stack(stack_name_web, stack_body, parameters, tags, @cf_role)
861
- end
862
- wait_for_stack_ready(stack_name_web) unless stack_ready?(stack_name_web)
863
- update_service_defaults(stack_name_web)
864
- prima_hostname = get_route53_hostname(stack_name_web)
865
-
866
- projects_text = "
867
- > Prima url: https://#{prima_hostname}
868
- > SSH connection: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no githubUsername@#{ec2_ip_address(asg_stack_name)}\n"
869
-
870
- output projects_text.cyan
871
- output "Deploy effettuato, everything is awesome!\n".green
872
- if @qainit
873
- qainit_write_output(projects_text, 'Indirizzi scritti su ')
874
- end
875
- end
876
-
877
664
  def deploy_feature!
878
665
  `git pull && git submodule init && git submodule update`
879
666
  @ami_id = get_ami_id("ecs-fleet-allinone-staging")
@@ -926,7 +713,7 @@ class Release
926
713
  create_alb_stack(stack_name_alb, "http", deploy_id) unless stack_exists?(stack_name_alb)
927
714
  create_alb_stack(stack_name_alb_ws, "websocket", deploy_id) unless stack_exists?(stack_name_alb_ws)
928
715
 
929
- resp = @cf.describe_stack_resource({stack_name: cluster_stack_name, logical_resource_id: 'ECSCluster'})
716
+ resp = describe_stack_resource(cluster_stack_name, 'ECSCluster')
930
717
  @ecs_cluster_name = resp.stack_resource_detail.physical_resource_id
931
718
 
932
719
  asg_stack_name = "ecs-asg-allinone-qa-#{deploy_id}"
@@ -2037,16 +1824,10 @@ class Release
2037
1824
  end
2038
1825
 
2039
1826
  def ec2_ip_address(asg_stack_name)
2040
- resp = @cf.describe_stack_resource({
2041
- stack_name: asg_stack_name,
2042
- logical_resource_id: 'ECSAutoScalingGroup'
2043
- })
2044
- resp = @asg.describe_auto_scaling_groups({
2045
- auto_scaling_group_names: [resp.stack_resource_detail.physical_resource_id],
2046
- max_records: 1
2047
- })
1827
+ resp = describe_stack_resource(asg_stack_name, 'ECSAutoScalingGroup')
1828
+ resp = describe_auto_scaling_groups([resp.stack_resource_detail.physical_resource_id], 1)
2048
1829
  instance_id = resp.auto_scaling_groups[0].instances[0].instance_id
2049
- resp = @ec2.describe_instances({instance_ids: [instance_id]})
1830
+ resp = describe_instances([instance_id])
2050
1831
  resp.reservations[0].instances[0].private_ip_address
2051
1832
  end
2052
1833
 
@@ -2091,13 +1872,8 @@ class Release
2091
1872
  when stack_name.include?('hutch')
2092
1873
  logical_resource_id = 'EcsApplicationLoadBalancerPublic'
2093
1874
  end
2094
- resp = @cf.describe_stack_resource({
2095
- stack_name: stack_name,
2096
- logical_resource_id: logical_resource_id
2097
- })
2098
- resp = @alb.describe_load_balancers({
2099
- load_balancer_arns: [resp.stack_resource_detail.physical_resource_id]
2100
- })
1875
+ resp = describe_stack_resource(stack_name, logical_resource_id)
1876
+ resp = describe_load_balancers([resp.stack_resource_detail.physical_resource_id])
2101
1877
  resp.load_balancers[0].dns_name
2102
1878
  end
2103
1879
 
@@ -2146,18 +1922,8 @@ class Release
2146
1922
  else
2147
1923
  raise "Service name non gestito per lo stack #{stack_name}"
2148
1924
  end
2149
- resp = @cf.describe_stack_resource(
2150
- stack_name: stack_name,
2151
- logical_resource_id: logical_resource_id
2152
- )
2153
- @ecs.update_service(
2154
- cluster: @ecs_cluster_name,
2155
- service: resp.stack_resource_detail.physical_resource_id,
2156
- deployment_configuration: {
2157
- minimum_healthy_percent: 0,
2158
- maximum_percent: 100
2159
- }
2160
- )
1925
+ resp = describe_stack_resource(stack_name, logical_resource_id)
1926
+ update_ecs_service(@ecs_cluster_name, resp.stack_resource_detail.physical_resource_id, {minimum_healthy_percent: 0, maximum_percent: 100})
2161
1927
  end
2162
1928
 
2163
1929
  def create_activia_artifact(revision)
@@ -2531,7 +2297,7 @@ class Release
2531
2297
  Dir.chdir '../../'
2532
2298
  end
2533
2299
 
2534
- def create_prima_artifact(revision, branch_name, deploy_id, minimal = false)
2300
+ def create_prima_artifact(revision, branch_name, deploy_id)
2535
2301
  output "Preparo l'artifact prima .zip\n".yellow
2536
2302
 
2537
2303
  git_checkout_version('prima', revision)
@@ -2892,24 +2658,20 @@ class Release
2892
2658
  end
2893
2659
 
2894
2660
  def import_dbs(ip_address)
2895
- resp = @ecs.run_task({
2896
- cluster: @ecs_cluster_name,
2897
- task_definition: @import_db_task,
2898
- overrides: {
2899
- container_overrides: [
2900
- {
2901
- name: 'dbrestore',
2902
- environment: [
2903
- {
2904
- name: 'EC2_IP_ADDRESS',
2905
- value: ip_address
2906
- }
2907
- ]
2908
- }
2909
- ]
2910
- },
2911
- count: 1
2912
- })
2661
+ overrides = {
2662
+ container_overrides: [
2663
+ {
2664
+ name: 'dbrestore',
2665
+ environment: [
2666
+ {
2667
+ name: 'EC2_IP_ADDRESS',
2668
+ value: ip_address
2669
+ }
2670
+ ]
2671
+ }
2672
+ ]
2673
+ }
2674
+ resp = run_ecs_task(@ecs_cluster_name, @import_db_task, overrides, 1)
2913
2675
  return resp
2914
2676
  end
2915
2677
 
@@ -2923,10 +2685,7 @@ class Release
2923
2685
  pp task
2924
2686
  stop_if true, "Task di import DB lanciato, ma risposta vuota!".red
2925
2687
  end
2926
- task = @ecs.describe_tasks({
2927
- cluster: task.tasks[0].cluster_arn,
2928
- tasks: [task.tasks[0].task_arn]
2929
- })
2688
+ task = describe_ecs_tasks(task.tasks[0].cluster_arn, [task.tasks[0].task_arn])
2930
2689
  stopped_at = task.tasks[0].stopped_at unless task.tasks[0].nil?
2931
2690
  sleep_seconds = 10
2932
2691
  seconds_elapsed = 0
@@ -3030,10 +2789,7 @@ class Release
3030
2789
  end
3031
2790
 
3032
2791
  def launch_marley(ip_address, prima_hostname, borat_hostname)
3033
- resp = @cf.describe_stack_resource({
3034
- stack_name: 'batch-job-marley',
3035
- logical_resource_id: 'JobDefinition'
3036
- })
2792
+ resp = describe_stack_resource('batch-job-marley', 'JobDefinition')
3037
2793
 
3038
2794
  @batch.submit_job({
3039
2795
  job_name: "marley-#{@dns_record_identifier}", # required
@@ -3142,7 +2898,6 @@ Description
3142
2898
  finish finishes the feature by merging to dev and master
3143
2899
  qainit deploys a new environment with selected branches from every project
3144
2900
  qainit $PROJECT_NAME deploys a new environment allowing to selected a branch from the input project (everything else is master)
3145
- qainit minimal prima deploys a new copy of prima project, using staging microservices and database
3146
2901
  qainit shutdown deletes a specific qa environment
3147
2902
 
3148
2903
  Available only to devops (from artemide)
@@ -18,6 +18,14 @@ module PrimaAwsClient
18
18
  @ec2 ||= Aws::EC2::Client.new
19
19
  end
20
20
 
21
+ def alb_client
22
+ @alb ||= Aws::ElasticLoadBalancingV2::Client.new
23
+ end
24
+
25
+ def ecs_client
26
+ @ecs ||= Aws::ECS::Client.new
27
+ end
28
+
21
29
  def stack_list
22
30
  stacks = []
23
31
  next_token = ''
@@ -307,6 +315,91 @@ module PrimaAwsClient
307
315
  stacks
308
316
  end
309
317
 
318
+ def describe_stack_resource(cluster_stack_name, logical_resource_id)
319
+ begin
320
+ resp = cf_client.describe_stack_resource({stack_name: cluster_stack_name, logical_resource_id: logical_resource_id})
321
+ rescue Aws::CloudFormation::Errors::Throttling => e
322
+ output 'Throttling, retrying in 15 seconds'.red
323
+ sleep 15
324
+ resp = describe_stack_resource(cluster_stack_name, logical_resource_id)
325
+ end
326
+ end
327
+
328
+ def describe_instances(instance_ids)
329
+ begin
330
+ resp = ec2_client.describe_instances({instance_ids: instance_ids})
331
+ rescue Aws::CloudFormation::Errors::Throttling => e
332
+ output 'Throttling, retrying in 15 seconds'.red
333
+ sleep 15
334
+ resp = describe_instances(instance_ids)
335
+ end
336
+ end
337
+
338
+ def describe_auto_scaling_groups(auto_scaling_group_names, max_records)
339
+ begin
340
+ resp = asg_client.describe_auto_scaling_groups({
341
+ auto_scaling_group_names: auto_scaling_group_names,
342
+ max_records: max_records
343
+ })
344
+ rescue Aws::CloudFormation::Errors::Throttling => e
345
+ output 'Throttling, retrying in 15 seconds'.red
346
+ sleep 15
347
+ resp = describe_auto_scaling_groups(auto_scaling_group_names, max_records)
348
+ end
349
+ end
350
+
351
+ def describe_load_balancers(load_balancer_arns)
352
+ begin
353
+ resp = alb_client.describe_load_balancers({load_balancer_arns: load_balancer_arns})
354
+ rescue Aws::CloudFormation::Errors::Throttling => e
355
+ output 'Throttling, retrying in 15 seconds'.red
356
+ sleep 15
357
+ resp = describe_load_balancers(load_balancer_arns)
358
+ end
359
+ end
360
+
361
+ def update_ecs_service(cluster, service, deployment_configuration)
362
+ begin
363
+ resp = ecs_client.update_service(
364
+ cluster: cluster,
365
+ service: service,
366
+ deployment_configuration: deployment_configuration
367
+ )
368
+ rescue Aws::CloudFormation::Errors::Throttling => e
369
+ output 'Throttling, retrying in 15 seconds'.red
370
+ sleep 15
371
+ resp = update_ecs_service(cluster, service, deployment_configuration)
372
+ end
373
+ end
374
+
375
+ def describe_ecs_tasks(cluster, tasks)
376
+ begin
377
+ resp = ecs_client.describe_tasks({
378
+ cluster: cluster,
379
+ tasks: tasks
380
+ })
381
+ rescue Aws::CloudFormation::Errors::Throttling => e
382
+ output 'Throttling, retrying in 15 seconds'.red
383
+ sleep 15
384
+ resp = describe_ecs_tasks(cluster, tasks)
385
+ end
386
+ end
387
+
388
+ def run_ecs_task(cluster, task_definition, overrides, count)
389
+ begin
390
+ resp = ecs_client.run_task({
391
+ cluster: cluster,
392
+ task_definition: task_definition,
393
+ overrides: overrides,
394
+ count: count
395
+ })
396
+ rescue Aws::CloudFormation::Errors::Throttling => e
397
+ output 'Throttling, retrying in 15 seconds'.red
398
+ sleep 15
399
+ resp = run_ecs_task(cluster, task_definition, overrides, count)
400
+ end
401
+ end
402
+
310
403
  def get_autoscaling_capacity(asg_name)
311
404
  resp = asg_client.describe_auto_scaling_groups(auto_scaling_group_names: [asg_name])
312
405
  resp.auto_scaling_groups[0].desired_capacity
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prima-twig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.57.0
4
+ version: 0.57.80
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Giachino
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-11-22 00:00:00.000000000 Z
17
+ date: 2019-11-26 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: aws-sdk