stackster 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ rvm:
2
+ - 1.9.2
3
+ - 1.9.3
4
+ script: "rake spec"
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ ## v0.3.2
2
+
3
+ * Removed the logger gem dependency
4
+ * Refactored attributes handling so it refreshes them from simpledb each time they are requested
5
+
1
6
  ## v0.3.1
2
7
 
3
8
  * Fixed the CreatedAt value in simpledb by storing it as a string
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://secure.travis-ci.org/intuit/stackster.png)](http://travis-ci.org/intuit/stackster)
2
+
1
3
  I help deploy Stacks into Cloud Formation. I save data about them in SimpleDB.
2
4
 
3
5
  Getting Started
@@ -2,15 +2,15 @@ require 'stackster/entry/entry_lister'
2
2
 
3
3
  module Stackster
4
4
  class Entry
5
- attr_accessor :name, :attributes
5
+ attr_accessor :name
6
6
 
7
7
  def initialize(args)
8
8
  @domain = 'stacks'
9
9
  @config = args[:config]
10
10
  @logger = @config.logger
11
+ @custom_attributes = {}
11
12
  self.name = region_specific_name args[:name]
12
13
  create_domain
13
- get_attributes
14
14
  end
15
15
 
16
16
  def self.find(args)
@@ -19,21 +19,33 @@ module Stackster
19
19
  entry
20
20
  end
21
21
 
22
+ def attributes
23
+ u = {}
24
+
25
+ attrs = sdb_connect.select "select * from stacks where itemName() = '#{name}'"
26
+ if attrs.has_key? name
27
+ u.merge! Hash[attrs[name].map { |k,v| [k, v.first] }]
28
+ end
29
+
30
+ u.merge @custom_attributes
31
+ end
32
+
22
33
  def set_attributes(a)
23
34
  a.each { |attribute| set_attribute(attribute) }
24
35
  end
25
36
 
26
37
  def save
27
38
  set_default_attributes
39
+ current_attributes = attributes
28
40
 
29
- attributes.each_pair do |key,value|
41
+ current_attributes.each_pair do |key,value|
30
42
  @logger.debug "Setting attribute #{key}=#{value}"
31
43
  end
32
44
 
33
45
  sdb_connect.put_attributes('stacks',
34
46
  name,
35
- attributes,
36
- :replace => attributes.keys )
47
+ current_attributes,
48
+ :replace => current_attributes.keys )
37
49
 
38
50
  @logger.debug "Save to SimpleDB successful."
39
51
  end
@@ -46,17 +58,8 @@ module Stackster
46
58
  private
47
59
 
48
60
  def set_default_attributes
49
- attributes.merge!('Name' => name)
50
- attributes.merge!('CreatedAt' => Time.now.utc.to_s)
51
- end
52
-
53
- def get_attributes
54
- u = {}
55
- attrs = sdb_connect.select "select * from stacks where itemName() = '#{name}'"
56
- if attrs[name]
57
- attrs[name].each_pair { |k, v| u[k] = v.first }
58
- end
59
- self.attributes = u
61
+ @custom_attributes.merge! 'Name' => name
62
+ @custom_attributes.merge! 'CreatedAt' => Time.now.utc.to_s
60
63
  end
61
64
 
62
65
  def region_specific_name(name)
@@ -68,12 +71,12 @@ module Stackster
68
71
  end
69
72
 
70
73
  def set_attribute(attribute)
71
- self.attributes = attributes.merge(attribute)
74
+ @custom_attributes.merge! attribute
72
75
  end
73
76
 
74
77
  def sdb_connect
75
78
  @sdb_connect ||= AWS::SimpleDB.new :config => @config
76
79
  end
77
-
78
80
  end
81
+
79
82
  end
@@ -1,3 +1,3 @@
1
1
  module Stackster
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/spec/entry_spec.rb CHANGED
@@ -11,9 +11,6 @@ describe Stackster do
11
11
  @simple_db_mock.should_receive(:create_domain).
12
12
  with("stacks").
13
13
  and_return true
