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 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, "CSV list of = seperated attributes to set", :type => :strings
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
@@ -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
@@ -2,7 +2,7 @@ module Stackster
2
2
  class StackLister
3
3
 
4
4
  def initialize(args = {})
5
- @config = args[:config] ||= Config.new
5
+ @config = Config.new(:config => args[:config])
6
6
  end
7
7
 
8
8
  def all
@@ -1,3 +1,3 @@
1
1
  module Stackster
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
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 = Stackster::Config.new
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 => Stackster::Config.new
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
@@ -6,7 +6,6 @@ describe Stackster do
6
6
  config_mock = mock 'config mock'
7
7
  entry_lister_mock = mock 'entry lister mock'
8
8
  Stackster::EntryLister.should_receive(:new).
9
- with(:config => config_mock).
10
9
  and_return entry_lister_mock
11
10
  entry_lister_mock.should_receive(:all)
12
11
 
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.0
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-25 00:00:00.000000000 Z
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: &70115631981100 !ruby/object:Gem::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: *70115631981100
24
+ version_requirements: *70363884608660
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: fog
27
- requirement: &70115631980080 !ruby/object:Gem::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: *70115631980080
35
+ version_requirements: *70363884608240
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: logger
38
- requirement: &70115631979060 !ruby/object:Gem::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: *70115631979060
46
+ version_requirements: *70363884607440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: trollop
49
- requirement: &70115631978360 !ruby/object:Gem::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: *70115631978360
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: -3503830738136148484
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: -3503830738136148484
133
+ hash: -2901257085239672570
134
134
  requirements: []
135
135
  rubyforge_project: stackster
136
136
  rubygems_version: 1.8.16