stackster 0.2.0 → 0.2.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.
- data/README.md +1 -1
- data/lib/stackster/cli.rb +3 -2
- data/lib/stackster/entry.rb +1 -1
- data/lib/stackster/stack/stack_lister.rb +1 -1
- data/lib/stackster/version.rb +1 -1
- data/spec/config_spec.rb +1 -0
- data/spec/entry/entry_lister_spec.rb +1 -1
- data/spec/entry_spec.rb +19 -4
- data/spec/instance/instance_reader_spec.rb +9 -3
- data/spec/stack/stack_lister_spec.rb +0 -1
- data/spec/stack_spec.rb +12 -0
- metadata +12 -12
data/README.md
CHANGED
@@ -31,7 +31,7 @@ stackster destroy -n STACK_NAME
|
|
31
31
|
|
32
32
|
Attributes are specified as '=' seperated key value pairs. Multiple can be specified. For example:
|
33
33
|
|
34
|
-
stackster create -n test-stack -t ~/my-template.json -a arg1=val1 arg2=vol2
|
34
|
+
stackster create -n test-stack -t ~/my-template.json -a arg1=val1 -a arg2=vol2
|
35
35
|
```
|
36
36
|
|
37
37
|
For more information, run stackster -h.
|
data/lib/stackster/cli.rb
CHANGED
@@ -16,10 +16,11 @@ stackster destroy -n STACK_NAME
|
|
16
16
|
|
17
17
|
Attributes are specified as '=' seperated key value pairs. Multiple can be specified. For example:
|
18
18
|
|
19
|
-
stackster create -n test-stack -t ~/my-template.json -a arg1=val1 arg2=vol2
|
19
|
+
stackster create -n test-stack -t ~/my-template.json -a arg1=val1 -a arg2=vol2
|
20
20
|
EOS
|
21
21
|
opt :help, "Display Help"
|
22
|
-
opt :attributes, "
|
22
|
+
opt :attributes, "= seperated attribute and it's value", :type => :string,
|
23
|
+
:multi => true
|
23
24
|
opt :name, "Stack name to manage", :type => :string
|
24
25
|
opt :template, "Path to the template file", :type => :string
|
25
26
|
end
|
data/lib/stackster/entry.rb
CHANGED
@@ -8,6 +8,7 @@ module Stackster
|
|
8
8
|
@domain = 'stacks'
|
9
9
|
@config = args[:config]
|
10
10
|
self.name = region_specific_name args[:name]
|
11
|
+
create_domain
|
11
12
|
get_attributes
|
12
13
|
end
|
13
14
|
|
@@ -22,7 +23,6 @@ module Stackster
|
|
22
23
|
end
|
23
24
|
|
24
25
|
def save
|
25
|
-
create_domain
|
26
26
|
attributes.each_pair do |k,v|
|
27
27
|
sdb_connect.put_attributes('stacks', name, { k => v }, { :replace => k })
|
28
28
|
end
|
data/lib/stackster/version.rb
CHANGED
data/spec/config_spec.rb
CHANGED
@@ -9,6 +9,7 @@ describe Stackster do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should create a new config object from the hash passed as config" do
|
12
|
+
File.should_receive(:open).exactly(0).times
|
12
13
|
config = Stackster::Config.new :config => @config
|
13
14
|
config.access_key.should == @config['access_key']
|
14
15
|
config.secret_key.should == @config['secret_key']
|
@@ -4,7 +4,7 @@ describe Stackster do
|
|
4
4
|
|
5
5
|
it "should create a list of entries" do
|
6
6
|
@simple_db_mock = mock 'simple db'
|
7
|
-
config =
|
7
|
+
config = mock 'config mock'
|
8
8
|
Stackster::AWS::SimpleDB.should_receive(:new).and_return @simple_db_mock
|
9
9
|
@simple_db_mock.should_receive(:select).
|
10
10
|
with("select * from stacks").
|
data/spec/entry_spec.rb
CHANGED
@@ -4,8 +4,13 @@ describe Stackster do
|
|
4
4
|
|
5
5
|
it "should create a new entry object" do
|
6
6
|
@simple_db_mock = mock 'simple db'
|
7
|
-
config = Stackster::Config.new
|
7
|
+
config = Stackster::Config.new(:config => { 'access_key' => 'the-key',
|
8
|
+
'secret_key' => 'secret',
|
9
|
+
'region' => 'us-west-1' })
|
8
10
|
Stackster::AWS::SimpleDB.should_receive(:new).and_return @simple_db_mock
|
11
|
+
@simple_db_mock.should_receive(:create_domain).
|
12
|
+
with("stacks").
|
13
|
+
and_return true
|
9
14
|
@simple_db_mock.should_receive(:select).
|
10
15
|
with("select * from stacks where itemName() = 'test-stack-us-west-1'").
|
11
16
|
and_return('stack-to-find' => { 'attr1' => 'value1' })
|
@@ -16,20 +21,31 @@ describe Stackster do
|
|
16
21
|
|
17
22
|
it "should find the requested stack in simple db" do
|
18
23
|
@simple_db_mock = mock 'simple db'
|
24
|
+
config = Stackster::Config.new(:config => { 'access_key' => 'the-key',
|
25
|
+
'secret_key' => 'secret',
|
26
|
+
'region' => 'us-west-1' })
|
19
27
|
Stackster::AWS::SimpleDB.should_receive(:new).and_return @simple_db_mock
|
20
28
|
|
29
|
+
@simple_db_mock.should_receive(:create_domain).
|
30
|
+
with("stacks").
|
31
|
+
and_return true
|
21
32
|
@simple_db_mock.should_receive(:select).
|
22
33
|
with("select * from stacks where itemName() = 'stack-to-find-us-west-1'").
|
23
34
|
and_return('stack-to-find' => { 'attr1' => 'value1' })
|
24
35
|
Stackster::Entry.find :name => 'stack-to-find',
|
25
|
-
:config =>
|
36
|
+
:config => config
|
26
37
|
end
|
27
38
|
|
28
39
|
context "with stack object" do
|
29
40
|
before do
|
30
|
-
@config = Stackster::Config.new
|
41
|
+
@config = Stackster::Config.new(:config => { 'access_key' => 'the-key',
|
42
|
+
'secret_key' => 'secret',
|
43
|
+
'region' => 'us-west-1' })
|
31
44
|
@simple_db_mock = mock 'simple db'
|
32
45
|
Stackster::AWS::SimpleDB.should_receive(:new).and_return @simple_db_mock
|
46
|
+
@simple_db_mock.should_receive(:create_domain).
|
47
|
+
with("stacks").
|
48
|
+
and_return true
|
33
49
|
@simple_db_mock.should_receive(:select).
|
34
50
|
with("select * from stacks where itemName() = 'test-stack-us-west-1'").
|
35
51
|
and_return('test-stack' => { 'attr1' => 'value1' })
|
@@ -42,7 +58,6 @@ describe Stackster do
|
|
42
58
|
end
|
43
59
|
|
44
60
|
it "should set the attributes in simple db" do
|
45
|
-
@simple_db_mock.should_receive(:create_domain).with('stacks')
|
46
61
|
@simple_db_mock.should_receive(:put_attributes).
|
47
62
|
with("stacks", "test-stack-us-west-1", {"key"=>"value"}, {:replace=>"key"})
|
48
63
|
@entry.attributes = {"key"=>"value"}
|
@@ -38,7 +38,9 @@ describe Stackster do
|
|
38
38
|
|
39
39
|
it "should list running instance within the given stack" do
|
40
40
|
@ec2_mock = mock 'simple ec2'
|
41
|
-
config = Stackster::Config.new
|
41
|
+
config = Stackster::Config.new(:config => { 'access_key' => 'the-key',
|
42
|
+
'secret_key' => 'secret',
|
43
|
+
'region' => 'us-west-1' })
|
42
44
|
Stackster::AWS::EC2.should_receive(:new).
|
43
45
|
with(:config => config).
|
44
46
|
and_return @ec2_mock
|
@@ -51,7 +53,9 @@ describe Stackster do
|
|
51
53
|
|
52
54
|
it "should not include instances which are in different stacks" do
|
53
55
|
@ec2_mock = mock 'simple ec2'
|
54
|
-
config = Stackster::Config.new
|
56
|
+
config = Stackster::Config.new(:config => { 'access_key' => 'the-key',
|
57
|
+
'secret_key' => 'secret',
|
58
|
+
'region' => 'us-west-1' })
|
55
59
|
Stackster::AWS::EC2.should_receive(:new).
|
56
60
|
with(:config => config).
|
57
61
|
and_return @ec2_mock
|
@@ -64,7 +68,9 @@ describe Stackster do
|
|
64
68
|
|
65
69
|
it "should not include instances which are not running" do
|
66
70
|
@ec2_mock = mock 'simple ec2'
|
67
|
-
config = Stackster::Config.new
|
71
|
+
config = Stackster::Config.new(:config => { 'access_key' => 'the-key',
|
72
|
+
'secret_key' => 'secret',
|
73
|
+
'region' => 'us-west-1' })
|
68
74
|
Stackster::AWS::EC2.should_receive(:new).
|
69
75
|
with(:config => config).
|
70
76
|
and_return @ec2_mock
|
data/spec/stack_spec.rb
CHANGED
@@ -11,6 +11,18 @@ describe Stackster do
|
|
11
11
|
stack.class.should == Stackster::Stack
|
12
12
|
end
|
13
13
|
|
14
|
+
it "create a new stack object with the given config" do
|
15
|
+
config_mock = mock 'config mock'
|
16
|
+
Stackster::Config.should_receive(:new).with(:config => 'test-config',
|
17
|
+
:logger => nil).
|
18
|
+
and_return config_mock
|
19
|
+
Stackster::Entry.should_receive(:new).with :name => 'test-stack',
|
20
|
+
:config => config_mock
|
21
|
+
stack = Stackster::Stack.new :name => 'test-stack',
|
22
|
+
:config => 'test-config'
|
23
|
+
stack.class.should == Stackster::Stack
|
24
|
+
end
|
25
|
+
|
14
26
|
describe "mocking a stack object" do
|
15
27
|
before do
|
16
28
|
@config_mock = mock 'config mock'
|
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.2.
|
4
|
+
version: 0.2.1
|
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: 2012-06
|
12
|
+
date: 2012-07-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70363884608660 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70363884608660
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: fog
|
27
|
-
requirement: &
|
27
|
+
requirement: &70363884608240 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70363884608240
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: logger
|
38
|
-
requirement: &
|
38
|
+
requirement: &70363884607440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70363884607440
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: trollop
|
49
|
-
requirement: &
|
49
|
+
requirement: &70363884606980 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70363884606980
|
58
58
|
description: Thats what I do
|
59
59
|
email:
|
60
60
|
- brett@weav.net
|
@@ -121,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
121
|
version: '0'
|
122
122
|
segments:
|
123
123
|
- 0
|
124
|
-
hash: -
|
124
|
+
hash: -2901257085239672570
|
125
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
126
|
none: false
|
127
127
|
requirements:
|
@@ -130,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '0'
|
131
131
|
segments:
|
132
132
|
- 0
|
133
|
-
hash: -
|
133
|
+
hash: -2901257085239672570
|
134
134
|
requirements: []
|
135
135
|
rubyforge_project: stackster
|
136
136
|
rubygems_version: 1.8.16
|