blimpy 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -5,6 +5,35 @@
5
5
 
6
6
 
7
7
  ### About
8
+
9
+ Blimpy is a tool to help developers spin up and utilize machines "in the
10
+ cloud."
11
+
12
+ Once a developer has a Blimpfile, they can execute a few simple commands to
13
+ manage the newly created "fleet" in the specified cloud provider:
14
+
15
+ ```
16
+ % blimpy start
17
+ [snip]
18
+ >> excelsior ..... online at: ec2-50-112-3-57.us-west-2.compute.amazonaws.com..
19
+ >> goodyear ..... online at: ec2-50-112-27-89.us-west-2.compute.amazonaws.com
20
+ %
21
+ ```
22
+
23
+ Once machines are online, they're easy to access by name with:
24
+
25
+ ```
26
+ % blimpy scp goodyear secrets.tar.gz
27
+ % blimpy ssh goodyear
28
+ ```
29
+
30
+ Then once you're finished working with the machines a simple `blimpy destroy`
31
+ will terminate the machines.
32
+
33
+ ---
34
+
35
+ (Inspired by [Vagrant](http://vagrantup.com))
36
+
8
37
  Notes and other bits are being stored in [this public Evernote
9
38
  notebook](https://www.evernote.com/pub/agentdero/blimpy).
10
39
 
@@ -19,11 +48,11 @@ Here's an example Blimpfile:
19
48
  ```ruby
20
49
  Blimpy.fleet do |fleet|
21
50
  fleet.add(:aws) do |ship|
22
- ship.image_id = 'ami-349b495d'
23
- ship.livery = 'rails'
51
+ ship.name = 'rails-app'
52
+ ship.image_id = 'ami-349b495d' # optional, defaults to Ubuntu 10.04 64-bit
53
+ ship.livery = 'rails' # optional
24
54
  ship.group = 'Simple' # [Required] The name of the desired Security Group
25
- ship.region = 'us-west-1'
26
- ship.name = 'Rails App Server'
55
+ ship.region = 'us-west-1' # optional, defaults to us-west-2
27
56
  end
28
57
  end
29
58
  ```
@@ -23,7 +23,7 @@ Feature: Start a VM or cluster of VMs in the cloud
23
23
  Then the exit status should be 0
24
24
  And the output should contain:
25
25
  """
26
- Up, up and away!
26
+ skipping actually starting the fleet
27
27
  """
28
28
 
29
29
  Scenario: Start with an invalid Blimpfile
@@ -55,12 +55,22 @@ Feature: Start a VM or cluster of VMs in the cloud
55
55
  Then the exit status should be 0
56
56
  And the output should contain:
57
57
  """
58
- Up, up and away!
58
+ online at:
59
59
  """
60
- And the output should contain:
60
+
61
+ @slow @destroy
62
+ Scenario: Start a bigger instance
63
+ Given I have the Blimpfile:
61
64
  """
62
- online at:
65
+ Blimpy.fleet do |f|
66
+ f.add(:aws) do |host|
67
+ host.name = 'Cucumber Host'
68
+ host.flavor = 'm1.large'
69
+ end
70
+ end
63
71
  """
72
+ When I run `blimpy start`
73
+ Then the exit status should be 0
64
74
 
65
75
  @slow @destroy @openstack @wip
66
76
  Scenario: start with an OpenStack Blimpfile
data/lib/blimpy/box.rb CHANGED
@@ -8,8 +8,8 @@ module Blimpy
8
8
  include Blimpy::Helpers::State
9
9
 
10
10
  attr_reader :allowed_regions, :region
11
- attr_accessor :image_id, :livery, :group, :server
12
- attr_accessor :name, :tags, :fleet_id, :username
11
+ attr_accessor :image_id, :flavor, :group
12
+ attr_accessor :name, :tags, :fleet_id, :username, :livery
13
13
 
14
14
 
15
15
  def self.from_instance_id(an_id, data)
@@ -151,7 +151,6 @@ module Blimpy
151
151
  end
152
152
 
153
153
  def bootstrap_livery
154
- tarball = nil
155
154
  if livery == :cwd
156
155
  dir_name = File.basename(Dir.pwd)
157
156
  run_command('rsync', '-av',
@@ -20,6 +20,8 @@ module Blimpy::Boxes
20
20
  @region = DEFAULT_REGION
21
21
  @image_id = DEFAULT_IMAGE_ID
22
22
  @username = 'ubuntu'
23
+ @flavor = 't1.micro'
24
+ @group = 'default'
23
25
  end
24
26
 
25
27
  def validate!
@@ -45,9 +47,10 @@ module Blimpy::Boxes
45
47
 
46
48
  Blimpy::Keys.import_key(fog)
47
49
  fog.servers.create(:image_id => @image_id,
48
- :key_name => Blimpy::Keys.key_name,
49
- :groups => [@group],
50
- :tags => tags)
50
+ :flavor_id => @flavor,
51
+ :key_name => Blimpy::Keys.key_name,
52
+ :groups => [@group],
53
+ :tags => tags)
51
54
  end
52
55
  end
53
56
  end
data/lib/blimpy/cli.rb CHANGED
@@ -69,8 +69,6 @@ module Blimpy
69
69
  exit 1
70
70
  end
71
71
 
72
- puts 'Up, up and away!'
73
-
74
72
  if options[:'dry-run']
75
73
  puts 'skipping actually starting the fleet'
76
74
  exit 0
data/lib/blimpy/fleet.rb CHANGED
@@ -10,6 +10,7 @@ module Blimpy
10
10
  def initialize
11
11
  @ships = []
12
12
  @id = Time.now.utc.to_i
13
+ @airborn = false
13
14
  end
14
15
 
15
16
  def valid_types
@@ -60,6 +61,37 @@ module Blimpy
60
61
  puts
61
62
  end
62
63
 
64
+ def animate
65
+ buffer ="""
66
+ _..--=--..._
67
+ .-' '-. .-.
68
+ /.' '.\\/ /
69
+ |=- B L I M P Y -=| (
70
+ \\'. .'/\\ \\
71
+ '-.,_____ _____.-' '-'
72
+ [_____]=+ ~ ~"""
73
+ frames = [
74
+ 'x~ ',
75
+ 'x ~ ',
76
+ '+~ ~ ',
77
+ '+ ~ ~',
78
+ '+ ~ ',
79
+ 'x ~',
80
+ ]
81
+
82
+ print buffer
83
+ $stdout.flush
84
+ until @airborn do
85
+ frames.each do |frame|
86
+ # Reset every frame
87
+ 5.times { print "\b" }
88
+ print frame
89
+ $stdout.flush
90
+ sleep 0.2
91
+ end
92
+ end
93
+ end
94
+
63
95
  def start
64
96
  instances = members
65
97
  unless instances.empty?
@@ -71,16 +103,19 @@ module Blimpy
71
103
  host.validate!
72
104
  end
73
105
 
74
- puts '>> Starting:'
106
+ Thread.new do
107
+ animate
108
+ end
109
+
75
110
  @ships.each do |host|
76
- puts "..#{host.name}"
77
111
  host.start
78
112
  end
79
113
 
80
114
  @ships.each do |host|
81
- print ">> #{host.name} "
82
- host.wait_for_state('running') { print '.' }
83
- print ".. online at: #{host.dns_name}"
115
+ host.wait_for_state('running') { }
116
+ @airborn = true
117
+ print "\n"
118
+ puts ">> #{host.name} online at: #{host.dns_name}"
84
119
  host.online!
85
120
  host.bootstrap
86
121
  puts
@@ -1,3 +1,3 @@
1
1
  module Blimpy
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  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.3.2
4
+ version: 0.3.3
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-05-19 00:00:00.000000000Z
12
+ date: 2012-05-20 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
16
- requirement: &13915520 !ruby/object:Gem::Requirement
16
+ requirement: &10172400 !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: *13915520
24
+ version_requirements: *10172400
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: thor
27
- requirement: &13914980 !ruby/object:Gem::Requirement
27
+ requirement: &10171980 !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: *13914980
35
+ version_requirements: *10171980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: minitar
38
- requirement: &13914440 !ruby/object:Gem::Requirement
38
+ requirement: &10171560 !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: *13914440
46
+ version_requirements: *10171560
47
47
  description: Blimpy is a tool for managing a fleet of machines in the CLOUD!
48
48
  email:
49
49
  - tyler@monkeypox.org