prima-twig 1.2.0 → 1.2.6

Sign up to get free protection for your applications and to get access to all the features.
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