prima-twig 1.2.0 → 1.2.6

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
  SHA256:
3
- metadata.gz: cac5201db54aab9c3ca72d6730d6d367bfff6fb49f8450b9a8b01556461d901e
4
- data.tar.gz: 85d5192cbeb4317411f6d15de30bd5849f4c076911252cb3212bbce0972e4080
3
+ metadata.gz: 665845adb115e9091a4d63673e3386d7b50e2043350ee342daee36122a6807f1
4
+ data.tar.gz: d92dc143955f44ae455eb20bead9668737183bfab7fa7f62c9b116e279c9538e
5
5
  SHA512:
6
- metadata.gz: aa3aa668188a7d6fe4c47308d373eea8b70912909c3f48aae81d3f4b900c7c79845beb50c5a762fb399600bd389d16c7ede5d5fc301680e0c4ad3188ccbf305a
7
- data.tar.gz: 5ed3ffc9d7748ff2817a3894489539ad253954c49fcfd35d81771f2e0212661efab521a0febd42eee6aa7b19cd81109ffbd647bef77419fff50f6748d08e8caa
6
+ metadata.gz: 27bcc7a32bc312e359015843c05ad59872d54582ce342587894489407a6c48dbbce6997a7cbc5be2e7d246aead9dc0f235996658e450810e4409b829a670428a
7
+ data.tar.gz: 2474944753cd11b793107b6b8de274e7460ea2f54a2587ee43f3bef89ca2ef2278b40f861e5198a79c4fb8acce32a1e14c6bc684b479e0a5b188417b2c939462
@@ -79,7 +79,6 @@ class Release
79
79
  qainit_deploy!(true)
80
80
  end
81
81
  when 'deploy'
82
- abort('Non sei nella cartella di artemide') unless Dir.pwd.match 'artemide$'
83
82
  if 'lock' == args[1]
84
83
  deploy_lock!
85
84
  end
@@ -327,7 +326,7 @@ class Release
327
326
  tags.push tag_keep_data
328
327
  end
329
328
 
330
- update_cluster_stack(cluster_stack_name, tags)
329
+ update_cluster_stack(cluster_stack_name, tags, get_stack_parameters(cluster_stack_name))
331
330
 
332
331
  output "Finito!".green
333
332
  end
@@ -582,9 +581,9 @@ class Release
582
581
  resp.load_balancers[0].dns_name
583
582
  end
584
583
 
585
- def update_cluster_stack(stack_name, tags = [])
586
- stack_body = IO.read('cloudformation/stacks/ecs-cluster.yml')
587
- update_stack(stack_name, stack_body, [], tags)
584
+ def update_cluster_stack(stack_name, tags = [], parameters = [])
585
+ stack_body = get_stack_template(stack_name)
586
+ update_stack(stack_name, stack_body, parameters, tags)
588
587
  end
589
588
 
590
589
  def choose_branch_to_deploy(project_name, select_master = false)
@@ -29,14 +29,24 @@ 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, env)
33
- # new_ami_id = 'ami-026890988d91ee8c6'
32
+ ami_mappings = JSON.parse(@s3.get_object(bucket: @s3_bucket, key: "ami/ami-mappings.json")["body"].read())
33
+
34
+ ami_mapping = nil
35
+ ami_mappings.each do |item|
36
+ if item['ami_template'].eql?(ami_template) and item['env'].eql?(env)
37
+ ami_mapping = item
38
+ end
39
+ end
40
+
41
+ stop_if(ami_mapping == nil, "No AMI found with parameters #{ami_template} and #{env}")
42
+
43
+ new_ami_id = update_packer(ami_template, env, ami_mapping['teams_mapping'], ami_mapping['country'])
44
+ # new_ami_id = 'ami-0d8488b68731e8756'
34
45
  Dir.chdir '..'
35
46
  stop_if(new_ami_id.to_s.empty?, 'Failed to generate AMI!'.red)
36
47
  output "new ami id: #{new_ami_id}"
37
48
 
38
49
  output 'searching for ami to update...'
39
- ami_mappings = JSON.parse(@s3.get_object(bucket: @s3_bucket, key: "ami/ami-mappings.json")["body"].read())
40
50
  old_amis = update_ami_mappings(ami_mappings, ami_template, env, new_ami_id)
41
51
  stop_if(old_amis.empty?, "No ami to update! No #{ami_template} in env #{env}, exiting".yellow)
42
52
 
@@ -51,32 +61,19 @@ class TwigUpdateAmi
51
61
  output "skipping stack #{stack} because is a qa"
