prima-twig 0.62.14 → 0.62.101

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,11 +29,12 @@ 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}"
37
+ stop_if(true, "skipping stacks update")
37
38
 
38
39
  output 'searching for ami to update...'
39
40
  ami_mappings = JSON.parse(@s3.get_object(bucket: @s3_bucket, key: "ami/ami-mappings.json")["body"].read())
@@ -50,33 +51,33 @@ class TwigUpdateAmi
50
51
  if stack.include?('qa')
51
52
  output "skipping stack #{stack} because is a qa"
52
53
  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')
54
+ else
61
55
  stack_tags = tags_to_hashes(get_stack_tags(stack))
62
56
  stack_tags['TemplateVersion'] = stack_tags['TemplateVersion'].to_i + 1
63
57
 
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)
58
+ if stack.include?('batch')
59
+ stack_parameters = update_stack_parameters(get_stack_parameters(stack),
60
+ [
61
+ { parameter_key: 'AMIID', parameter_value: new_ami_id },
62
+ { parameter_key: 'TemplateVersion', parameter_value: stack_tags['TemplateVersion'].to_s }
63
+ ]
64
+ )
65
+ if stack.include?('offsite-backups')
66
+ stack_template = File.read("./cloudformation/stacks/batch/compute-environment-offsite-backups.yml")
67
+ else
68
+ stack_template = File.read("./cloudformation/stacks/batch/compute-environment.yml")
69
+ end
70
+ else
71
+ stack_parameters = update_stack_parameters(get_stack_parameters(stack),
72
+ [
73
+ { parameter_key: 'AMIID', parameter_value: new_ami_id },
74
+ { parameter_key: 'DesiredCapacity', parameter_value: get_desired_capacity(stack).to_s },
75
+ { parameter_key: 'TemplateVersion', parameter_value: stack_tags['TemplateVersion'].to_s }
76
+ ]
77
+ )
78
+ stack_template = File.read("./cloudformation/stacks/asg/#{stack.to_s.split("/")[1]}.yml")
79
+ end
80
+ update_stack(stack, stack_template, stack_parameters, hashes_to_tags(stack_tags))
80
81
  end
81
82
  end
82
83
 
@@ -149,8 +150,8 @@ class TwigUpdateAmi
149
150
  end
150
151
  end
151
152
 
152
- def update_packer(json_filename)
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`\" -machine-readable ./#{json_filename} | tee build.log"
153
+ def update_packer(json_filename, env)
154
+ 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
155
  `grep 'artifact,0,id' build.log | cut -d, -f6 | cut -d: -f2`.sub(/\n/, '')
155
156
  end
156
157
 
@@ -337,6 +337,29 @@ module PrimaAwsClient
337
337
  output "#{s3_bucket}/#{destination_path} uploadato con successo!\n".green
338
338
  end
339
339
 
340
+ def wait_for_artifact(bucket, path)
341
+ ready = artifact_exists?(bucket, path)
342
+ sleep_seconds = 13
343
+ output "Attendo che lo sia pronto l'artefatto #{path}...\n".yellow
344
+ retries = 0
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
+ retries += 1
355
+ if retries > 150
356
+ output "\n Timeout raggiunto aspettando #{path}\n".red
357
+ exit
358
+ end
359
+ end
360
+ output "\nArtefatto #{path} creato!\n".green
361
+ end
362
+
340
363
  def list_import_stacks(export_name)
341
364
  stacks = []
342
365
  next_token = ''
@@ -20,7 +20,9 @@ class Prima
20
20
  @twig = Twig.new(:read_options => true, :max_days_old => 30)
21
21
  unless has_config?
22
22
  if File.exist?('../prima/twig.yml')
23
- `cp ../prima/twig.yml .`
23
+ `cp ../prima/twig.yml .`
24
+ elsif File.exist?('/tmp/twig.yml')
25
+ `cp /tmp/twig.yml .`
24
26
  else
25
27
  generate_config
26
28
  end
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.62.14
4
+ version: 0.62.101
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: 2020-03-04 00:00:00.000000000 Z
17
+ date: 2020-05-25 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: aws-sdk-autoscaling
@@ -285,6 +285,7 @@ dependencies:
285
285
  description: Our tools to manage git and github
286
286
  email: matteo.giachino@prima.it
287
287
  executables:
288
+ - twig-build
288
289
  - twig-circle
289
290
  - twig-deploy
290
291
  - twig-feature
@@ -296,6 +297,7 @@ executables:
296
297
  extensions: []
297
298
  extra_rdoc_files: []
298
299
  files:
300
+ - bin/twig-build
299
301
  - bin/twig-circle
300
302
  - bin/twig-deploy
301
303
  - bin/twig-feature
@@ -326,7 +328,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
326
328
  - !ruby/object:Gem::Version
327
329
  version: '0'
328
330
  requirements: []
329
- rubygems_version: 3.0.1
331
+ rubyforge_project:
332
+ rubygems_version: 2.7.8
330
333
  signing_key:
331
334
  specification_version: 4
332
335
  summary: The Prima twig toolbelt