prima-twig 0.58.3 → 0.58.500

Sign up to get free protection for your applications and to get access to all the features.
data/bin/twig-update-ami CHANGED
@@ -5,7 +5,7 @@ require_relative '../lib/prima_twig.rb'
5
5
  require_relative '../lib/prima_aws_client.rb'
6
6
  require 'launchy'
7
7
  require 'json'
8
- require 'aws-sdk'
8
+ require 'aws-sdk-s3'
9
9
 
10
10
  class TwigUpdateAmi
11
11
  include Command
@@ -29,8 +29,8 @@ class TwigUpdateAmi
29
29
  Dir.chdir 'ami'
30
30
  update_instance_name(ami_id, ami_name, ami_description, ami_template)
31
31
  output 'running packer update (this could take some time)'.light_green
32
- new_ami_id = update_packer(ami_template)
33
- # new_ami_id = 'ami-000e38f3a919824ae'
32
+ new_ami_id = update_packer(ami_template, env)
33
+ # new_ami_id = 'ami-026890988d91ee8c6'
34
34
  Dir.chdir '..'
35
35
  stop_if(new_ami_id.to_s.empty?, 'Failed to generate AMI!'.red)
36
36
  output "new ami id: #{new_ami_id}"
@@ -50,33 +50,33 @@ class TwigUpdateAmi
50
50
  if stack.include?('qa')
51
51
  output "skipping stack #{stack} because is a qa"
52
52
  next
53
- elsif stack.include?('batch')
54
- stack_parameters = update_stack_parameters(get_stack_parameters(stack),
55
- [
56
- { parameter_key: 'AMIID', parameter_value: new_ami_id }
57
- ]
58
- )
59
- update_stack(stack, get_stack_template(stack), stack_parameters)
60
- elsif stack.include?('fleet')
53
+ else
61
54
  stack_tags = tags_to_hashes(get_stack_tags(stack))
62
55
  stack_tags['TemplateVersion'] = stack_tags['TemplateVersion'].to_i + 1
63
56
 
64
- stack_parameters = update_stack_parameters(get_stack_parameters(stack),
65
- [
66
- { parameter_key: 'AMIID', parameter_value: new_ami_id },
67
- { parameter_key: 'DesiredCapacity', parameter_value: get_desired_capacity(stack).to_s },
68
- { parameter_key: 'TemplateVersion', parameter_value: stack_tags['TemplateVersion'].to_s }
69
- ]
70
- )
71
- update_stack(stack, get_stack_template(stack), stack_parameters, hashes_to_tags(stack_tags))
72
- else # autoscaling group normali come ania-tools
73
- stack_parameters = update_stack_parameters(get_stack_parameters(stack),
74
- [
75
- { parameter_key: 'AMIID', parameter_value: new_ami_id },
76
- { parameter_key: 'DesiredCapacity', parameter_value: get_desired_capacity(stack).to_s }
77
- ]
78
- )
79
- update_stack(stack, get_stack_template(stack), stack_parameters)
57
+ if stack.include?('batch')
58
+ stack_parameters = update_stack_parameters(get_stack_parameters(stack),
59
+ [
60
+ { parameter_key: 'AMIID', parameter_value: new_ami_id },
61
+ { parameter_key: 'TemplateVersion', parameter_value: stack_tags['TemplateVersion'].to_s }
62
+ ]
63
+ )
64
+ if stack.include?('offsite-backups')
65
+ stack_template = File.read("./cloudformation/stacks/batch/compute-environment-offsite-backups.yml")
66
+ else
67
+ stack_template = File.read("./cloudformation/stacks/batch/compute-environment.yml")
68
+ end
69
+ else
70
+ stack_parameters = update_stack_parameters(get_stack_parameters(stack),
71
+ [
72
+ { parameter_key: 'AMIID', parameter_value: new_ami_id },
73
+ { parameter_key: 'DesiredCapacity', parameter_value: get_desired_capacity(stack).to_s },
74
+ { parameter_key: 'TemplateVersion', parameter_value: stack_tags['TemplateVersion'].to_s }
75
+ ]
76
+ )
77
+ stack_template = File.read("./cloudformation/stacks/asg/#{stack.to_s.split("/")[1]}.yml")
78
+ end
79
+ update_stack(stack, stack_template, stack_parameters, hashes_to_tags(stack_tags))
80
80
  end
81
81
  end
82
82
 
@@ -149,8 +149,8 @@ class TwigUpdateAmi
149
149
  end
150
150
  end
151
151
 
