stackster 0.0.1 → 0.0.2

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