52
62
  next
53
63
  else
54
- stack_tags = tags_to_hashes(get_stack_tags(stack))
55
- stack_tags['TemplateVersion'] = stack_tags['TemplateVersion'].to_i + 1
56
-
64
+ stack_parameters = get_stack_parameters(stack)
65
+ stack_parameters = update_stack_parameters(stack_parameters, "AMIID", new_ami_id)
57
66
  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
67
  if stack.include?('offsite-backups')
65
68
  stack_template = File.read("./cloudformation/stacks/batch/compute-environment-offsite-backups.yml")
66
69
  else
67
70
  stack_template = File.read("./cloudformation/stacks/batch/compute-environment.yml")
68
71
  end
69
72
  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
- )
73
+ stack_parameters = update_stack_parameters(stack_parameters, "DesiredCapacity", get_desired_capacity(stack).to_s)
77
74
  stack_template = File.read("./cloudformation/stacks/asg/#{stack.to_s.split("/")[1]}.yml")
78
75
  end
79
- update_stack(stack, stack_template, stack_parameters, hashes_to_tags(stack_tags))
76
+ update_stack(stack, stack_template, stack_parameters)
80
77
  end
81
78
  end
82
79
 
@@ -120,10 +117,11 @@ class TwigUpdateAmi
120
117
  old_values.uniq
121
118
  end
122
119
 
123
- def update_stack_parameters(stack_parameters, new_parameters)
124
- new_parameters.each do |new_param|
125
- stack_parameters.reject{ |k| k["parameter_key"] == new_param["parameter_key"] }
126
- stack_parameters.push(new_param)
120
+ def update_stack_parameters(stack_parameters, key, value)
121
+ stack_parameters.each do |param|
122
+ if param.parameter_key == key
123
+ param.parameter_value = value
124
+ end
127
125
  end
128
126
  stack_parameters
129
127
  end
@@ -143,14 +141,14 @@ class TwigUpdateAmi
143
141
  def get_desired_capacity(stack_name)
144
142
  stack_outputs = get_stack_outputs(stack_name)
145
143
  stack_outputs.each do |out|
146
- if out.export_name.include?('EC2Fleet') or out.export_name.include?('AutoScalingGroup')
144
+ if out.export_name.include?('EC2Fleet') or out.export_name.include?('AutoScalingGroup') or out.export_name.include?('NodeGroup')
147
145
  return get_autoscaling_capacity(out.output_value)
148
146
  end
149
147
  end
150
148
  end
151
149
 
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"
150
+ def update_packer(json_filename, env, teams, country)
151
+ 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} -var teams_mapping=#{teams} -var country=#{country} -machine-readable ./#{json_filename} | tee build.log"
154
152
  `grep 'artifact,0,id' build.log | cut -d, -f6 | cut -d: -f2`.sub(/\n/, '')
155
153
  end
156
154
 
@@ -474,21 +474,4 @@ module PrimaAwsClient
474
474
  resp = ec2_client.describe_spot_fleet_requests(spot_fleet_request_ids: [fleet_arn])
475
475
  resp.spot_fleet_request_configs[0].spot_fleet_request_config.target_capacity
476
476
  end
477
-
478
- def hashes_to_tags(hashes)
479
- tags = []
480
- hkeys = hashes.keys
481
- hkeys.each do |hkey|
482
- tags.insert(0, { key: hkey, value: hashes[hkey].to_s })
483
- end
484
- tags
485
- end
486
-
487
- def tags_to_hashes(tags)
488
- hash = Hash.new
489
- tags.each do |tags_obj|
490
- hash[tags_obj.key] = tags_obj.value
491
- end
492
- hash
493
- end
494
477
  end
@@ -8,8 +8,8 @@ require 'aws-sdk-core'
8
8
  require 'rubyflare'
9
9
 
10
10
  class Prima
11
- CONFIG_KEYS=['github', 'cloudflare_email', 'cloudflare_apikey', 'aws_username', 'aws_password', 'prima_apikey']
12
- attr_reader :gh, :twig, :config, :rugged, :aws
11
+ CONFIG_KEYS=['github', 'cloudflare_email', 'cloudflare_apikey']
12
+ attr_reader :gh, :twig, :config, :rugged
13
13
 
14
14
  def initialize
15
15
  @twig = Twig.new(:read_options => true, :max_days_old => 30)
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: 1.2.0
4
+ version: 1.2.6
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-07-21 00:00:00.000000000 Z
17
+ date: 2020-10-21 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: aws-sdk-autoscaling