cloudformation-tool 0.7.2 → 0.8.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
- SHA1:
3
- metadata.gz: 3149c2a4141376f3a03b938aa0355d186ae39dbe
4
- data.tar.gz: f66651bde38ce2b27d900e6efdfd66bade230220
2
+ SHA256:
3
+ metadata.gz: 0e5abc1e4e61d28dd02bbfd5afbe35227264c85180f3c142f45bc3d310f5502c
4
+ data.tar.gz: 0cd6c58286dc243b41e5589ad979b26ccacbbaf4e7935e48ebc6ca86aaeba58d
5
5
  SHA512:
6
- metadata.gz: 970048ffbef6d25fe0dedeb913c6ee6560e02baaef2fa3ee1a631eeec2afb84c6ac9197c424659b1a377b06cd85e8b17c60329eb8366148db790429f4a7f9e77
7
- data.tar.gz: ec01d35ce4ba853b398d10e4ea9ec60432a66f5c2139a9433425597bdd18485b30132ed82c4eb3c18c847b0e982bca621e9e93e9c8933258b6b1cb9b8907e091
6
+ metadata.gz: de747553ac8b014e644a02c5762b7b2e0f45f967d43b1e215a338d88fe56a9afb336852f3c2070202d471a8fae55e3651e37422878bed79b136108b3ae37dd0b
7
+ data.tar.gz: ad25012520b89d6374f804f0083e74a34b25c5603ebdcedec50ba9f5bb9c174e0a63ac8de784dae6d219b098db162e49ba99d5ba76ad6e5309efbca8ec069dc7
@@ -35,6 +35,7 @@ module CloudFormationTool
35
35
  subcommand 'status', "Check the current status of a stack", Status
36
36
  subcommand 'delete', "Delete an existing stack", Delete
37
37
  subcommand 'servers', 'List stack resources', Servers
38
+ subcommand 'recycle', 'Recycle servers in an auto scaling group', Recycle
38
39
  subcommand 'output', 'Retrieve output values from the stack', Output
39
40
  end
40
41
  end
@@ -0,0 +1,40 @@
1
+ require 'set'
2
+
3
+ module CloudFormationTool
4
+ module CLI
5
+
6
+ class Recycle < Clamp::Command
7
+ include CloudFormationTool
8
+
9
+ parameter "STACK_NAME", "Name of the stack to recycle servers in"
10
+ parameter "ASG_NAME", "Name of the auto scaling group in which to recycle all servers"
11
+
12
+ def execute
13
+ st = CloudFormation::Stack.new(stack_name)
14
+ st.asgroups.select do |res|
15
+ asg_name.nil? or (res.logical_resource_id == asg_name)
16
+ end.collect do |res|
17
+ Thread.new do
18
+ grp = res.group
19
+ torecycle = cursize = grp.instances.size
20
+ puts "#{grp.name}: Recyclying #{cursize} instance" + (cursize > 1 ? "s" : "")
21
+ while torecycle > 0
22
+ grp.set_desired_capacity(desired_capacity: (cursize + 1))
23
+ while grp.instances.size != (cursize + 1)
24
+ sleep 5
25
+ grp.reload
26
+ end
27
+ grp.set_desired_capacity(desired_capacity: cursize)
28
+ while grp.instances.size != cursize
29
+ sleep 5
30
+ grp.reload
31
+ end
32
+ torecycle -= 1
33
+ puts "#{grp.name}: Left to recycle - #{torecycle}"
34
+ end
35
+ end
36
+ end.each(&:join)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -101,6 +101,14 @@ module CloudFormationTool
101
101
  def asgroups
102
102
  resources.select do |res|
103
103
  res.resource_type == 'AWS::AutoScaling::AutoScalingGroup'
104
+ end.collect do |res|
105
+ res.extend(CloudFormationTool)
106
+ res.instance_eval do
107
+ def group
108
+ Aws::AutoScaling::AutoScalingGroup.new(self.physical_resource_id, client: awsas).reload
109
+ end
110
+ end
111
+ res
104
112
  end
105
113
  end
106
114
 
@@ -1,3 +1,3 @@
1
1
  module CloudFormationTool
2
- VERSION = '0.7.2'
2
+ VERSION = '0.8.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudformation-tool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oded Arbel
@@ -88,6 +88,7 @@ files:
88
88
  - lib/cloud_formation_tool/cli/monitor.rb
89
89
  - lib/cloud_formation_tool/cli/output.rb
90
90
  - lib/cloud_formation_tool/cli/parameters.rb
91
+ - lib/cloud_formation_tool/cli/recycle.rb
91
92
  - lib/cloud_formation_tool/cli/servers.rb
92
93
  - lib/cloud_formation_tool/cli/status.rb
93
94
  - lib/cloud_formation_tool/cloud_formation.rb
@@ -117,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
118
  version: '0'
118
119
  requirements: []
119
120
  rubyforge_project:
120
- rubygems_version: 2.6.14
121
+ rubygems_version: 2.7.2
121
122
  signing_key:
122
123
  specification_version: 4
123
124
  summary: A pre-compiler tool for CloudFormation YAML templates