14
- @simple_db_mock.should_receive(:select).
15
- with("select * from stacks where itemName() = 'test-stack-us-west-1'").
16
- and_return('stack-to-find' => { 'attr1' => 'value1' })
17
14
  entry = Stackster::Entry.new :config => config,
18
15
  :name => 'test-stack'
19
16
  entry.class.should == Stackster::Entry
@@ -29,9 +26,6 @@ describe Stackster do
29
26
  @simple_db_mock.should_receive(:create_domain).
30
27
  with("stacks").
31
28
  and_return true
32
- @simple_db_mock.should_receive(:select).
33
- with("select * from stacks where itemName() = 'stack-to-find-us-west-1'").
34
- and_return('stack-to-find' => { 'attr1' => 'value1' })
35
29
  Stackster::Entry.find :name => 'stack-to-find',
36
30
  :config => config
37
31
  end
@@ -46,9 +40,6 @@ describe Stackster do
46
40
  @simple_db_mock.should_receive(:create_domain).
47
41
  with("stacks").
48
42
  and_return true
49
- @simple_db_mock.should_receive(:select).
50
- with("select * from stacks where itemName() = 'test-stack-us-west-1'").
51
- and_return('test-stack' => { 'attr1' => 'value1' })
52
43
  @entry = Stackster::Entry.new :config => @config,
53
44
  :name => 'test-stack'
54
45
  end
@@ -60,22 +51,30 @@ describe Stackster do
60
51
  it "should set the attributes in simple db including default attributes" do
61
52
  Timecop.travel Time.utc(2012, 10, 22, 13, 30)
62
53
 
54
+ @simple_db_mock.should_receive(:select).
55
+ with("select * from stacks where itemName() = 'test-stack-us-west-1'").
56
+ and_return('test-stack-us-west-1' => { 'key1' => ['value1'] })
63
57
  @simple_db_mock.should_receive(:put_attributes).
64
58
  with("stacks",
65
59
  "test-stack-us-west-1",
66
- { "key" => "value", "Name" => "test-stack-us-west-1", "CreatedAt" => "2012-10-22 13:30:00 UTC" },
67
- { :replace => ["key", "Name", "CreatedAt"] } )
68
- @entry.attributes = {"key"=>"value"}
60
+ { "key" => "value",
61
+ "key1" => "value1",
62
+ "Name" => "test-stack-us-west-1",
63
+ "CreatedAt" => "2012-10-22 13:30:00 UTC" },
64
+ { :replace => ["key1", "key", "Name", "CreatedAt"] } )
65
+ @entry.set_attributes(['key' => 'value'])
69
66
 
70
67
  @entry.save
71
68
  end
72
69
 
73
- it "should set the attributes" do
74
- @entry.attributes = {'key1' => 'value1' }
75
- @entry.set_attributes(['key2' => 'value2'])
76
- @entry.attributes.should == {'key1' => 'value1', 'key2' => 'value2' }
77
- end
70
+ it "should merge custom attributes" do
71
+ @simple_db_mock.should_receive(:select).
72
+ with("select * from stacks where itemName() = 'test-stack-us-west-1'").
73
+ and_return('test-stack' => { 'key1' => ['value1'] })
74
+ @entry.set_attributes(['key1' => 'value2'])
78
75
 
76
+ @entry.attributes.should == {'key1' => 'value2' }
77
+ end
79
78
  end
80
79
 
81
80
  end
data/stackster.gemspec CHANGED
@@ -19,12 +19,12 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  # specify any dependencies here; for example:
22
- s.add_development_dependency "rspec"
23
- s.add_development_dependency "simplecov"
24
- s.add_development_dependency "timecop"
22
+ s.add_development_dependency "rake"
23
+ s.add_development_dependency "rspec", "~> 2.11.0"
24
+ s.add_development_dependency "simplecov", "~> 0.6.4"
25
+ s.add_development_dependency "timecop", "~> 0.5.3"
25
26
 
