prima-twig 0.28.4 → 0.29.0

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: 976146cb6b89fc289fddcc7523c7c40a82894f3d
4
- data.tar.gz: 2aadd74a8c7d8c62f7333b8e3d7cf0d07522a10d
3
+ metadata.gz: fe3319d7f081fe09c7c00c71ed29695b7c8b5221
4
+ data.tar.gz: 0f74ca0323984cfb2a65a5fd3506bbdb10ad5752
5
5
  SHA512:
6
- metadata.gz: 0d40f094f63be07d91d0c56dba54ef8198b34d034286c5f442f5045adf57b4a07b41384406c162e1dd0db748ba82d3bce01a86cb61c292c70b6b8be23c15bc80
7
- data.tar.gz: e0d289a345abe4ca24011de895eebc270716c60ab108aaffadf631051a1afa70663e3dc2b91f6dcc26e59ba242bcddc11033506ff203a5bb6f7b079db1eb0244
6
+ metadata.gz: dca19435feeaa8acddefd9b83c7827253e04527c98ebac5bbc926e2661cc74b39e622577edd52f7c26541b5529e6d11b0e89c78f12f4626c0c012d2f3fe27eec
7
+ data.tar.gz: 498129436f2ff62c94d9ec4cdda3f90356d302ef5b68321efff4b2c01ddcf4b371ada8c80774c94b88999b919544be467cb7520ce6829525b8f4a617287c6234
data/bin/twig-deploy CHANGED
@@ -45,6 +45,7 @@ end
45
45
 
46
46
  class Review
47
47
  include Command
48
+ include PrimaAwsCommand
48
49
 
49
50
  def initialize
50
51
  @prima = Prima.new
@@ -196,31 +197,6 @@ class Review
196
197
  artifacts.sort_by { |v| v[:created_at] }.reverse
197
198
  end
198
199
 
199
- def wait_for_stack_ready(stack_name)
200
- ready = false
201
- sleep_seconds = 5
202
- output "Attendo che lo stack #{stack_name} finisca di essere deployato...\n".yellow
203
- while !ready
204
- ready = true if stack_ready?(stack_name)
205
- seconds_elapsed = 0
206
- while true
207
- break if seconds_elapsed >= sleep_seconds
208
- print '.'.yellow; STDOUT.flush
209
- sleep 1
210
- seconds_elapsed += 1
211
- end
212
- end
213
-
214
- output "\nStack #{stack_name} deployato con successo!\n".green
215
- end
216
-
217
- def stack_ready?(stack_name)
218
- resp = @cf.describe_stacks({
219
- stack_name: stack_name
220
- })
221
- ['CREATE_COMPLETE', 'UPDATE_COMPLETE'].include? resp.stacks[0].stack_status
222
- end
223
-
224
200
  def launch_paparatzinger(job_name)
225
201
  @s3.get_object(
226
202
  response_target: '/tmp/paparatzinger_twig.yml',
data/bin/twig-feature CHANGED
@@ -9,6 +9,7 @@ require 'json'
9
9
 
10
10
  class Release
11
11
  include Command
12
+ include PrimaAwsClient
12
13
 
13
14
  def initialize
14
15
  @prima = Prima.new
@@ -109,7 +110,7 @@ class Release
109
110
 
110
111
  output "Recupero le informazioni relative al puntamento dei record DNS..."
111
112
  cloudflare = Rubyflare.connect_with(@prima.config['cloudflare_email'], @prima.config['cloudflare_apikey'])
112
- dns_records = cloudflare.get("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records", {"per_page": 100, "type": "CNAME", "content": get_alb_host(@stack_name_alb)})
113
+ dns_records = cloudflare.get("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records", {per_page: 100, type: "CNAME", content: get_alb_host(@stack_name_alb)})
113
114
  stop_if dns_records.body[:result].empty?, "I record DNS degli aggregatori non stanno puntando ad un QA".red
114
115
 
115
116
  output "Recupero le informazioni sui QA attivi..."
@@ -193,19 +194,7 @@ class Release
193
194
  stack_list.each do |stack|
194
195
  if stack.stack_name.match(/#{env_hash}$/)
195
196
  stack_name = stack.stack_name
196
- begin
197
- @cf.update_stack({
198
- stack_name: stack_name,
199
- tags: tags,
200
- parameters: get_stack_parameters(stack_name),
201
- template_body: get_stack_template(stack_name),
202
- capabilities: ["CAPABILITY_IAM"]
203
- })
204
- rescue Aws::CloudFormation::Errors::ValidationError => e
205
- raise e
206
- else
207
- output "L'update dello stack #{stack_name} è stato avviato".green
208
- end
197
+ update_stack(stack_name, get_stack_template(stack_name), get_stack_parameters(stack_name), tags)
209
198
  end
210
199
  end
211
200
 
@@ -232,18 +221,8 @@ class Release
232
221
  end
233
222
  end
234
223
 
235
- begin
236
- @cf.update_stack({
237
- stack_name: stack_name_web,
238
- template_body: get_stack_template(stack_name_web),
239
- parameters: parameters,
240
- capabilities: ["CAPABILITY_IAM"]
241
- })
242
- rescue Aws::CloudFormation::Errors::ValidationError => e
243
- raise e
244
- else
245
- output "L'update dello stack #{stack_name_web} è stato avviato".green
246
- end
224
+ update_stack(stack_name_web, get_stack_template(stack_name_web), parameters)
225
+
247
226
  wait_for_stack_ready(stack_name_web) unless stack_ready?(stack_name_web)
248
227
  end
249
228
 
@@ -331,17 +310,9 @@ class Release
331
310
  while stacks_to_delete.length > 0
332
311
  sleep 10
333
312
  stacks_to_delete.each do |stack_name|
334
- begin
335
- resp = @cf.describe_stacks({stack_name: stack_name})
336
- rescue Aws::CloudFormation::Errors::ValidationError => e
337
- if e.message.include? 'does not exist'
338
- stacks_to_delete = stacks_to_delete - [stack_name]
339
- else
340
- raise e
341
- end
342
- end
313
+ stacks_to_delete = stacks_to_delete - [stack_name] unless stack_exists?(stack_name)
343
314
  end
344
- output "Stack ancora attivi :#{stacks_to_delete.length.to_s}. Attendo altri 10 secondi per eliminare il cluster ECS"
315
+ output "Stack ancora attivi: #{stacks_to_delete.length.to_s}. Attendo altri 10 secondi per eliminare il cluster ECS"
345
316
  end
346
317
 
347
318
  delete_stack(cluster_stack_name)
@@ -1646,76 +1617,6 @@ class Release
1646
1617
  Dir.chdir "../../"
1647
1618
  end
1648
1619
 
1649
- def upload_artifact(source_path, destination_path)
1650
- output "Upload dell'artifact in corso (#{(File.size(source_path).to_f / 2**20).round(2)} MiB)\n".yellow
1651
- s3 = Aws::S3::Resource.new
1652
- obj = s3.bucket(@s3_bucket).object(destination_path)
1653
- obj.upload_file(source_path)
1654
-
1655
- output "#{@s3_bucket}/#{destination_path} uploadato con successo!\n".green
1656
- end
1657
-
1658
- def wait_for_stack_ready(stack_name)
1659
- ready = false
1660
- sleep_seconds = 10
1661
- output "Attendo che lo stack #{stack_name} finisca di essere inizializzato...\n".yellow
1662
- while !ready
1663
- ready = true if stack_ready?(stack_name)
1664
- seconds_elapsed = 0
1665
- while true
1666
- break if seconds_elapsed >= sleep_seconds
1667
- print '.'.yellow; STDOUT.flush
1668
- sleep 1
1669
- seconds_elapsed += 1
1670
- end
1671
- end
1672
-
1673
- output "\nStack #{stack_name} pronto!\n".green
1674
- end
1675
-
1676
- def get_stack_tags(name)
1677
- resp = @cf.describe_stacks({stack_name: name})
1678
- resp.stacks[0].tags
1679
- end
1680
-
1681
- def get_stack_parameters(name)
1682
- resp = @cf.describe_stacks({stack_name: name})
1683
- resp.stacks[0].parameters
1684
- end
1685
-
1686
- def get_stack_template(name)
1687
- resp = @cf.get_template({stack_name: name})
1688
- resp.template_body
1689
- end
1690
-
1691
- def stack_list
1692
- stacks = []
1693
- next_token = ""
1694
- while true do
1695
- print '.'.yellow; STDOUT.flush
1696
- options = next_token != "" ? {next_token: next_token} : {}
1697
- resp = @cf.describe_stacks(options)
1698
- stacks += resp.stacks
1699
- break unless resp.next_token
1700
- next_token = resp.next_token
1701
- end
1702
- puts '.'.yellow; STDOUT.flush
1703
- stacks.keep_if { |stack| stack.stack_name.include? '-qa-' }
1704
- stacks
1705
- end
1706
-
1707
- def delete_stack(stack_name)
1708
- @cf.delete_stack({stack_name: stack_name})
1709
- output "Stack #{stack_name} spenta con successo\n".green
1710
- end
1711
-
1712
- def stack_ready?(stack_name)
1713
- resp = @cf.describe_stacks({
1714
- stack_name: stack_name
1715
- })
1716
- ['CREATE_COMPLETE', 'UPDATE_COMPLETE', 'UPDATE_ROLLBACK_COMPLETE'].include? resp.stacks[0].stack_status
1717
- end
1718
-
1719
1620
  def create_asg_stack(stack_name, tags = [])
1720
1621
  stack_body = IO.read('cloudformation/stacks/asg/ecs-asg-allinone.yml')
1721
1622
  parameters = [
@@ -1794,63 +1695,6 @@ class Release
1794
1695
  print "\n"
1795
1696
  end
1796
1697
 
1797
- def stack_exists?(stack_name)
1798
- begin
1799
- res = @cf.describe_stacks({
1800
- stack_name: stack_name
1801
- })
1802
- rescue Aws::CloudFormation::Errors::ValidationError => e
1803
- if e.message.include? 'does not exist'
1804
- false
1805
- else
1806
- raise e
1807
- end
1808
- else
1809
- true
1810
- end
1811
- end
1812
-
1813
- def create_stack(stack_name, stack_body, parameters = [], tags = [])
1814
- @cf.create_stack({
1815
- stack_name: stack_name,
1816
- template_body: stack_body,
1817
- parameters: parameters,
1818
- tags: tags,
1819
- capabilities: ["CAPABILITY_IAM"],
1820
- on_failure: "ROLLBACK"
1821
- })
1822
- output "La creazione dello stack #{stack_name} è stata avviata".green
1823
- end
1824
-
1825
- def update_stack(stack_name, stack_body, parameters = [])
1826
- begin
1827
- @cf.update_stack({
1828
- stack_name: stack_name,
1829
- template_body: stack_body,
1830
- parameters: parameters,
1831
- capabilities: ["CAPABILITY_IAM"]
1832
- })
1833
- rescue Aws::CloudFormation::Errors::ValidationError => e
1834
- # if e.message.include? 'does not exist'
1835
- # false
1836
- # else
1837
- # raise e
1838
- # end
1839
- raise e
1840
- else
1841
- output "L'update dello stack #{stack_name} è stato avviato".green
1842
- end
1843
- end
1844
-
1845
- def artifact_exists?(bucket, path)
1846
- resp = @s3.list_objects({
1847
- bucket: bucket,
1848
- max_keys: 1,
1849
- prefix: path
1850
- })
1851
- !resp.contents.empty?
1852
- end
1853
-
1854
1698
  def choose_branch_to_deploy(project_name, select_master = false)
1855
1699
  Dir.chdir "projects/#{project_name}"
1856
1700
  output "Recupero la lista dei branch del progetto #{project_name}..."
@@ -1992,7 +1836,6 @@ class Release
1992
1836
  end
1993
1837
  end
1994
1838
  end
1995
-
1996
1839
  end
1997
1840
 
1998
1841
  def help_content
data/lib/prima_twig.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require_relative 'command.rb'
2
+ require_relative 'prima_aws_client.rb'
2
3
  require 'twig'
3
4
  require 'octokit'
4
5
  require 'yaml'
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.28.4
4
+ version: 0.29.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Giachino
@@ -196,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
196
  version: '0'
197
197
  requirements: []
198
198
  rubyforge_project:
199
- rubygems_version: 2.6.12
199
+ rubygems_version: 2.6.14
200
200
  signing_key:
201
201
  specification_version: 4
202
202
  summary: The Prima twig toolbelt