stackster 0.0.3 → 0.0.4

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