knife-bluebox 0.5.7 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,10 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'fog'
20
- require 'highline'
21
19
  require 'chef/knife'
22
- require 'chef/json_compat'
23
20
 
24
21
  class Chef
25
22
  class Knife
@@ -38,8 +35,7 @@ class Chef
38
35
  end
39
36
 
40
37
  def run
41
- bluebox = Fog::Compute.new(
42
- :provider => 'Bluebox',
38
+ bluebox = Fog::Compute::Bluebox.new(
43
39
  :bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
44
40
  :bluebox_api_key => Chef::Config[:knife][:bluebox_api_key]
45
41
  )
@@ -23,14 +23,13 @@ class Chef
23
23
  class BlueboxServerCreate < Knife
24
24
 
25
25
  deps do
26
- require 'chef/knife/bootstrap'
27
- Chef::Knife::Bootstrap.load_deps
28
26
  require 'fog'
29
- require 'socket'
30
- require 'net/ssh/multi'
31
27
  require 'readline'
32
28
  require 'highline'
29
+ require 'net/ssh/multi'
33
30
  require 'chef/json_compat'
31
+ require 'chef/knife/bootstrap'
32
+ Chef::Knife::Bootstrap.load_deps
34
33
  end
35
34
 
36
35
  banner "knife bluebox server create [RUN LIST...] (options)"
@@ -50,7 +49,7 @@ class Chef
50
49
  :short => "-i IMAGE",
51
50
  :long => "--image IMAGE",
52
51
  :description => "The image of the server",
53
- :default => "03807e08-a13d-44e4-b011-ebec7ef2c928"
52
+ :default => "a8f05200-7638-47d1-8282-2474ef57c4c3"
54
53
 
55
54
  option :username,
56
55
  :short => "-U KEY",
@@ -64,10 +63,10 @@ class Chef
64
63
  :description => "User password on new server.",
65
64
  :default => ""
66
65
 
67
- option :bootstrap,
68
- :long => "--bootstrap false",
66
+ option :disable_bootstrap,
67
+ :long => "--disable-bootstrap",
69
68
  :description => "Disables the bootstrapping process.",
70
- :default => true
69
+ :boolean => true
71
70
 
72
71
  option :distro,
73
72
  :short => "-d DISTRO",
@@ -95,14 +94,17 @@ class Chef
95
94
  end
96
95
 
97
96
  def run
98
- require 'fog'
99
- require 'highline'
100
- require 'net/ssh/multi'
101
- require 'readline'
102
- require 'erb'
103
-
104
- bluebox = Fog::Compute.new(
105
- :provider => 'Bluebox',
97
+ $stdout.sync = true
98
+
99
+ if Chef::Config[:knife][:identity_file].nil? && config[:identity_file].nil?
100
+ ui.error('You have not provided a SSH identity file. This is required to create a Blue Box server.')
101
+ exit 1
102
+ elsif Chef::Config[:knife][:identity_file]
103
+ public_key = File.read(Chef::Config[:knife][:identity_file]).chomp
104
+ else public_key = File.read(config[:identity_file]).chomp
105
+ end
106
+
107
+ bluebox = Fog::Compute::Bluebox.new(
106
108
  :bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
107
109
  :bluebox_api_key => Chef::Config[:knife][:bluebox_api_key]
108
110
  )
@@ -111,18 +113,18 @@ class Chef
111
113
  images = bluebox.images.inject({}) { |h,i| h[i.id] = i.description; h }
112
114
 
113
115
  puts "#{h.color("Deploying a new Blue Box Block...", :green)}\n\n"
114
- server_args = {
115
- :flavor_id => config[:flavor],
116
- :image_id => config[:image],
117
- :username => config[:username],
116
+
117
+ server = bluebox.servers.new(
118
+ :flavor_id => Chef::Config[:knife][:flavor] || config[:flavor],
119
+ :image_id => Chef::Config[:knife][:image] || config[:image],
120
+ :hostname => config[:chef_node_name],
121
+ :username => Chef::Config[:knife][:username] || config[:username],
118
122
  :password => config[:password],
119
- :lb_applications => config[:load_balancer]
120
- }
121
- server_args[:public_key] = Chef::Config[:knife][:ssh_key] if Chef::Config[:knife][:ssh_key]
123
+ :public_key => public_key,
124
+ :lb_applications => Chef::Config[:knife][:load_balancer] || config[:load_balancer]
125
+ )
122
126
 
123
- server = bluebox.servers.new(server_args)
124
127
  response = server.save
125
- $stdout.sync = true
126
128
 
127
129
  # Wait for the server to start
128
130
  begin
@@ -141,7 +143,7 @@ class Chef
141
143
 
142
144
  # Define a timeout and ensure the block starts up in the specified amount of time:
143
145
  # ready? will raise Fog::Bluebox::Compute::BlockInstantiationError if block creation fails.
144
- unless server.wait_for( config[:block_startup_timeout] ){ print "."; STDOUT.flush; ready? }
146
+ unless server.wait_for(config[:block_startup_timeout]){ print "."; STDOUT.flush; ready? }
145
147
 
146
148
  # The server wasn't started in specified timeout ... Send a destroy call to make sure it doesn't spin up on us later.
147
149
  server.destroy
@@ -151,9 +153,9 @@ class Chef
151
153
  print "\n\n#{h.color("BBG Server startup succesful. Accessible at #{server.hostname}\n", :green)}"
152
154
 
153
155
  # Make sure we should be bootstrapping.
154
- unless config[:bootstrap]
155
- puts "\n\n#{h.color("Boostrapping disabled per command line inputs. Exiting here.}", :green)}"
156
- return true
156
+ if config[:disable_bootstrap]
157
+ puts "\n\n#{h.color("Boostrapping disabled per command line inputs. Exiting here.", :green)}"
158
+ exit 0
157
159
  end
158
160
 
159
161
  # Bootstrap away!
@@ -164,9 +166,7 @@ class Chef
164
166
  bootstrap = Chef::Knife::Bootstrap.new
165
167
  bootstrap.name_args = [ server.ips[0]['address'] ]
166
168
  bootstrap.config[:run_list] = @name_args
167
- unless Chef::Config[:knife][:ssh_key]
168
- bootstrap.config[:password] = password
169
- end
169
+ bootstrap.config[:password] = password unless config[:password].blank?
170
170
  bootstrap.config[:ssh_user] = config[:username]
171
171
  bootstrap.config[:identity_file] = config[:identity_file]
172
172
  bootstrap.config[:chef_node_name] = config[:chef_node_name] || server.hostname
@@ -36,9 +36,8 @@ class Chef
36
36
  end
37
37
 
38
38
  def run
39
- bluebox = Fog::Compute.new(
40
- :provider => 'Bluebox',
41
- :bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
39
+ bluebox = Fog::Compute::Bluebox.new(
40
+ :bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
42
41
  :bluebox_api_key => Chef::Config[:knife][:bluebox_api_key]
43
42
  )
44
43
 
@@ -46,8 +45,8 @@ class Chef
46
45
  servers = bluebox.servers.inject({}) { |h,f| h[f.hostname] = f.id; h }
47
46
 
48
47
  unless servers.has_key?(@name_args[0])
49
- Chef::Log.warn("I can't find a block named #{@name_args[0]}")
50
- return false
48
+ ui.error("Can't find a block named #{@name_args[0]}")
49
+ exit 1
51
50
  end
52
51
 
53
52
  confirm(h.color("Do you really want to delete block UUID #{servers[@name_args[0]]} with hostname #{@name_args[0]}", :green))
@@ -55,10 +54,13 @@ class Chef
55
54
  begin
56
55
  response = bluebox.destroy_block(servers[@name_args[0]])
57
56
  if response.status == 200
58
- Chef::Log.warn("Deleted server #{servers[@name_args[0]]} named #{@name_args[0]}")
57
+ puts "\n\n#{h.color("Successfully destroyed #{@name_args[0]}", :green)}"
58
+ else
59
+ puts "\n\n#{h.color("There was a problem destroying #{@name_args[0]}. Please check Box Panel.", :red)}"
60
+ exit 1
59
61
  end
60
62
  rescue Excon::Errors::UnprocessableEntity
61
- Chef::Log.warn("There was a problem deleting #{@name_args[0]}. Please check Box Panel.")
63
+ puts "\n\n#{h.color("There was a problem destroying #{@name_args[0]}. Please check Box Panel.", :red)}"
62
64
  end
63
65
  end
64
66
  end
@@ -16,11 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'fog'
20
- require 'highline'
21
- require 'readline'
22
19
  require 'chef/knife'
23
- require 'chef/json_compat'
24
20
 
25
21
  class Chef
26
22
  class Knife
@@ -40,9 +36,8 @@ class Chef
40
36
  end
41
37
 
42
38
  def run
43
- bluebox = Fog::Compute.new(
44
- :provider => 'Bluebox',
45
- :bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
39
+ bluebox = Fog::Compute::Bluebox.new(
40
+ :bluebox_customer_id => Chef::Config[:knife][:bluebox_customer_id],
46
41
  :bluebox_api_key => Chef::Config[:knife][:bluebox_api_key]
47
42
  )
48
43
 
@@ -1,3 +1,3 @@
1
1
  module KnifeBlueBox
2
- VERSION = "0.5.7"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,19 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-bluebox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Adam Jacob
8
+ - Lee Huffman
9
+ - Jesse Proudman
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2012-01-25 00:00:00.000000000Z
13
+ date: 2012-02-09 00:00:00.000000000Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: chef
16
- requirement: &2156629200 !ruby/object:Gem::Requirement
17
+ requirement: &2156276420 !ruby/object:Gem::Requirement
17
18
  none: false
18
19
  requirements:
19
20
  - - ! '>='
@@ -21,10 +22,10 @@ dependencies:
21
22
  version: 0.9.14
22
23
  type: :runtime
23
24
  prerelease: false
24
- version_requirements: *2156629200
25
+ version_requirements: *2156276420
25
26
  - !ruby/object:Gem::Dependency
26
27
  name: fog
27
- requirement: &2156628360 !ruby/object:Gem::Requirement
28
+ requirement: &2156275740 !ruby/object:Gem::Requirement
28
29
  none: false
29
30
  requirements:
30
31
  - - ~>
@@ -32,9 +33,9 @@ dependencies:
32
33
  version: 1.1.2
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *2156628360
36
- description: BlueBox Support for Chef's Knife Command
37
- email: adam@opscode.com
36
+ version_requirements: *2156275740
37
+ description: Blue Box support for Chef's Knife command
38
+ email: support@bluebox.net
38
39
  executables: []
39
40
  extensions: []
40
41
  extra_rdoc_files:
@@ -71,5 +72,5 @@ rubyforge_project:
71
72
  rubygems_version: 1.8.6
72
73
  signing_key:
73
74
  specification_version: 3
74
- summary: BlueBox Support for Chef's Knife Command
75
+ summary: Blue Box support for Chef's Knife command
75
76
  test_files: []