madeira 0.2.0 → 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.
@@ -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