madeira 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -28,7 +28,7 @@ module Madeira
28
28
  server.wait_for { print "."; ready? }
29
29
  puts
30
30
  tp server, :id, {:dns_name => {:width => 65}}, :public_ip_address, :private_ip_address, :tags, :flavor_id, :key_name, :security_group_ids
31
- server.dns_name
31
+ server
32
32
  end
33
33
 
34
34
 
@@ -42,6 +42,13 @@ module Madeira
42
42
  instances = @fog.servers.all
43
43
  instance = instances.select {|i| i.dns_name == options[:dns_name] }
44
44
  instance[0].destroy
45
+ instance[0].reload
46
+ while instance[0].state != "terminated" do
47
+ print '.'
48
+ sleep 3
49
+ instance[0].reload
50
+ end
51
+ puts "#{options[:dns_name]} has been terminated."
45
52
  end
46
53
 
47
54
  private
@@ -35,14 +35,31 @@ command :create do |c|
35
35
 
36
36
  c.action do |global_options, options, args|
37
37
  opts=global_options.merge(options)
38
- dns_name = Madeira::Provider::EC2.create(opts)
38
+ server = Madeira::Provider::EC2.create(opts)
39
+ pp server
39
40
  if opts[:bootstrap]
40
- #FIXME: use Fog's server.ready? method before continuing
41
- #
42
- sleep(20)
43
- Madeira::Provisioner::Capistrano.bootstrap(opts.merge(:dns_name => dns_name))
41
+ server.wait_for { print '.'; openport?(server.public_ip_address, 22) }
42
+ Madeira::Provisioner::Capistrano.bootstrap(opts.merge(:dns_name => server.dns_name))
43
+ puts "#{server.dns_name} has been bootstrapped."
44
44
  else
45
- puts "NOT bootstrapping #{dns_name}"
45
+ puts "NOT bootstrapping #{server.dns_name}"
46
46
  end
47
47
  end
48
48
  end
49
+
50
+ #FIXME: move method out of UI into a helper somewhere
51
+ #
52
+ def openport?(host,port)
53
+ require 'socket'
54
+ begin
55
+ aSock = Socket.new(:INET, :STREAM)
56
+ raw = Socket.sockaddr_in(port, host)
57
+ if aSock.connect(raw)
58
+ true
59
+ end
60
+ rescue (Errno::ECONNREFUSED)
61
+ false
62
+ rescue (Errno::ETIMEDOUT)
63
+ exit_now!('timed out waiting for instance to be available.')
64
+ end
65
+ end
@@ -1,3 +1,3 @@
1
1
  module Madeira
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -20,7 +20,7 @@ spec = Gem::Specification.new do |s|
20
20
  s.add_development_dependency('rake')
21
21
  s.add_development_dependency('rdoc')
22
22
  s.add_development_dependency('aruba')
23
- s.add_runtime_dependency('gli','2.5.5')
23
+ s.add_runtime_dependency('gli','2.5.6')
24
24
  s.add_runtime_dependency('fog','1.10.0')
25
25
  s.add_runtime_dependency('table_print')
26
26
  s.add_runtime_dependency('capistrano')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: madeira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-28 00:00:00.000000000 Z
12
+ date: 2013-04-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: 2.5.5
69
+ version: 2.5.6
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 2.5.5
77
+ version: 2.5.6
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: fog
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -166,7 +166,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
166
  version: '0'
167
167
  segments:
168
168
  - 0
169
- hash: -649789194035628970
169
+ hash: -3429346419975010628
170
170
  required_rubygems_version: !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
175
  version: '0'
176
176
  segments:
177
177
  - 0
178
- hash: -649789194035628970
178
+ hash: -3429346419975010628
179
179
  requirements: []
180
180
  rubyforge_project:
181
181
  rubygems_version: 1.8.23