152
- def update_packer(json_filename)
153
- execute_command "packer build -var datadog_apikey=`biscuit get -f ../configs/secrets/common.yml common_production_apikey_datadog` -var github_token=`biscuit get -f ../configs/secrets/common.yml common_private_repo_github_token` -var drone_key=\"`biscuit get -f ../configs/secrets/common.yml drone_license_key`\" -machine-readable ./#{json_filename} | tee build.log"
152
+ def update_packer(json_filename, env)
153
+ execute_command "AWS_MAX_ATTEMPTS=90 AWS_POLL_DELAY_SECONDS=60 packer build -var datadog_apikey=`biscuit get -f ../configs/secrets/common.yml common_production_apikey_datadog` -var github_token=`biscuit get -f ../configs/secrets/common.yml common_private_repo_github_token` -var drone_key=\"`biscuit get -f ../configs/secrets/common.yml drone_license_key`\" -var env=#{env} -machine-readable ./#{json_filename} | tee build.log"
154
154
  `grep 'artifact,0,id' build.log | cut -d, -f6 | cut -d: -f2`.sub(/\n/, '')
155
155
  end
156
156
 
@@ -1,4 +1,11 @@
1
- require 'aws-sdk'
1
+ require 'aws-sdk-autoscaling'
2
+ require 'aws-sdk-batch'
3
+ require 'aws-sdk-cloudformation'
4
+ require 'aws-sdk-cloudfront'
5
+ require 'aws-sdk-ec2'
6
+ require 'aws-sdk-ecs'
7
+ require 'aws-sdk-elasticloadbalancingv2'
8
+ require 'aws-sdk-s3'
2
9
  require 'colorize'
3
10
  #
4
11
  module PrimaAwsClient
@@ -330,6 +337,24 @@ module PrimaAwsClient
330
337
  output "#{s3_bucket}/#{destination_path} uploadato con successo!\n".green
331
338
  end
332
339
 
340
+ def wait_for_artifact(bucket, path)
341
+ ready = false
342
+ sleep_seconds = 13
343
+ sleep 10
344
+ output "Attendo che lo sia pronto l'artefatto #{path}...\n".yellow
345
+ while !ready
346
+ ready = true if artifact_exists?(bucket, path)
347
+ seconds_elapsed = 0
348
+ loop do
349
+ break if seconds_elapsed >= sleep_seconds
350
+ print '.'.yellow; STDOUT.flush
351
+ sleep 1
352
+ seconds_elapsed += 1
353
+ end
354
+ end
355
+ output "\nArtefatto #{path} creato!\n".green
356
+ end
357
+
333
358
  def list_import_stacks(export_name)
334
359
  stacks = []
335
360
  next_token = ''
data/lib/prima_twig.rb CHANGED
@@ -4,7 +4,7 @@ require 'octokit'
4
4
  require 'yaml'
5
5
  require 'rugged'
6
6
  require 'highline/import'
7
- require 'aws-sdk'
7
+ require 'aws-sdk-core'
8
8
  require 'rubyflare'
9
9
 
10
10
  class Prima
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.58.3
4
+ version: 0.58.500
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Giachino
@@ -14,10 +14,122 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-12-24 00:00:00.000000000 Z
17
+ date: 2020-04-08 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
- name: aws-sdk
20
+ name: aws-sdk-autoscaling
21
+ requirement: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1'
26
+ type: :runtime
27
+ prerelease: false
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1'
33
+ - !ruby/object:Gem::Dependency
34
+ name: aws-sdk-batch
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: aws-sdk-cloudformation
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1'
61
+ - !ruby/object:Gem::Dependency
62
+ name: aws-sdk-cloudfront
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1'
75
+ - !ruby/object:Gem::Dependency
76
+ name: aws-sdk-ec2
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1'
89
+ - !ruby/object:Gem::Dependency
90
+ name: aws-sdk-ecs
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1'
103
+ - !ruby/object:Gem::Dependency
104
+ name: aws-sdk-elasticloadbalancingv2
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1'
117
+ - !ruby/object:Gem::Dependency
118
+ name: aws-sdk-s3
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1'
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1'
131
+ - !ruby/object:Gem::Dependency
132
+ name: aws-sdk-core
21
133
  requirement: !ruby/object:Gem::Requirement
22
134
  requirements:
23
135
  - - "~>"
@@ -173,6 +285,7 @@ dependencies:
173
285
  description: Our tools to manage git and github
174
286
  email: matteo.giachino@prima.it
175
287
  executables:
288
+ - twig-build
176
289
  - twig-circle
177
290
  - twig-deploy
178
291
  - twig-feature
@@ -184,6 +297,7 @@ executables:
184
297
  extensions: []
185
298
  extra_rdoc_files: []
186
299
  files:
300
+ - bin/twig-build
187
301
  - bin/twig-circle
188
302
  - bin/twig-deploy
189
303
  - bin/twig-feature
@@ -214,7 +328,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
328
  - !ruby/object:Gem::Version
215
329
  version: '0'
216
330
  requirements: []
217
- rubygems_version: 3.0.3
331
+ rubygems_version: 3.0.1
218
332
  signing_key:
219
333
  specification_version: 4
220
334
  summary: The Prima twig toolbelt