blimpy 0.2.0 → 0.2.1
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.
- data/lib/blimpy/box.rb +9 -7
- data/lib/blimpy/cli.rb +37 -7
- data/lib/blimpy/fleet.rb +7 -7
- data/lib/blimpy/version.rb +1 -1
- data/spec/blimpy/engine_spec.rb +11 -12
- data/spec/blimpy/fleet_spec.rb +4 -4
- metadata +7 -7
data/lib/blimpy/box.rb
CHANGED
@@ -12,16 +12,18 @@ module Blimpy
|
|
12
12
|
DEFAULT_IMAGE_ID = 'ami-ec0b86dc'
|
13
13
|
|
14
14
|
attr_reader :allowed_regions, :region
|
15
|
-
attr_accessor :image_id, :livery, :group
|
15
|
+
attr_accessor :image_id, :livery, :group, :server
|
16
16
|
attr_accessor :name, :tags, :fleet_id, :username
|
17
17
|
|
18
|
-
def self.
|
19
|
-
region =
|
18
|
+
def self.fog_server_for_instance(id, blimpdata)
|
19
|
+
region = blimpdata['region'] || DEFAULT_REGION
|
20
20
|
fog = Fog::Compute.new(:provider => 'AWS', :region => region)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
fog.servers.get(id)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.from_instance_id(an_id, data)
|
25
|
+
server = self.fog_server_for_instance(an_id, data)
|
26
|
+
return if server.nil?
|
25
27
|
box = self.new(server)
|
26
28
|
box.name = data['name']
|
27
29
|
box
|
data/lib/blimpy/cli.rb
CHANGED
@@ -16,13 +16,33 @@ module Blimpy
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
def load_engine
|
20
|
+
engine = Blimpy::Engine.new
|
21
|
+
engine.load_file(File.open(BLIMPFILE).read)
|
22
|
+
engine
|
23
|
+
end
|
24
|
+
|
25
|
+
|
19
26
|
def box_by_name(name)
|
20
|
-
|
27
|
+
engine = load_engine
|
21
28
|
box = nil
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
29
|
+
id = nil
|
30
|
+
data = nil
|
31
|
+
engine.fleet.members.each do |instance_id, instance_data|
|
32
|
+
next unless instance_data['name'] == name
|
33
|
+
id = instance_id
|
34
|
+
data = instance_data
|
35
|
+
break
|
36
|
+
end
|
37
|
+
|
38
|
+
if id.nil?
|
39
|
+
return nil
|
40
|
+
end
|
41
|
+
|
42
|
+
engine.fleet.ships.each do |ship|
|
43
|
+
next unless ship.name == name
|
44
|
+
ship.server = Blimpy::Box.fog_server_for_instance(id, data)
|
45
|
+
box = ship
|
26
46
|
end
|
27
47
|
box
|
28
48
|
end
|
@@ -32,8 +52,7 @@ module Blimpy
|
|
32
52
|
method_options :"dry-run" => :boolean
|
33
53
|
def start
|
34
54
|
ensure_blimpfile
|
35
|
-
engine =
|
36
|
-
engine.load_file(File.open(BLIMPFILE).read)
|
55
|
+
engine = load_engine
|
37
56
|
puts 'Up, up and away!'
|
38
57
|
|
39
58
|
if options[:'dry-run']
|
@@ -115,5 +134,16 @@ end
|
|
115
134
|
box.wait_for_sshd
|
116
135
|
box.scp_file(filename)
|
117
136
|
end
|
137
|
+
|
138
|
+
desc 'provision BLIMP_NAME', 'Run the livery again'
|
139
|
+
def provision(name=nil)
|
140
|
+
ensure_blimpfile
|
141
|
+
box = box_by_name(name)
|
142
|
+
if box.nil?
|
143
|
+
puts "Could not find a blimp named \"#{name}\""
|
144
|
+
exit 1
|
145
|
+
end
|
146
|
+
box.bootstrap
|
147
|
+
end
|
118
148
|
end
|
119
149
|
end
|
data/lib/blimpy/fleet.rb
CHANGED
@@ -4,10 +4,10 @@ module Blimpy
|
|
4
4
|
class Fleet
|
5
5
|
include Blimpy::Helpers::State
|
6
6
|
|
7
|
-
attr_reader :
|
7
|
+
attr_reader :ships, :id
|
8
8
|
|
9
9
|
def initialize
|
10
|
-
@
|
10
|
+
@ships = []
|
11
11
|
@id = Time.now.utc.to_i
|
12
12
|
end
|
13
13
|
|
@@ -17,7 +17,7 @@ module Blimpy
|
|
17
17
|
end
|
18
18
|
box = Blimpy::Box.new
|
19
19
|
box.fleet_id = @id
|
20
|
-
@
|
20
|
+
@ships << box
|
21
21
|
block.call(box)
|
22
22
|
end
|
23
23
|
|
@@ -53,18 +53,18 @@ module Blimpy
|
|
53
53
|
return resume(instances)
|
54
54
|
end
|
55
55
|
|
56
|
-
# Make sure all our
|
57
|
-
@
|
56
|
+
# Make sure all our ships are valid first!
|
57
|
+
@ships.each do |host|
|
58
58
|
host.validate!
|
59
59
|
end
|
60
60
|
|
61
61
|
puts '>> Starting:'
|
62
|
-
@
|
62
|
+
@ships.each do |host|
|
63
63
|
puts "..#{host.name}"
|
64
64
|
host.start
|
65
65
|
end
|
66
66
|
|
67
|
-
@
|
67
|
+
@ships.each do |host|
|
68
68
|
print ">> #{host.name} "
|
69
69
|
host.wait_for_state('running') { print '.' }
|
70
70
|
print ".. online at: #{host.dns_name}"
|
data/lib/blimpy/version.rb
CHANGED
data/spec/blimpy/engine_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Blimpy::Engine do
|
4
|
-
|
5
4
|
describe '#load_file' do
|
6
5
|
context 'no contents' do
|
7
6
|
let(:content) { '' }
|
@@ -32,12 +31,12 @@ describe Blimpy::Engine do
|
|
32
31
|
let(:content) do
|
33
32
|
"""
|
34
33
|
Blimpy.fleet do |fleet|
|
35
|
-
fleet.add do |
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
34
|
+
fleet.add do |ship|
|
35
|
+
ship.image_id = 'ami-349b495d'
|
36
|
+
ship.livery = 'rails'
|
37
|
+
ship.group = 'Simple'
|
38
|
+
ship.region = 'us-west-1'
|
39
|
+
ship.name = 'Rails App Server'
|
41
40
|
end
|
42
41
|
end
|
43
42
|
"""
|
@@ -46,12 +45,12 @@ describe Blimpy::Engine do
|
|
46
45
|
it 'should create the appropriate Fleet object' do
|
47
46
|
result = subject.load_file(content)
|
48
47
|
result.should be_instance_of Blimpy::Fleet
|
49
|
-
result.
|
50
|
-
result.
|
48
|
+
result.ships.should be_instance_of Array
|
49
|
+
result.ships.size.should == 1
|
51
50
|
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
ship = result.ships.first
|
52
|
+
ship.group.should == 'Simple'
|
53
|
+
ship.name.should == 'Rails App Server'
|
55
54
|
end
|
56
55
|
end
|
57
56
|
end
|
data/spec/blimpy/fleet_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Blimpy::Fleet do
|
4
|
-
describe '#
|
4
|
+
describe '#ships' do
|
5
5
|
it 'should be an Array' do
|
6
|
-
subject.
|
7
|
-
subject.
|
6
|
+
subject.ships.should be_instance_of Array
|
7
|
+
subject.ships.size.should == 0
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
@@ -31,7 +31,7 @@ describe Blimpy::Fleet do
|
|
31
31
|
|
32
32
|
it 'should add the box the fleet' do
|
33
33
|
@box.should_not be nil
|
34
|
-
subject.
|
34
|
+
subject.ships.should include(@box)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blimpy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-04-29 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
16
|
-
requirement: &
|
16
|
+
requirement: &5775980 !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: *
|
24
|
+
version_requirements: *5775980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thor
|
27
|
-
requirement: &
|
27
|
+
requirement: &5775440 !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: *
|
35
|
+
version_requirements: *5775440
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitar
|
38
|
-
requirement: &
|
38
|
+
requirement: &5774900 !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: *
|
46
|
+
version_requirements: *5774900
|
47
47
|
description: Blimpy is a tool for managing a fleet of machines in the CLOUD!
|
48
48
|
email:
|
49
49
|
- tyler@monkeypox.org
|