prima-twig 0.56.82 → 0.57.0
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 +61 -25
- data/lib/prima_aws_client.rb +0 -93
- 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: 263cb3add15f62f517e594cd0319db08a667ada510f43d586e18bc68cc221709
|
4
|
+
data.tar.gz: 22659c79c2ae2a16377e65043e182c48768b1445b4bd79c01273e60274991904
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8dd33e8a28dc23c7bee07318f30895c7c2c3dba67d1841791f66ee32a42095945abe871753d587b92731c169e259a60caec2bee7935219ca775efd695b28d69
|
7
|
+
data.tar.gz: 10c2eaf08194ea86fb6cc836cd9127772955b944d27f2af4647fc597cf61aa94aa41d07dcb8e329a2af2db1c5d5f4da5ee5d14c8ea5c603d212de977173f44f8
|
data/bin/twig-feature
CHANGED
@@ -22,7 +22,12 @@ class Release
|
|
22
22
|
exec "twig feature #{ARGV.join ' '}"
|
23
23
|
end
|
24
24
|
end
|
25
|
+
@cf = Aws::CloudFormation::Client.new
|
26
|
+
@alb = Aws::ElasticLoadBalancingV2::Client.new
|
27
|
+
@ec2 = Aws::EC2::Client.new
|
28
|
+
@ecs = Aws::ECS::Client.new
|
25
29
|
@batch = Aws::Batch::Client.new
|
30
|
+
@asg = Aws::AutoScaling::Client.new
|
26
31
|
@s3 = Aws::S3::Client.new
|
27
32
|
@s3_bucket = 'prima-artifacts'
|
28
33
|
@artifact_path = '/tmp/prima-artifact.zip'
|
@@ -750,7 +755,7 @@ class Release
|
|
750
755
|
create_alb_stack(stack_name_alb, "http", deploy_id, 'qa-minimal') unless stack_exists?(stack_name_alb)
|
751
756
|
create_alb_stack(stack_name_alb_ws, "websocket", deploy_id, 'qa-minimal') unless stack_exists?(stack_name_alb_ws)
|
752
757
|
|
753
|
-
resp = describe_stack_resource(cluster_stack_name, 'ECSCluster')
|
758
|
+
resp = @cf.describe_stack_resource({stack_name: cluster_stack_name, logical_resource_id: 'ECSCluster'})
|
754
759
|
@ecs_cluster_name = resp.stack_resource_detail.physical_resource_id
|
755
760
|
|
756
761
|
asg_stack_name = "ecs-asg-allinone-qa-#{deploy_id}"
|
@@ -921,7 +926,7 @@ class Release
|
|
921
926
|
create_alb_stack(stack_name_alb, "http", deploy_id) unless stack_exists?(stack_name_alb)
|
922
927
|
create_alb_stack(stack_name_alb_ws, "websocket", deploy_id) unless stack_exists?(stack_name_alb_ws)
|
923
928
|
|
924
|
-
resp = describe_stack_resource(cluster_stack_name, 'ECSCluster')
|
929
|
+
resp = @cf.describe_stack_resource({stack_name: cluster_stack_name, logical_resource_id: 'ECSCluster'})
|
925
930
|
@ecs_cluster_name = resp.stack_resource_detail.physical_resource_id
|
926
931
|
|
927
932
|
asg_stack_name = "ecs-asg-allinone-qa-#{deploy_id}"
|
@@ -2032,10 +2037,16 @@ class Release
|
|
2032
2037
|
end
|
2033
2038
|
|
2034
2039
|
def ec2_ip_address(asg_stack_name)
|
2035
|
-
resp = describe_stack_resource(
|
2036
|
-
|
2040
|
+
resp = @cf.describe_stack_resource({
|
2041
|
+
stack_name: asg_stack_name,
|
2042
|
+
logical_resource_id: 'ECSAutoScalingGroup'
|
2043
|
+
})
|
2044
|
+
resp = @asg.describe_auto_scaling_groups({
|
2045
|
+
auto_scaling_group_names: [resp.stack_resource_detail.physical_resource_id],
|
2046
|
+
max_records: 1
|
2047
|
+
})
|
2037
2048
|
instance_id = resp.auto_scaling_groups[0].instances[0].instance_id
|
2038
|
-
resp = describe_instances([instance_id])
|
2049
|
+
resp = @ec2.describe_instances({instance_ids: [instance_id]})
|
2039
2050
|
resp.reservations[0].instances[0].private_ip_address
|
2040
2051
|
end
|
2041
2052
|
|
@@ -2080,8 +2091,13 @@ class Release
|
|
2080
2091
|
when stack_name.include?('hutch')
|
2081
2092
|
logical_resource_id = 'EcsApplicationLoadBalancerPublic'
|
2082
2093
|
end
|
2083
|
-
resp = describe_stack_resource(
|
2084
|
-
|
2094
|
+
resp = @cf.describe_stack_resource({
|
2095
|
+
stack_name: stack_name,
|
2096
|
+
logical_resource_id: logical_resource_id
|
2097
|
+
})
|
2098
|
+
resp = @alb.describe_load_balancers({
|
2099
|
+
load_balancer_arns: [resp.stack_resource_detail.physical_resource_id]
|
2100
|
+
})
|
2085
2101
|
resp.load_balancers[0].dns_name
|
2086
2102
|
end
|
2087
2103
|
|
@@ -2130,8 +2146,18 @@ class Release
|
|
2130
2146
|
else
|
2131
2147
|
raise "Service name non gestito per lo stack #{stack_name}"
|
2132
2148
|
end
|
2133
|
-
resp = describe_stack_resource(
|
2134
|
-
|
2149
|
+
resp = @cf.describe_stack_resource(
|
2150
|
+
stack_name: stack_name,
|
2151
|
+
logical_resource_id: logical_resource_id
|
2152
|
+
)
|
2153
|
+
@ecs.update_service(
|
2154
|
+
cluster: @ecs_cluster_name,
|
2155
|
+
service: resp.stack_resource_detail.physical_resource_id,
|
2156
|
+
deployment_configuration: {
|
2157
|
+
minimum_healthy_percent: 0,
|
2158
|
+
maximum_percent: 100
|
2159
|
+
}
|
2160
|
+
)
|
2135
2161
|
end
|
2136
2162
|
|
2137
2163
|
def create_activia_artifact(revision)
|
@@ -2866,20 +2892,24 @@ class Release
|
|
2866
2892
|
end
|
2867
2893
|
|
2868
2894
|
def import_dbs(ip_address)
|
2869
|
-
|
2870
|
-
|
2871
|
-
|
2872
|
-
|
2873
|
-
|
2874
|
-
|
2875
|
-
|
2876
|
-
|
2877
|
-
|
2878
|
-
|
2879
|
-
|
2880
|
-
|
2881
|
-
|
2882
|
-
|
2895
|
+
resp = @ecs.run_task({
|
2896
|
+
cluster: @ecs_cluster_name,
|
2897
|
+
task_definition: @import_db_task,
|
2898
|
+
overrides: {
|
2899
|
+
container_overrides: [
|
2900
|
+
{
|
2901
|
+
name: 'dbrestore',
|
2902
|
+
environment: [
|
2903
|
+
{
|
2904
|
+
name: 'EC2_IP_ADDRESS',
|
2905
|
+
value: ip_address
|
2906
|
+
}
|
2907
|
+
]
|
2908
|
+
}
|
2909
|
+
]
|
2910
|
+
},
|
2911
|
+
count: 1
|
2912
|
+
})
|
2883
2913
|
return resp
|
2884
2914
|
end
|
2885
2915
|
|
@@ -2893,7 +2923,10 @@ class Release
|
|
2893
2923
|
pp task
|
2894
2924
|
stop_if true, "Task di import DB lanciato, ma risposta vuota!".red
|
2895
2925
|
end
|
2896
|
-
task =
|
2926
|
+
task = @ecs.describe_tasks({
|
2927
|
+
cluster: task.tasks[0].cluster_arn,
|
2928
|
+
tasks: [task.tasks[0].task_arn]
|
2929
|
+
})
|
2897
2930
|
stopped_at = task.tasks[0].stopped_at unless task.tasks[0].nil?
|
2898
2931
|
sleep_seconds = 10
|
2899
2932
|
seconds_elapsed = 0
|
@@ -2997,7 +3030,10 @@ class Release
|
|
2997
3030
|
end
|
2998
3031
|
|
2999
3032
|
def launch_marley(ip_address, prima_hostname, borat_hostname)
|
3000
|
-
resp = describe_stack_resource(
|
3033
|
+
resp = @cf.describe_stack_resource({
|
3034
|
+
stack_name: 'batch-job-marley',
|
3035
|
+
logical_resource_id: 'JobDefinition'
|
3036
|
+
})
|
3001
3037
|
|
3002
3038
|
@batch.submit_job({
|
3003
3039
|
job_name: "marley-#{@dns_record_identifier}", # required
|
data/lib/prima_aws_client.rb
CHANGED
@@ -18,14 +18,6 @@ module PrimaAwsClient
|
|
18
18
|
@ec2 ||= Aws::EC2::Client.new
|
19
19
|
end
|
20
20
|
|
21
|
-
def alb_client
|
22
|
-
@alb ||= Aws::ElasticLoadBalancingV2::Client.new
|
23
|
-
end
|
24
|
-
|
25
|
-
def ecs_client
|
26
|
-
@ecs ||= Aws::ECS::Client.new
|
27
|
-
end
|
28
|
-
|
29
21
|
def stack_list
|
30
22
|
stacks = []
|
31
23
|
next_token = ''
|
@@ -315,91 +307,6 @@ module PrimaAwsClient
|
|
315
307
|
stacks
|
316
308
|
end
|
317
309
|
|
318
|
-
def describe_stack_resource(cluster_stack_name, logical_resource_id)
|
319
|
-
begin
|
320
|
-
resp = cf_client.describe_stack_resource({stack_name: cluster_stack_name, logical_resource_id: logical_resource_id})
|
321
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
322
|
-
output 'Throttling, retrying in 15 seconds'.red
|
323
|
-
sleep 15
|
324
|
-
resp = describe_stack_resource(cluster_stack_name, logical_resource_id)
|
325
|
-
end
|
326
|
-
end
|
327
|
-
|
328
|
-
def describe_instances(instance_ids)
|
329
|
-
begin
|
330
|
-
resp = ec2_client.describe_instances({instance_ids: instance_ids})
|
331
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
332
|
-
output 'Throttling, retrying in 15 seconds'.red
|
333
|
-
sleep 15
|
334
|
-
resp = describe_instances(instance_ids)
|
335
|
-
end
|
336
|
-
end
|
337
|
-
|
338
|
-
def describe_auto_scaling_groups(auto_scaling_group_names, max_records)
|
339
|
-
begin
|
340
|
-
resp = asg_client.describe_auto_scaling_groups({
|
341
|
-
auto_scaling_group_names: auto_scaling_group_names,
|
342
|
-
max_records: max_records
|
343
|
-
})
|
344
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
345
|
-
output 'Throttling, retrying in 15 seconds'.red
|
346
|
-
sleep 15
|
347
|
-
resp = describe_auto_scaling_groups(auto_scaling_group_names, max_records)
|
348
|
-
end
|
349
|
-
end
|
350
|
-
|
351
|
-
def describe_load_balancers(load_balancer_arns)
|
352
|
-
begin
|
353
|
-
resp = alb_client.describe_load_balancers({load_balancer_arns: load_balancer_arns})
|
354
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
355
|
-
output 'Throttling, retrying in 15 seconds'.red
|
356
|
-
sleep 15
|
357
|
-
resp = describe_load_balancers(load_balancer_arns)
|
358
|
-
end
|
359
|
-
end
|
360
|
-
|
361
|
-
def update_ecs_service(cluster, service, deployment_configuration)
|
362
|
-
begin
|
363
|
-
resp = ecs_client.update_service(
|
364
|
-
cluster: cluster,
|
365
|
-
service: service,
|
366
|
-
deployment_configuration: deployment_configuration
|
367
|
-
)
|
368
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
369
|
-
output 'Throttling, retrying in 15 seconds'.red
|
370
|
-
sleep 15
|
371
|
-
resp = update_ecs_service(cluster, service, deployment_configuration)
|
372
|
-
end
|
373
|
-
end
|
374
|
-
|
375
|
-
def describe_ecs_tasks(cluster, tasks)
|
376
|
-
begin
|
377
|
-
resp = ecs_client.describe_tasks({
|
378
|
-
cluster: cluster,
|
379
|
-
tasks: tasks
|
380
|
-
})
|
381
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
382
|
-
output 'Throttling, retrying in 15 seconds'.red
|
383
|
-
sleep 15
|
384
|
-
resp = describe_ecs_tasks(cluster, tasks)
|
385
|
-
end
|
386
|
-
end
|
387
|
-
|
388
|
-
def run_ecs_task(cluster, task_definition, overrides, count)
|
389
|
-
begin
|
390
|
-
resp = ecs_client.run_task({
|
391
|
-
cluster: cluster,
|
392
|
-
task_definition: task_definition,
|
393
|
-
overrides: overrides,
|
394
|
-
count: count
|
395
|
-
})
|
396
|
-
rescue Aws::CloudFormation::Errors::Throttling => e
|
397
|
-
output 'Throttling, retrying in 15 seconds'.red
|
398
|
-
sleep 15
|
399
|
-
resp = run_ecs_task(cluster, task_definition, overrides, count)
|
400
|
-
end
|
401
|
-
end
|
402
|
-
|
403
310
|
def get_autoscaling_capacity(asg_name)
|
404
311
|
resp = asg_client.describe_auto_scaling_groups(auto_scaling_group_names: [asg_name])
|
405
312
|
resp.auto_scaling_groups[0].desired_capacity
|
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.
|
4
|
+
version: 0.57.0
|
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: 2019-11-
|
17
|
+
date: 2019-11-22 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: aws-sdk
|