26
- s.add_runtime_dependency "fog"
27
- s.add_runtime_dependency 'logger'
28
- s.add_runtime_dependency "trollop"
29
- s.add_runtime_dependency "xml-simple"
27
+ s.add_runtime_dependency "fog", "= 1.6.0"
28
+ s.add_runtime_dependency "trollop", "= 2.0"
29
+ s.add_runtime_dependency "xml-simple", "= 1.1.2"
30
30
  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.3.1
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-26 00:00:00.000000000 Z
12
+ date: 2012-11-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rspec
15
+ name: rake
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
@@ -28,101 +28,101 @@ dependencies:
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
30
  - !ruby/object:Gem::Dependency
31
- name: simplecov
31
+ name: rspec
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - ! '>='
35
+ - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: '0'
37
+ version: 2.11.0
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ! '>='
43
+ - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: '0'
45
+ version: 2.11.0
46
46
  - !ruby/object:Gem::Dependency
47
- name: timecop
47
+ name: simplecov
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
- - - ! '>='
51
+ - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: 0.6.4
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ! '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 0.6.4
62
62
  - !ruby/object:Gem::Dependency
63
- name: fog
63
+ name: timecop
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - ! '>='
67
+ - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :runtime
69
+ version: 0.5.3
70
+ type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
- - - ! '>='
75
+ - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: '0'
77
+ version: 0.5.3
78
78
  - !ruby/object:Gem::Dependency
79
- name: logger
79
+ name: fog
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
- - - ! '>='
83
+ - - '='
84
84
  - !ruby/object:Gem::Version
85
- version: '0'
85
+ version: 1.6.0
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
- - - ! '>='
91
+ - - '='
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: 1.6.0
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: trollop
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
- - - ! '>='
99
+ - - '='
100
100
  - !ruby/object:Gem::Version
101
- version: '0'
101
+ version: '2.0'
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
- - - ! '>='
107
+ - - '='
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: '2.0'
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: xml-simple
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
115
- - - ! '>='
115
+ - - '='
116
116
  - !ruby/object:Gem::Version
117
- version: '0'
117
+ version: 1.1.2
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  none: false
122
122
  requirements:
123
- - - ! '>='
123
+ - - '='
124
124
  - !ruby/object:Gem::Version
125
- version: '0'
125
+ version: 1.1.2
126
126
  description: Thats what I do
127
127
  email:
128
128
  - brett@weav.net
@@ -133,6 +133,7 @@ extra_rdoc_files: []
133
133
  files:
134
134
  - .gitignore
135
135
  - .rvmrc
136
+ - .travis.yml
136
137
  - CHANGELOG
137
138
  - Gemfile
138
139
  - LICENSE
@@ -161,7 +162,6 @@ files:
161
162
  - lib/stackster/stack/stack_updater.rb
162
163
  - lib/stackster/stack/status.rb
163
164
  - lib/stackster/version.rb
164
- - script/ci_setup
165
165
  - spec/aws/cloud_formation/error_spec.rb
166
166
  - spec/aws/cloud_formation_spec.rb
167
167
  - spec/aws/ec2_spec.rb
@@ -193,12 +193,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
193
  - - ! '>='
194
194
  - !ruby/object:Gem::Version
195
195
  version: '0'
196
+ segments:
197
+ - 0
198
+ hash: -3770927478865725038
196
199
  required_rubygems_version: !ruby/object:Gem::Requirement
197
200
  none: false
198
201
  requirements:
199
202
  - - ! '>='
200
203
  - !ruby/object:Gem::Version
201
204
  version: '0'
205
+ segments:
206
+ - 0
207
+ hash: -3770927478865725038
202
208
  requirements: []
203
209
  rubyforge_project: stackster
204
210
  rubygems_version: 1.8.24
data/script/ci_setup DELETED
@@ -1,16 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Source RVM profile and set ruby / gemset
4
- . /etc/profile
5
-
6
- # Use stackster gemset
7
- rvm use "1.9.3-p194@stackster" --create
8
-
9
- # Exit with error if any command returns non zero
10
- set -e
11
-
12
- # Bundle gems
13
- bundle
14
-
15
- # Run spec tests
16
- rake spec