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 +4 -4
- data/bin/twig-feature +4 -5
- data/bin/twig-update-ami +25 -27
- data/lib/prima_aws_client.rb +0 -17
- data/lib/prima_twig.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 665845adb115e9091a4d63673e3386d7b50e2043350ee342daee36122a6807f1
|
4
|
+
data.tar.gz: d92dc143955f44ae455eb20bead9668737183bfab7fa7f62c9b116e279c9538e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27bcc7a32bc312e359015843c05ad59872d54582ce342587894489407a6c48dbbce6997a7cbc5be2e7d246aead9dc0f235996658e450810e4409b829a670428a
|
7
|
+
data.tar.gz: 2474944753cd11b793107b6b8de274e7460ea2f54a2587ee43f3bef89ca2ef2278b40f861e5198a79c4fb8acce32a1e14c6bc684b479e0a5b188417b2c939462
|
data/bin/twig-feature
CHANGED
@@ -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 =
|
587
|
-
update_stack(stack_name, stack_body,
|
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)
|
data/bin/twig-update-ami
CHANGED
@@ -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
|
-
|
33
|
-
|
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
|
-
|
55
|
-
|
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(
|
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
|
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,
|
124
|
-
|
125
|
-
|
126
|
-
|
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
|
|
data/lib/prima_aws_client.rb
CHANGED
@@ -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
|
data/lib/prima_twig.rb
CHANGED
@@ -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'
|
12
|
-
attr_reader :gh, :twig, :config, :rugged
|
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.
|
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-
|
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
|