stackster 0.0.1 → 0.0.2

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.
@@ -41,6 +41,10 @@ module Stackster
41
41
  describe_stack(name).last['Outputs']
42
42
  end
43
43
 
44
+ def template(name)
45
+ @connect.get_template(name)
46
+ end
47
+
44
48
  end
45
49
  end
46
50
  end
data/lib/stackster/cli.rb CHANGED
@@ -16,27 +16,35 @@ EOS
16
16
 
17
17
  @cmd = ARGV.shift
18
18
 
19
- unless Config.environments.include? @opts[:environment]
20
- puts "Please specify a valid environment: #{Config.environments.to_s}"
21
- exit 1
19
+ case @cmd
20
+ when 'create', 'destroy', 'delete', 'list', 'update'
21
+ unless EnvironmentLister.all.include? @opts[:environment]
22
+ puts "Please specify a valid environment: #{EnvironmentLister.all}"
23
+ exit 1
24
+ end
25
+ @s = Stack.new :environment => @opts[:environment],
26
+ :name => @opts[:name]
22
27
  end
23
28
 
24
- s = Stack.new :environment => @opts[:environment],
25
- :name => @opts[:name]
26
29
  read_attributes
27
30
 
28
31
  case @cmd
29
32
  when 'create'
30
- s.create :attributes => attributes,
31
- :template => @opts[:template]
33
+ @s.create :attributes => attributes,
34
+ :template => @opts[:template]
32
35
  puts "#{@opts[:name]} created."
36
+ when 'update'
37
+ @s.update :attributes => attributes
38
+ puts "#{@opts[:name]} updated."
33
39
  when 'destroy', 'delete'
34
- s.destroy
40
+ @s.destroy
35
41
  puts "#{@opts[:name]} destroyed."
42
+ when 'environments'
43
+ puts EnvironmentLister.all
36
44
  when 'show'
37
45
  sf = StackFormater.new :environment => @opts[:environment],
38
46
  :name => @opts[:name]
39
- puts sf.display_short.to_yaml
47
+ puts sf.display.to_yaml
40
48
  when 'list'
41
49
  s = StackLister.new @opts[:environment]
42
50
  puts s.all
@@ -8,7 +8,14 @@ module Stackster
8
8
  end
9
9
 
10
10
  def all
11
- @sdb_connect.select "select * from #{@domain}"
11
+ entries = @sdb_connect.select "select * from #{@domain}"
12
+ entries.keys.map do |name|
13
+ remove_region_from_entry(name)
14
+ end
15
+ end
16
+
17
+ def remove_region_from_entry(name)
18
+ name.gsub(/-[a-z]{2}-[a-z]*-[0-9]{1,2}$/, '')
12
19
  end
13
20
 
14
21
  end
@@ -0,0 +1,9 @@
1
+ module Stackster
2
+ class EnvironmentLister
3
+
4
+ def self.all
5
+ Config.environments
6
+ end
7
+
8
+ end
9
+ end
@@ -0,0 +1 @@
1
+ require 'stackster/environment/environment_lister'
@@ -6,13 +6,13 @@ module Stackster
6
6
  :environment => args[:environment]
7
7
  end
8
8
 
9
- def display_short
9
+ def display
10
10
  {
11
11
  'attributes' => @sr.attributes,
12
12
  'status' => @sr.status,
13
13
  'outputs' => @sr.outputs,
14
- 'last_event' => events_summary.first,
15
- 'resources' => resources_summary,
14
+ 'events' => @sr.events,
15
+ 'resources' => @sr.resources,
16
16
  'instances' => instances_public_ip_addresses
17
17
  }
18
18
  end
@@ -21,6 +21,14 @@ module Stackster
21
21
  @sr.instances.map { |i| i['instancesSet'].first['ipAddress'] }
22
22
  end
23
23
 
24
+ def attribute_names
25
+ attributes.keys
26
+ end
27
+
28
+ def attributes
29
+ @sr.attributes
30
+ end
31
+
24
32
  def resources_summary
25
33
  @sr.resources.map do |i|
26
34
  { 'LogicalResourceId' => i['LogicalResourceId'],
@@ -8,7 +8,7 @@ module Stackster
8
8
 
9
9
  def all
10
10
  e = EntryLister.new @environment
11
- e.all.keys
11
+ e.all
12
12
  end
13
13
 
14
14
  end
@@ -29,6 +29,10 @@ module Stackster
29
29
  @cf.stack_resources @name
30
30
  end
31
31
 
32
+ def template
33
+ @cf.template @name
34
+ end
35
+
32
36
  def last_event
33
37
  events.first
34
38
  end
@@ -25,6 +25,17 @@ module Stackster
25
25
  s.create
26
26
  end
27
27
 
28
+ def show
29
+ s = StackReader.new :name => @name,
30
+ :environment => @environment
31
+ s.show
32
+ end
33
+
34
+ def update(args)
35
+ @entry.set_attributes args[:attributes]
36
+ @entry.save
37
+ end
38
+
28
39
  def destroy
29
40
  s = StackDestroyer.new :name => @name,
30
41
  :environment => @environment
@@ -32,11 +43,5 @@ module Stackster
32
43
  @entry.delete_attributes
33
44
  end
34
45
 
35
- def show
36
- s = StackReader.new :name => @name,
37
- :environment => @environment
38
- s.show
39
- end
40
-
41
46
  end
42
47
  end
@@ -1,3 +1,3 @@
1
1
  module Stackster
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/stackster.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "stackster/aws"
2
2
  require "stackster/entry"
3
+ require "stackster/environment"
3
4
  require "stackster/stack"
4
5
  require "stackster/instance"
5
6
  require "stackster/config"
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.1
4
+ version: 0.0.2
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-11 00:00:00.000000000 Z
12
+ date: 2012-06-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
16
- requirement: &70312936224120 !ruby/object:Gem::Requirement
16
+ requirement: &70121554327040 !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: :runtime
23
23
  prerelease: false
24
- version_requirements: *70312936224120
24
+ version_requirements: *70121554327040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: trollop
27
- requirement: &70312936223700 !ruby/object:Gem::Requirement
27
+ requirement: &70121554326620 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70312936223700
35
+ version_requirements: *70121554326620
36
36
  description: Thats what I do
37
37
  email:
38
38
  - brett@weav.net
@@ -54,6 +54,8 @@ files:
54
54
  - lib/stackster/config.rb
55
55
  - lib/stackster/entry.rb
56
56
  - lib/stackster/entry/entry_lister.rb
57
+ - lib/stackster/environment.rb
58
+ - lib/stackster/environment/environment_lister.rb
57
59
  - lib/stackster/instance.rb
58
60
  - lib/stackster/instance/instance_reader.rb
59
61
  - lib/stackster/stack.rb
@@ -78,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
80
  version: '0'
79
81
  segments:
80
82
  - 0
81
- hash: -4027145731470457093
83
+ hash: -2367294800001160910
82
84
  required_rubygems_version: !ruby/object:Gem::Requirement
83
85
  none: false
84
86
  requirements:
@@ -87,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
89
  version: '0'
88
90
  segments:
89
91
  - 0
90
- hash: -4027145731470457093
92
+ hash: -2367294800001160910
91
93
  requirements: []
92
94
  rubyforge_project: stackster
93
95
  rubygems_version: 1.8.16