blimpy 0.2.1 → 0.3.0
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/README.md +2 -1
- data/Rakefile +2 -0
- data/features/cli/scp.feature +2 -2
- data/features/cli/ssh.feature +2 -2
- data/features/cli/start.feature +23 -2
- data/lib/blimpy.rb +2 -0
- data/lib/blimpy/box.rb +19 -23
- data/lib/blimpy/boxes.rb +5 -0
- data/lib/blimpy/boxes/aws.rb +31 -0
- data/lib/blimpy/boxes/openstack.rb +12 -0
- data/lib/blimpy/fleet.rb +15 -2
- data/lib/blimpy/version.rb +1 -1
- data/spec/blimpy/box_spec.rb +23 -69
- data/spec/blimpy/boxes/aws_spec.rb +70 -0
- data/spec/blimpy/boxes/openstack_spec.rb +24 -0
- data/spec/blimpy/engine_spec.rb +1 -1
- data/spec/blimpy/fleet_spec.rb +26 -16
- metadata +15 -8
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Blimpy
|
2
|
+
[](https://buildhive.cloudbees.com/job/rtyler/job/blimpy/)
|
2
3
|
|
3
4
|

|
4
5
|
|
@@ -17,7 +18,7 @@ Here's an example Blimpfile:
|
|
17
18
|
|
18
19
|
```ruby
|
19
20
|
Blimpy.fleet do |fleet|
|
20
|
-
fleet.add do |ship|
|
21
|
+
fleet.add(:aws) do |ship|
|
21
22
|
ship.image_id = 'ami-349b495d'
|
22
23
|
ship.livery = 'rails'
|
23
24
|
ship.group = 'Simple' # [Required] The name of the desired Security Group
|
data/Rakefile
CHANGED
data/features/cli/scp.feature
CHANGED
@@ -7,7 +7,7 @@ Feature: SCP a file into a named VM
|
|
7
7
|
Given I have the Blimpfile:
|
8
8
|
"""
|
9
9
|
Blimpy.fleet do |f|
|
10
|
-
f.add do |host|
|
10
|
+
f.add(:aws) do |host|
|
11
11
|
host.name = 'Cucumber Host'
|
12
12
|
end
|
13
13
|
end
|
@@ -27,7 +27,7 @@ Feature: SCP a file into a named VM
|
|
27
27
|
Given I have the Blimpfile:
|
28
28
|
"""
|
29
29
|
Blimpy.fleet do |f|
|
30
|
-
f.add do |host|
|
30
|
+
f.add(:aws) do |host|
|
31
31
|
host.name = 'Cucumber Host'
|
32
32
|
end
|
33
33
|
end
|
data/features/cli/ssh.feature
CHANGED
@@ -7,7 +7,7 @@ Feature: SSH into a named VM
|
|
7
7
|
Given I have the Blimpfile:
|
8
8
|
"""
|
9
9
|
Blimpy.fleet do |f|
|
10
|
-
f.add do |host|
|
10
|
+
f.add(:aws) do |host|
|
11
11
|
host.name = 'Cucumber Host'
|
12
12
|
end
|
13
13
|
end
|
@@ -27,7 +27,7 @@ Feature: SSH into a named VM
|
|
27
27
|
Given I have the Blimpfile:
|
28
28
|
"""
|
29
29
|
Blimpy.fleet do |f|
|
30
|
-
f.add do |host|
|
30
|
+
f.add(:aws) do |host|
|
31
31
|
host.group = 'Simple'
|
32
32
|
host.name = 'Cucumber Host'
|
33
33
|
end
|
data/features/cli/start.feature
CHANGED
@@ -13,7 +13,7 @@ Feature: Start a VM or cluster of VMs in the cloud
|
|
13
13
|
Given I have the Blimpfile:
|
14
14
|
"""
|
15
15
|
Blimpy.fleet do |f|
|
16
|
-
f.add do |host|
|
16
|
+
f.add(:aws) do |host|
|
17
17
|
host.group = 'Simple'
|
18
18
|
host.name = 'Cucumber Host'
|
19
19
|
end
|
@@ -31,7 +31,7 @@ Feature: Start a VM or cluster of VMs in the cloud
|
|
31
31
|
Given I have the Blimpfile:
|
32
32
|
"""
|
33
33
|
Blimpy.fleet do |f|
|
34
|
-
f.add do |host|
|
34
|
+
f.add(:aws) do |host|
|
35
35
|
host.group = 'Simple'
|
36
36
|
host.name = 'Cucumber Host'
|
37
37
|
end
|
@@ -47,3 +47,24 @@ Feature: Start a VM or cluster of VMs in the cloud
|
|
47
47
|
"""
|
48
48
|
online at:
|
49
49
|
"""
|
50
|
+
|
51
|
+
@slow @destroy @openstack @wip
|
52
|
+
Scenario: start with an OpenStack Blimpfile
|
53
|
+
Given I have the Blimpfile:
|
54
|
+
"""
|
55
|
+
Blimpy.fleet do |f|
|
56
|
+
f.add(:openstack) do |host|
|
57
|
+
host.name = 'Cucumber Host'
|
58
|
+
end
|
59
|
+
end
|
60
|
+
"""
|
61
|
+
When I run `blimpy start`
|
62
|
+
Then the exit status should be 0
|
63
|
+
And the output should contain:
|
64
|
+
"""
|
65
|
+
Up, up and away!
|
66
|
+
"""
|
67
|
+
And the output should contain:
|
68
|
+
"""
|
69
|
+
online at:
|
70
|
+
"""
|
data/lib/blimpy.rb
CHANGED
data/lib/blimpy/box.rb
CHANGED
@@ -1,42 +1,37 @@
|
|
1
1
|
require 'blimpy/helpers/state'
|
2
2
|
require 'blimpy/livery'
|
3
3
|
require 'blimpy/keys'
|
4
|
+
require 'blimpy/boxes'
|
4
5
|
|
5
6
|
module Blimpy
|
6
7
|
class Box
|
7
8
|
include Blimpy::Helpers::State
|
8
9
|
|
9
|
-
# Default to US West (Oregon)
|
10
|
-
DEFAULT_REGION = 'us-west-2'
|
11
|
-
# Default to 10.04 64-bit
|
12
|
-
DEFAULT_IMAGE_ID = 'ami-ec0b86dc'
|
13
|
-
|
14
10
|
attr_reader :allowed_regions, :region
|
15
11
|
attr_accessor :image_id, :livery, :group, :server
|
16
12
|
attr_accessor :name, :tags, :fleet_id, :username
|
17
13
|
|
18
|
-
def self.fog_server_for_instance(id, blimpdata)
|
19
|
-
region = blimpdata['region'] || DEFAULT_REGION
|
20
|
-
fog = Fog::Compute.new(:provider => 'AWS', :region => region)
|
21
|
-
fog.servers.get(id)
|
22
|
-
end
|
23
14
|
|
24
15
|
def self.from_instance_id(an_id, data)
|
25
|
-
|
16
|
+
return if data['type'].nil?
|
17
|
+
|
18
|
+
name = data['type'].upcase.to_sym
|
19
|
+
return unless Blimpy::Boxes.const_defined? name
|
20
|
+
|
21
|
+
klass = Blimpy::Boxes.const_get(name)
|
22
|
+
|
23
|
+
server = klass.fog_server_for_instance(an_id, data)
|
26
24
|
return if server.nil?
|
27
|
-
|
25
|
+
|
26
|
+
box = klass.new(server)
|
28
27
|
box.name = data['name']
|
29
28
|
box
|
30
29
|
end
|
31
30
|
|
32
31
|
def initialize(server=nil)
|
33
|
-
@allowed_regions = ['us-west-1', 'us-west-2', 'us-east-1']
|
34
|
-
@region = DEFAULT_REGION
|
35
|
-
@image_id = DEFAULT_IMAGE_ID
|
36
32
|
@livery = nil
|
37
33
|
@group = nil
|
38
34
|
@name = 'Unnamed Box'
|
39
|
-
@username = 'ubuntu'
|
40
35
|
@tags = {}
|
41
36
|
@server = server
|
42
37
|
@fleet_id = 0
|
@@ -45,18 +40,12 @@ module Blimpy
|
|
45
40
|
end
|
46
41
|
|
47
42
|
def region=(newRegion)
|
48
|
-
unless @allowed_regions.include?
|
43
|
+
unless (@allowed_regions.nil?) || (@allowed_regions.include?(newRegion))
|
49
44
|
raise InvalidRegionError
|
50
45
|
end
|
51
46
|
@region = newRegion
|
52
47
|
end
|
53
48
|
|
54
|
-
def validate!
|
55
|
-
if Fog::Compute[:aws].security_groups.get(@group).nil?
|
56
|
-
raise BoxValidationError
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
49
|
def online!
|
61
50
|
File.open(state_file, 'a') do |f|
|
62
51
|
f.write("dns: #{@server.dns_name}\n")
|
@@ -64,6 +53,10 @@ module Blimpy
|
|
64
53
|
end
|
65
54
|
end
|
66
55
|
|
56
|
+
def validate!
|
57
|
+
raise NotImplementedError, '#validate! should be defined in a subclass of Blimpy::Box'
|
58
|
+
end
|
59
|
+
|
67
60
|
def start
|
68
61
|
ensure_state_folder
|
69
62
|
@server = create_host
|
@@ -99,6 +92,9 @@ module Blimpy
|
|
99
92
|
|
100
93
|
def write_state_file
|
101
94
|
File.open(state_file, 'w') do |f|
|
95
|
+
# We only really care about the class name as part of the Blimpy::Boxes
|
96
|
+
# module
|
97
|
+
f.write("type: #{self.class.to_s.split('::').last}\n")
|
102
98
|
f.write("name: #{@name}\n")
|
103
99
|
f.write("region: #{@region}\n")
|
104
100
|
end
|
data/lib/blimpy/boxes.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'blimpy/box'
|
2
|
+
require 'blimpy/boxes'
|
3
|
+
|
4
|
+
module Blimpy::Boxes
|
5
|
+
class AWS < Blimpy::Box
|
6
|
+
# Default to US West (Oregon)
|
7
|
+
DEFAULT_REGION = 'us-west-2'
|
8
|
+
# Default to 10.04 64-bit
|
9
|
+
DEFAULT_IMAGE_ID = 'ami-ec0b86dc'
|
10
|
+
|
11
|
+
def self.fog_server_for_instance(id, blimpdata)
|
12
|
+
region = blimpdata['region'] || DEFAULT_REGION
|
13
|
+
fog = Fog::Compute.new(:provider => 'AWS', :region => region)
|
14
|
+
fog.servers.get(id)
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(server=nil)
|
18
|
+
super(server)
|
19
|
+
@allowed_regions = ['us-west-1', 'us-west-2', 'us-east-1']
|
20
|
+
@region = DEFAULT_REGION
|
21
|
+
@image_id = DEFAULT_IMAGE_ID
|
22
|
+
@username = 'ubuntu'
|
23
|
+
end
|
24
|
+
|
25
|
+
def validate!
|
26
|
+
if Fog::Compute[:aws].security_groups.get(@group).nil?
|
27
|
+
raise Blimpy::BoxValidationError
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'blimpy/box'
|
2
|
+
require 'blimpy/boxes'
|
3
|
+
|
4
|
+
module Blimpy::Boxes
|
5
|
+
class OpenStack < Blimpy::Box
|
6
|
+
def self.fog_server_for_instance(id, blimpdata)
|
7
|
+
region = blimpdata['region']
|
8
|
+
fog = Fog::Compute.new(:provider => 'OpenStack', :region => region)
|
9
|
+
fog.servers.get(id)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/blimpy/fleet.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'blimpy/helpers/state'
|
2
|
+
require 'blimpy/boxes/aws'
|
2
3
|
|
3
4
|
module Blimpy
|
4
5
|
class Fleet
|
@@ -11,11 +12,23 @@ module Blimpy
|
|
11
12
|
@id = Time.now.utc.to_i
|
12
13
|
end
|
13
14
|
|
14
|
-
def
|
15
|
+
def valid_types
|
16
|
+
[:aws]
|
17
|
+
end
|
18
|
+
|
19
|
+
def add(box_type, &block)
|
20
|
+
unless valid_types.include? box_type
|
21
|
+
raise Blimpy::InvalidShipException
|
22
|
+
end
|
15
23
|
if block.nil?
|
16
24
|
return false
|
17
25
|
end
|
18
|
-
|
26
|
+
|
27
|
+
box = Blimpy::Boxes::AWS.new
|
28
|
+
|
29
|
+
if box.nil?
|
30
|
+
return false
|
31
|
+
end
|
19
32
|
box.fleet_id = @id
|
20
33
|
@ships << box
|
21
34
|
block.call(box)
|
data/lib/blimpy/version.rb
CHANGED
data/spec/blimpy/box_spec.rb
CHANGED
@@ -1,11 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Blimpy::Box do
|
4
|
-
describe '#image_id' do
|
5
|
-
it 'should be the Ubuntu 10.04 AMI ID by default' do
|
6
|
-
subject.image_id.should == Blimpy::Box::DEFAULT_IMAGE_ID
|
7
|
-
end
|
8
|
-
end
|
9
4
|
|
10
5
|
describe '#livery' do
|
11
6
|
it 'should be unset by default' do
|
@@ -25,65 +20,11 @@ describe Blimpy::Box do
|
|
25
20
|
end
|
26
21
|
end
|
27
22
|
|
28
|
-
describe '#allowed_regions' do
|
29
|
-
it 'should be an Array' do
|
30
|
-
subject.allowed_regions.should be_instance_of Array
|
31
|
-
end
|
32
|
-
it 'should not be empty' do
|
33
|
-
subject.allowed_regions.should_not be_empty
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe '#region' do
|
38
|
-
it 'should return the default region' do
|
39
|
-
subject.region.should == 'us-west-2'
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
describe '#region=' do
|
44
|
-
it 'should raise an InvalidRegionError if the region is not allowed' do
|
45
|
-
expect {
|
46
|
-
subject.region = :elbonia
|
47
|
-
}.to raise_error(Blimpy::InvalidRegionError)
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'should change the value of @region' do
|
51
|
-
subject.region = 'us-east-1'
|
52
|
-
subject.region.should == 'us-east-1'
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
23
|
describe '#validate!' do
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
62
|
-
let(:groups) { double('Fog::Compute::AWS::SecurityGroups') }
|
63
|
-
|
64
|
-
before :each do
|
65
|
-
# Fog::Compute[:aws] will return a *new* instance of
|
66
|
-
# Fog::Compute::Aws::Real every time (apparently) it is invoked
|
67
|
-
Fog::Compute::AWS::Real.any_instance.should_receive(:security_groups).and_return(groups)
|
68
|
-
end
|
69
|
-
|
70
|
-
context 'with invalid settings' do
|
71
|
-
it 'should raise with a bad security group' do
|
72
|
-
groups.should_receive(:get).and_return(nil)
|
73
|
-
expect {
|
74
|
-
subject.validate!
|
75
|
-
}.to raise_error(Blimpy::BoxValidationError)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
context 'with valid settings' do
|
80
|
-
it 'should validate with a good security group' do
|
81
|
-
groups.should_receive(:get).with('MockedGroup').and_return(security_group)
|
82
|
-
expect {
|
83
|
-
subject.group = 'MockedGroup'
|
84
|
-
subject.validate!
|
85
|
-
}.not_to raise_error(Blimpy::BoxValidationError)
|
86
|
-
end
|
24
|
+
it 'should raise a NotImplementedError, since this should be defined by subclasses' do
|
25
|
+
expect {
|
26
|
+
subject.validate!
|
27
|
+
}.to raise_error(NotImplementedError)
|
87
28
|
end
|
88
29
|
end
|
89
30
|
|
@@ -136,14 +77,27 @@ describe Blimpy::Box do
|
|
136
77
|
|
137
78
|
describe '#from_instance_id' do
|
138
79
|
let(:fog) { double('Fog::Compute') }
|
139
|
-
before :each do
|
140
|
-
fog.stub_chain(:servers, :get).and_return(server)
|
141
|
-
Fog::Compute.should_receive(:new).and_return(fog)
|
142
|
-
end
|
143
80
|
|
144
|
-
it 'should
|
81
|
+
it 'should fail if no "type" exists' do
|
145
82
|
result = Blimpy::Box.from_instance_id('someid', {})
|
146
|
-
result.should
|
83
|
+
result.should be_nil
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'should fail if the "type" is not a defined Box class' do
|
87
|
+
result = Blimpy::Box.from_instance_id('someid', {'type' => 'MAGIC'})
|
88
|
+
result.should be_nil
|
89
|
+
end
|
90
|
+
|
91
|
+
context 'with an AWS box type' do
|
92
|
+
before :each do
|
93
|
+
fog.stub_chain(:servers, :get).and_return(server)
|
94
|
+
Fog::Compute.should_receive(:new).and_return(fog)
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should create a new AWS Box instance' do
|
98
|
+
result = Blimpy::Box.from_instance_id('someid', {'type' => 'AWS'})
|
99
|
+
result.should be_instance_of Blimpy::Boxes::AWS
|
100
|
+
end
|
147
101
|
end
|
148
102
|
|
149
103
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'blimpy/boxes/aws'
|
3
|
+
|
4
|
+
describe Blimpy::Boxes::AWS do
|
5
|
+
describe '#image_id' do
|
6
|
+
it 'should be the Ubuntu 10.04 AMI ID by default' do
|
7
|
+
subject.image_id.should == Blimpy::Boxes::AWS::DEFAULT_IMAGE_ID
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#allowed_regions' do
|
12
|
+
it 'should be an Array' do
|
13
|
+
subject.allowed_regions.should be_instance_of Array
|
14
|
+
end
|
15
|
+
it 'should not be empty' do
|
16
|
+
subject.allowed_regions.should_not be_empty
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#region' do
|
21
|
+
it 'should return the default region' do
|
22
|
+
subject.region.should == 'us-west-2'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#region=' do
|
27
|
+
it 'should raise an InvalidRegionError if the region is not allowed' do
|
28
|
+
expect {
|
29
|
+
subject.region = :elbonia
|
30
|
+
}.to raise_error(Blimpy::InvalidRegionError)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should change the value of @region' do
|
34
|
+
subject.region = 'us-east-1'
|
35
|
+
subject.region.should == 'us-east-1'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#validate!' do
|
40
|
+
let(:security_group) do
|
41
|
+
group = double('Fog::Compute::AWS::SecurityGroup')
|
42
|
+
group.stub(:name).and_return('MockedGroup')
|
43
|
+
group
|
44
|
+
end
|
45
|
+
let(:groups) { double('Fog::Compute::AWS::SecurityGroups') }
|
46
|
+
|
47
|
+
before :each do
|
48
|
+
Fog::Compute.stub_chain(:[], :security_groups).and_return(groups)
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'with invalid settings' do
|
52
|
+
it 'should raise with a bad security group' do
|
53
|
+
groups.should_receive(:get).and_return(nil)
|
54
|
+
expect {
|
55
|
+
subject.validate!
|
56
|
+
}.to raise_error(Blimpy::BoxValidationError)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'with valid settings' do
|
61
|
+
it 'should validate with a good security group' do
|
62
|
+
groups.should_receive(:get).with('MockedGroup').and_return(security_group)
|
63
|
+
expect {
|
64
|
+
subject.group = 'MockedGroup'
|
65
|
+
subject.validate!
|
66
|
+
}.not_to raise_error(Blimpy::BoxValidationError)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'blimpy/boxes/openstack'
|
3
|
+
|
4
|
+
describe Blimpy::Boxes::OpenStack do
|
5
|
+
describe '#image_id' do
|
6
|
+
it 'should be nil by default' do
|
7
|
+
subject.image_id.should be_nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#allowed_regions' do
|
12
|
+
it 'should be nil by default' do
|
13
|
+
subject.allowed_regions.should be_nil
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#region=' do
|
18
|
+
it 'should not raise an InvalidRegionError if no allowed_regions exist' do
|
19
|
+
subject.stub(:allowed_regions).and_return(nil)
|
20
|
+
subject.region = :elbonia
|
21
|
+
subject.region.should == :elbonia
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/spec/blimpy/engine_spec.rb
CHANGED
data/spec/blimpy/fleet_spec.rb
CHANGED
@@ -9,29 +9,39 @@ describe Blimpy::Fleet do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
describe '#add' do
|
12
|
-
|
13
|
-
|
12
|
+
context 'with invalid parameters' do
|
13
|
+
it 'should raise an InvalidShipException' do
|
14
|
+
expect {
|
15
|
+
subject.add(:submarine)
|
16
|
+
}.to raise_error(Blimpy::InvalidShipException)
|
17
|
+
end
|
14
18
|
end
|
15
19
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
invoked_block = true
|
20
|
-
box.should be_instance_of Blimpy::Box
|
20
|
+
context 'with valid parameters' do
|
21
|
+
it 'should return false if no Box was properly added' do
|
22
|
+
subject.add(:aws).should == false
|
21
23
|
end
|
22
|
-
invoked_block.should be true
|
23
|
-
end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
subject.add do |
|
28
|
-
|
25
|
+
it 'should pass a Box instance to the block' do
|
26
|
+
invoked_block = false
|
27
|
+
subject.add(:aws) do |box|
|
28
|
+
invoked_block = true
|
29
|
+
box.should be_a Blimpy::Box
|
29
30
|
end
|
31
|
+
invoked_block.should be true
|
30
32
|
end
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
context 'with a block' do
|
35
|
+
before :each do
|
36
|
+
subject.add(:aws) do |b|
|
37
|
+
@box = b
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should add the box the fleet' do
|
42
|
+
@box.should_not be nil
|
43
|
+
subject.ships.should include(@box)
|
44
|
+
end
|
35
45
|
end
|
36
46
|
end
|
37
47
|
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.
|
4
|
+
version: 0.3.0
|
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-
|
12
|
+
date: 2012-05-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
16
|
-
requirement: &
|
16
|
+
requirement: &20178020 !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: *20178020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thor
|
27
|
-
requirement: &
|
27
|
+
requirement: &20177600 !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: *20177600
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitar
|
38
|
-
requirement: &
|
38
|
+
requirement: &20177180 !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: *20177180
|
47
47
|
description: Blimpy is a tool for managing a fleet of machines in the CLOUD!
|
48
48
|
email:
|
49
49
|
- tyler@monkeypox.org
|
@@ -69,6 +69,9 @@ files:
|
|
69
69
|
- features/support/hooks.rb
|
70
70
|
- lib/blimpy.rb
|
71
71
|
- lib/blimpy/box.rb
|
72
|
+
- lib/blimpy/boxes.rb
|
73
|
+
- lib/blimpy/boxes/aws.rb
|
74
|
+
- lib/blimpy/boxes/openstack.rb
|
72
75
|
- lib/blimpy/cli.rb
|
73
76
|
- lib/blimpy/engine.rb
|
74
77
|
- lib/blimpy/fleet.rb
|
@@ -77,6 +80,8 @@ files:
|
|
77
80
|
- lib/blimpy/livery.rb
|
78
81
|
- lib/blimpy/version.rb
|
79
82
|
- spec/blimpy/box_spec.rb
|
83
|
+
- spec/blimpy/boxes/aws_spec.rb
|
84
|
+
- spec/blimpy/boxes/openstack_spec.rb
|
80
85
|
- spec/blimpy/engine_spec.rb
|
81
86
|
- spec/blimpy/fleet_spec.rb
|
82
87
|
- spec/blimpy/helpers/state_spec.rb
|
@@ -118,6 +123,8 @@ test_files:
|
|
118
123
|
- features/support/env.rb
|
119
124
|
- features/support/hooks.rb
|
120
125
|
- spec/blimpy/box_spec.rb
|
126
|
+
- spec/blimpy/boxes/aws_spec.rb
|
127
|
+
- spec/blimpy/boxes/openstack_spec.rb
|
121
128
|
- spec/blimpy/engine_spec.rb
|
122
129
|
- spec/blimpy/fleet_spec.rb
|
123
130
|
- spec/blimpy/helpers/state_spec.rb
|