stackster 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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