prima-twig 0.29.0 → 0.29.1

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
  SHA1:
3
- metadata.gz: fe3319d7f081fe09c7c00c71ed29695b7c8b5221
4
- data.tar.gz: 0f74ca0323984cfb2a65a5fd3506bbdb10ad5752
3
+ metadata.gz: bbcf2e49fd1c8061a9afdd6475df1edcc1b17002
4
+ data.tar.gz: 838ea9352b0d2476ef1e1280e464b1bf55556aac
5
5
  SHA512:
6
- metadata.gz: dca19435feeaa8acddefd9b83c7827253e04527c98ebac5bbc926e2661cc74b39e622577edd52f7c26541b5529e6d11b0e89c78f12f4626c0c012d2f3fe27eec
7
- data.tar.gz: 498129436f2ff62c94d9ec4cdda3f90356d302ef5b68321efff4b2c01ddcf4b371ada8c80774c94b88999b919544be467cb7520ce6829525b8f4a617287c6234
6
+ metadata.gz: 5f6a18b00a13bb9a620ce6649abe11647a09abbd99433f20a0b0037786a82cfc422455672b66331a10edd2866ca63b31910bfd5d65b065b36f3deadf865e0516
7
+ data.tar.gz: e4e59057d62b4345c7364aae5e2556d60b1983ac40e254e4f61f6a90e352b2b6625b67f8bd901d20d2b1144b690cfa9cc2ea53229279e655e92d411d331a481e
data/bin/twig-feature CHANGED
@@ -26,6 +26,7 @@ class Release
26
26
  @s3_bucket = 'prima-artifacts'
27
27
  @artifact_path = '/tmp/prima-artifact.zip'
28
28
  @import_db_task = 'arn:aws:ecs:eu-west-1:001575623345:task-definition/ecs-task-db-restore-TaskDefinitionDbRestore-19XD5OHZGOTI3:1'
29
+ @built_projects = {}
29
30
  @prima_built = false
30
31
  @urania_built = false
31
32
  @ermes_built = false
@@ -1046,6 +1047,8 @@ class Release
1046
1047
  host = "assange-#{@dns_record_identifier}.qa.colaster.com"
1047
1048
  when stack_name.include?('borat')
1048
1049
  host = "backoffice-#{@dns_record_identifier}.qa.colaster.com"
1050
+ when stack_name.include?('crash')
1051
+ host = "crash-#{@dns_record_identifier}.qa.colaster.com"
1049
1052
  end
1050
1053
  host
1051
1054
  end
@@ -0,0 +1,125 @@
1
+ require 'aws-sdk'
2
+ require 'colorize'
3
+ #
4
+ module PrimaAwsClient
5
+ def s3_client
6
+ @s3 ||= Aws::S3::Client.new
7
+ end
8
+
9
+ def stack_list
10
+ stacks = []
11
+ next_token = ''
12
+ loop do
13
+ print '.'.yellow; STDOUT.flush
14
+ options = next_token != '' ? { next_token: next_token } : {}
15
+ resp = @cf.describe_stacks(options)
16
+ stacks += resp.stacks
17
+ break unless resp.next_token
18
+ next_token = resp.next_token
19
+ end
20
+ puts '.'.yellow; STDOUT.flush
21
+ stacks.keep_if { |stack| stack.stack_name.include? '-qa-' }
22
+ stacks
23
+ end
24
+
25
+ def cf_client
26
+ @cf ||= Aws::CloudFormation::Client.new
27
+ end
28
+
29
+ def create_stack(stack_name, stack_body, parameters = [], tags = [])
30
+ cf_client.create_stack(
31
+ stack_name: stack_name,
32
+ template_body: stack_body,
33
+ parameters: parameters,
34
+ tags: tags,
35
+ capabilities: ['CAPABILITY_IAM'],
36
+ on_failure: 'ROLLBACK'
37
+ )
38
+ output "La creazione dello stack #{stack_name} è stata avviata".green
39
+ end
40
+
41
+ def update_stack(stack_name, template_url, parameters = [], tags = [])
42
+ cf_client.update_stack(
43
+ stack_name: stack_name,
44
+ template_url: template_url,
45
+ parameters: parameters,
46
+ tags: tags,
47
+ capabilities: ['CAPABILITY_IAM']
48
+ )
49
+ rescue Aws::CloudFormation::Errors::ValidationError => e
50
+ raise e
51
+ else
52
+ output "L'update dello stack #{stack_name} è stato avviato".green
53
+ end
54
+
55
+ def stack_exists?(stack_name)
56
+ cf_client.describe_stacks(stack_name: stack_name)
57
+ rescue Aws::CloudFormation::Errors::ValidationError => e
58
+ return false if e.message.include? 'does not exist'
59
+ raise e
60
+ else
61
+ true
62
+ end
63
+
64
+ def delete_stack(stack_name)
65
+ cf_client.delete_stack(stack_name: stack_name)
66
+ output "Stack #{stack_name} spenta con successo\n".green
67
+ end
68
+
69
+ def wait_for_stack_ready(stack_name)
70
+ ready = false
71
+ sleep_seconds = 10
72
+ output "Attendo che lo stack #{stack_name} finisca di essere inizializzato...\n".yellow
73
+ while !ready
74
+ ready = true if stack_ready?(stack_name)
75
+ seconds_elapsed = 0
76
+ loop do
77
+ break if seconds_elapsed >= sleep_seconds
78
+ print '.'.yellow; STDOUT.flush
79
+ sleep 1
80
+ seconds_elapsed += 1
81
+ end
82
+ end
83
+ output "\nStack #{stack_name} pronto!\n".green
84
+ end
85
+
86
+ def get_stack_tags(name)
87
+ resp = cf_client.describe_stacks(stack_name: name)
88
+ resp.stacks[0].tags
89
+ end
90
+
91
+ def get_stack_parameters(name)
92
+ resp = cf_client.describe_stacks(stack_name: name)
93
+ resp.stacks[0].parameters
94
+ end
95
+
96
+ def get_stack_template(name)
97
+ resp = cf_client.get_template(stack_name: name)
98
+ resp.template_body
99
+ end
100
+
101
+ def stack_ready?(stack_name)
102
+ resp = cf_client.describe_stacks(
103
+ stack_name: stack_name
104
+ )
105
+ ['CREATE_COMPLETE', 'UPDATE_COMPLETE', 'UPDATE_ROLLBACK_COMPLETE'].include? resp.stacks[0].stack_status
106
+ end
107
+
108
+ def artifact_exists?(bucket, path)
109
+ resp = s3_client.list_objects(
110
+ bucket: bucket,
111
+ max_keys: 1,
112
+ prefix: path
113
+ )
114
+ !resp.contents.empty?
115
+ end
116
+
117
+ def upload_artifact(source_path, destination_path)
118
+ output "Upload dell'artifact in corso (#{(File.size(source_path).to_f / 2**20).round(2)} MiB)\n".yellow
119
+ s3 = Aws::S3::Resource.new
120
+ obj = s3.bucket(@s3_bucket).object(destination_path)
121
+ obj.upload_file(source_path)
122
+
123
+ output "#{@s3_bucket}/#{destination_path} uploadato con successo!\n".green
124
+ end
125
+ 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.29.0
4
+ version: 0.29.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Giachino
@@ -175,6 +175,7 @@ files:
175
175
  - bin/twig-pick-issue
176
176
  - bin/twig-review
177
177
  - lib/command.rb
178
+ - lib/prima_aws_client.rb
178
179
  - lib/prima_twig.rb
179
180
  homepage: http://rubygems.org/gems/prima-twig
180
181
  licenses: