prima-twig 0.28.4 → 0.29.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 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