prima-twig 0.29.0 → 0.29.1

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
  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: