stackster 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,9 @@
1
1
  ## head:
2
2
 
3
+ ## 0.4.4 (03/18/2013)
4
+
5
+ * Refactor instance_reader logic and specs
6
+
3
7
  ## 0.4.3 (03/14/2013)
4
8
 
5
9
  * Properly return instances in an auto scaling group
@@ -7,8 +7,13 @@ module Stackster
7
7
 
8
8
  def list_stack_instances(stack_name)
9
9
  @asg_id = auto_scaling_group_id(stack_name)
10
- asg_instances = auto_scaling.list_instances if @asg_id
11
- return [] unless asg_instances
10
+
11
+ return [] unless @asg_id
12
+
13
+ asg_instances = auto_scaling.list_instances
14
+
15
+ return [] unless asg_instances.any?
16
+
12
17
  ec2.describe_instance asg_instances
13
18
  end
14
19
 
@@ -1,3 +1,3 @@
1
1
  module Stackster
2
- VERSION = "0.4.3"
2
+ VERSION = "0.4.4"
3
3
  end
@@ -5,61 +5,71 @@ describe Stackster::InstanceReader do
5
5
  describe "list_stack_instances" do
6
6
 
7
7
  before do
8
- @config_mock = mock 'config'
9
- @cloud_formation_mock = mock 'cloud formation'
10
- @auto_scaling_groups_mock = mock 'auto scaling'
11
- @ec2_mock = mock 'ec2'
8
+ @config_mock = mock 'config'
9
+ @cloud_formation_mock = mock 'cloud formation'
10
+ @auto_scaling_groups_mock = mock 'auto scaling'
11
+ @ec2_mock = mock 'ec2'
12
12
  @instance_reservation_set_mock = mock 'reservation'
13
- @instance_data_mock = mock 'instance data mock'
13
+ @instance_data_mock = mock 'instance data mock'
14
14
 
15
15
  Stackster::AWS::CloudFormation.should_receive(:new).
16
16
  with(:config => @config_mock).
17
17
  and_return @cloud_formation_mock
18
+ end
18
19
 
19
- stack_resource_results = [{'StackName' => 'stack',
20
- 'ResourceType' => 'AWS::AutoScaling::AutoScalingGroup',
21
- 'PhysicalResourceId' => 'asg1'}]
20
+ context "with no ASGs" do
21
+ before do
22
+ @cloud_formation_mock.should_receive(:stack_resources).
23
+ with('stack').
24
+ and_return []
25
+ end
22
26
 
23
- @cloud_formation_mock.should_receive(:stack_resources).
24
- with('stack').
25
- and_return stack_resource_results
27
+ it "should return an empty array" do
28
+ instance_reader = Stackster::InstanceReader.new :config => @config_mock
29
+ instance_reader.list_stack_instances('stack').should == []
30
+ end
31
+ end
26
32
 
27
- Stackster::AWS::AutoScalingGroups.should_receive(:new).
28
- with(:config => @config_mock, :asg_id => "asg1").
29
- and_return @auto_scaling_groups_mock
33
+ context "with an ASG" do
34
+ before do
35
+ stack_resource_results = [{'StackName' => 'stack',
36
+ 'ResourceType' => 'AWS::AutoScaling::AutoScalingGroup',
37
+ 'PhysicalResourceId' => 'asg1'}]
30
38
 
31
- Stackster::AWS::EC2.should_receive(:new).
32
- with(:config => @config_mock).
33
- and_return @ec2_mock
34
- end
39
+ @cloud_formation_mock.should_receive(:stack_resources).
40
+ with('stack').
41
+ and_return stack_resource_results
35
42
 
36
- context "with no running instances" do
37
- it "should return empty array" do
38
- @auto_scaling_groups_mock.should_receive(:list_instances).
39
- and_return []
43
+ Stackster::AWS::AutoScalingGroups.should_receive(:new).
44
+ with(:config => @config_mock, :asg_id => "asg1").
45
+ and_return @auto_scaling_groups_mock
46
+ end
40
47
 
41
- @ec2_mock.should_receive(:describe_instance).
42
- with([]).
43
- and_return @instance_reservation_set_mock
48
+ context "with no running instances" do
49
+ it "should return empty array" do
50
+ @auto_scaling_groups_mock.should_receive(:list_instances).
51
+ and_return []
44
52
 
45
- @instance_reservation_set_mock.stub :any? => true
46
- instance_reader = Stackster::InstanceReader.new :config => @config_mock
47
- instance_reader.list_stack_instances('stack').should == @instance_reservation_set_mock
53
+ instance_reader = Stackster::InstanceReader.new :config => @config_mock
54
+ instance_reader.list_stack_instances('stack').should == []
55
+ end
48
56
  end
49
- end
50
57
 
51
- context "with running instances" do
52
- it "should return the reservation set for each running instance" do
53
- @auto_scaling_groups_mock.should_receive(:list_instances).
54
- and_return ['instance1']
58
+ context "with running instances" do
59
+ it "should return the reservation set for each running instance" do
60
+ @auto_scaling_groups_mock.should_receive(:list_instances).
61
+ and_return ['instance1', 'instance2']
55
62
 
56
- @ec2_mock.should_receive(:describe_instance).
57
- with(['instance1']).
58
- and_return @instance_reservation_set_mock
63
+ @ec2_mock.should_receive(:describe_instance).
64
+ with(['instance1', 'instance2']).
65
+ and_return @instance_reservation_set_mock
59
66
 
60
- @instance_reservation_set_mock.stub :any? => true
61
- instance_reader = Stackster::InstanceReader.new :config => @config_mock
62
- instance_reader.list_stack_instances('stack').should == @instance_reservation_set_mock
67
+ Stackster::AWS::EC2.should_receive(:new).
68
+ with(:config => @config_mock).
69
+ and_return @ec2_mock
70
+ instance_reader = Stackster::InstanceReader.new :config => @config_mock
71
+ instance_reader.list_stack_instances('stack').should == @instance_reservation_set_mock
72
+ end
63
73
  end
64
74
  end
65
75
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-14 00:00:00.000000000 Z
12
+ date: 2013-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &70158035968220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
24
+ version_requirements: *70158035968220
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: rspec
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &70158035966920 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ~>
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: 2.11.0
38
33
  type: :development
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 2.11.0
35
+ version_requirements: *70158035966920
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: simplecov
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &70158035965200 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ~>
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: 0.6.4
54
44
  type: :development
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 0.6.4
46
+ version_requirements: *70158035965200
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: timecop
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &70158035964000 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ~>
@@ -69,60 +54,40 @@ dependencies:
69
54
  version: 0.5.3
70
55
  type: :development
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: 0.5.3
57
+ version_requirements: *70158035964000
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: fog
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &70158035979700 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
- - - '='
63
+ - - =
84
64
  - !ruby/object:Gem::Version
85
65
  version: 1.10.0
86
66
  type: :runtime
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - '='
92
- - !ruby/object:Gem::Version
93
- version: 1.10.0
68
+ version_requirements: *70158035979700
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: trollop
96
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &70158035979180 !ruby/object:Gem::Requirement
97
72
  none: false
98
73
  requirements:
99
- - - '='
74
+ - - =
100
75
  - !ruby/object:Gem::Version
101
76
  version: '2.0'
102
77
  type: :runtime
103
78
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - '='
108
- - !ruby/object:Gem::Version
109
- version: '2.0'
79
+ version_requirements: *70158035979180
110
80
  - !ruby/object:Gem::Dependency
111
81
  name: xml-simple
112
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &70158035978340 !ruby/object:Gem::Requirement
113
83
  none: false
114
84
  requirements:
115
- - - '='
85
+ - - =
116
86
  - !ruby/object:Gem::Version
117
87
  version: 1.1.2
118
88
  type: :runtime
119
89
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - '='
124
- - !ruby/object:Gem::Version
125
- version: 1.1.2
90
+ version_requirements: *70158035978340
126
91
  description: Thats what I do
127
92
  email:
128
93
  - brett@weav.net
@@ -198,7 +163,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
198
163
  version: '0'
199
164
  segments:
200
165
  - 0
201
- hash: -3513599222543714350
166
+ hash: 3945755026545543091
202
167
  required_rubygems_version: !ruby/object:Gem::Requirement
203
168
  none: false
204
169
  requirements:
@@ -207,10 +172,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
172
  version: '0'
208
173
  segments:
209
174
  - 0
210
- hash: -3513599222543714350
175
+ hash: 3945755026545543091
211
176
  requirements: []
212
177
  rubyforge_project: stackster
213
- rubygems_version: 1.8.24
178
+ rubygems_version: 1.8.16
214
179
  signing_key:
215
180
  specification_version: 3
216
181
  summary: I make deployments easier