stackster 0.0.3 → 0.0.4

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.
@@ -12,11 +12,19 @@ module Stackster
12
12
  end
13
13
 
14
14
  def create(args)
15
+ parameters = { 'Parameters' => args[:parameters] }
15
16
  data = { 'Capabilities' => ['CAPABILITY_IAM'],
16
- 'TemplateBody' => args[:template] }.merge( { 'Parameters' => args[:parameters] } )
17
+ 'TemplateBody' => args[:template] }.merge parameters
17
18
  @connect.create_stack(args[:name], data)
18
19
  end
19
20
 
21
+ def update(args)
22
+ parameters = { 'Parameters' => args[:parameters] }
23
+ data = { 'Capabilities' => ['CAPABILITY_IAM'],
24
+ 'TemplateBody' => args[:template] }.merge parameters
25
+ @connect.update_stack(args[:name], data)
26
+ end
27
+
20
28
  def destroy(name)
21
29
  @connect.delete_stack name
22
30
  end
@@ -7,7 +7,7 @@ module Stackster
7
7
  @config = args[:config]
8
8
  @entry = args[:entry]
9
9
  @name = args[:name]
10
- @template = read_template_from_file args[:template]
10
+ @template = read_template_from_file args[:template_file]
11
11
  @cf = AWS::CloudFormation.new :config => @config
12
12
  end
13
13
 
@@ -17,7 +17,7 @@ module Stackster
17
17
  end
18
18
 
19
19
  def read_parameters_from_template
20
- t = JSON.parse(@template)
20
+ t = JSON.parse @template
21
21
  t['Paramaters'].nil? ? t['Parameters'].keys : []
22
22
  end
23
23
 
@@ -0,0 +1,34 @@
1
+ require 'json'
2
+
3
+ module Stackster
4
+ class StackUpdater
5
+
6
+ def initialize(args)
7
+ @config = args[:config]
8
+ @entry = args[:entry]
9
+ @name = args[:name]
10
+ @template_body = args[:template_body]
11
+ @cf = AWS::CloudFormation.new :config => @config
12
+ end
13
+
14
+ def update
15
+ @cf.update :name => @name,
16
+ :parameters => read_parameters_from_entry,
17
+ :template => @template_body
18
+ end
19
+
20
+ def read_parameters_from_entry
21
+ h = {}
22
+ read_parameters_from_template.each do |p|
23
+ h[p] = @entry.attributes[p] if @entry.attributes[p]
24
+ end
25
+ h
26
+ end
27
+
28
+ def read_parameters_from_template
29
+ t = JSON.parse @template_body
30
+ t['Paramaters'].nil? ? t['Parameters'].keys : []
31
+ end
32
+
33
+ end
34
+ end
@@ -1,4 +1,5 @@
1
1
  require 'stackster/stack/stack_creater'
2
+ require 'stackster/stack/stack_updater'
2
3
  require 'stackster/stack/stack_destroyer'
3
4
  require 'stackster/stack/stack_reader'
4
5
  require 'stackster/stack/stack_formater'
@@ -20,15 +21,17 @@ module Stackster
20
21
  end
21
22
 
22
23
  def create(args)
23
- @template = args[:template]
24
+ @template_file = args[:template]
24
25
  @entry.set_attributes args[:attributes]
25
26
  @entry.save
26
27
  stack_creater.create
27
28
  end
28
29
 
29
30
  def update(args)
31
+ @template_body = template
30
32
  @entry.set_attributes args[:attributes]
31
33
  @entry.save
34
+ stack_updater.update
32
35
  end
33
36
 
34
37
  def destroy
@@ -79,19 +82,26 @@ module Stackster
79
82
  private
80
83
 
81
84
  def stack_creater
82
- @stack_creater ||= StackCreater.new :name => @name,
83
- :entry => @entry,
84
- :template => @template,
85
- :config => @config
85
+ @stack_creater ||= StackCreater.new :name => @name,
86
+ :entry => @entry,
87
+ :template_file => @template_file,
88
+ :config => @config
89
+ end
90
+
91
+ def stack_updater
92
+ @stack_updater ||= StackUpdater.new :name => @name,
93
+ :entry => @entry,
94
+ :template_body => @template_body,
95
+ :config => @config
86
96
  end
87
97
 
88
98
  def stack_destroyer
89
- @stack_destroyer ||= StackDestroyer.new :name => @name,
99
+ @stack_destroyer ||= StackDestroyer.new :name => @name,
90
100
  :config => @config
91
101
  end
92
102
 
93
103
  def stack_reader
94
- @stack_reader ||= StackReader.new :name => @name,
104
+ @stack_reader ||= StackReader.new :name => @name,
95
105
  :config => @config
96
106
  end
97
107
 
@@ -1,3 +1,3 @@
1
1
  module Stackster
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/script/ci_setup ADDED
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+
3
+ # Source RVM profile and set ruby / gemset
4
+ . /etc/profile
5
+ rvm use "1.9.3-p125@stackster" --create
6
+
7
+ # Bundle gems
8
+ bundle
9
+
10
+ # Create blank deployment config
11
+ touch $HOME/.stackster.yml
12
+
13
+ # Run spec tests
14
+ rspec spec
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.0.3
4
+ version: 0.0.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: 2012-06-13 00:00:00.000000000 Z
12
+ date: 2012-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70184879147220 !ruby/object:Gem::Requirement
16
+ requirement: &70167959294400 !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: *70184879147220
24
+ version_requirements: *70167959294400
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: fog
27
- requirement: &70184879146560 !ruby/object:Gem::Requirement
27
+ requirement: &70167959293840 !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: *70184879146560
35
+ version_requirements: *70167959293840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: trollop
38
- requirement: &70184879145980 !ruby/object:Gem::Requirement
38
+ requirement: &70167959293260 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70184879145980
46
+ version_requirements: *70167959293260
47
47
  description: Thats what I do
48
48
  email:
49
49
  - brett@weav.net
@@ -73,7 +73,9 @@ files:
73
73
  - lib/stackster/stack/stack_formater.rb
74
74
  - lib/stackster/stack/stack_lister.rb
75
75
  - lib/stackster/stack/stack_reader.rb
76
+ - lib/stackster/stack/stack_updater.rb
76
77
  - lib/stackster/version.rb
78
+ - script/ci_setup
77
79
  - spec/config_spec.rb
78
80
  - spec/spec_helper.rb
79
81
  - stackster.gemspec
@@ -91,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
91
93
  version: '0'
92
94
  segments:
93
95
  - 0
94
- hash: -4572547021873888246
96
+ hash: -636613462525383174
95
97
  required_rubygems_version: !ruby/object:Gem::Requirement
96
98
  none: false
97
99
  requirements:
@@ -100,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
102
  version: '0'
101
103
  segments:
102
104
  - 0
103
- hash: -4572547021873888246
105
+ hash: -636613462525383174
104
106
  requirements: []
105
107
  rubyforge_project: stackster
106
108
  rubygems_version: 1.8.16