knife-baremetalcloud 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,12 +2,8 @@
2
2
  *.rbc
3
3
  .bundle
4
4
  .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
5
  coverage
10
- doc/
6
+ InstalledFiles
11
7
  lib/bundler/man
12
8
  pkg
13
9
  rdoc
@@ -15,3 +11,8 @@ spec/reports
15
11
  test/tmp
16
12
  test/version_tmp
17
13
  tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
data/README.md CHANGED
@@ -1,26 +1,136 @@
1
- # Knife::Baremetalcloud
1
+ Knife baremetalcloud plugin
2
+ ===========================
2
3
 
3
- TODO: Write a gem description
4
+ This is the baremetalcloud implementation for Chef's Knife command. The plugin allows Chef users to manage compute nodes on baremetalcloud infrastructure.
4
5
 
5
- ## Installation
6
+ Installation
7
+ ------------
6
8
 
7
9
  Add this line to your application's Gemfile:
8
10
 
9
- gem 'knife-baremetalcloud'
11
+ command(gem 'knife-baremetalcloud')
10
12
 
11
13
  And then execute:
12
14
 
13
- $ bundle
15
+ command($ bundle)
14
16
 
15
17
  Or install it yourself as:
16
18
 
17
- $ gem install knife-baremetalcloud
19
+ command($ gem install knife-baremetalcloud)
18
20
 
19
- ## Usage
21
+ Usage
22
+ -----
20
23
 
21
- TODO: Write usage instructions here
24
+ ## Available commands:
25
+ command(knife baremetalcloud list configurations (options))
26
+ command(knife baremetalcloud list images (options))
27
+ command(knife baremetalcloud list servers (options))
28
+ command(knife baremetalcloud server create (options))
22
29
 
23
- ## Contributing
30
+ ### List Configurations
31
+ #### Description
32
+ This command list all available server's configurations at baremetalcloud.
33
+
34
+
35
+ #### Parameters
36
+ -P, --password PASSWORD Customer password
37
+ -x, --username USERNAME Customer username
38
+
39
+ #### Usage
40
+ command($ knife baremetalcloud list configurations -x USERNAME -P PASSWORD)
41
+
42
+ #### Example of Output
43
+ Column description:
44
+ <table>
45
+ <tr>
46
+ <th>quantity</th><th>configuration</th>
47
+ </tr>
48
+ </table>
49
+ - *configuration* string is a required argument when running command($ knife baremetalcloud server create).
50
+
51
+ ```
52
+ 19 santaclara-ca-usa 2.8 GHz Paxville 2GB DDR-400 73.0GB 3.5" SCSI 10000RPM
53
+ 4 santaclara-ca-usa 2.66 GHz Clovertown X5355 8GB DDR2-667 250.0GB 2.5" SATA 7200RPM
54
+ 4 santaclara-ca-usa 2.8 GHz Paxville 4GB DDR-400 73.0GB 3.5" SCSI 10000RPM
55
+ 5 santaclara-ca-usa 2.66 GHz Woodcrest E5150 8GB DDR2-667 250.0GB 2.5" SATA 7200RPM
56
+ 1 miami-fl-usa 2.0 GHz Gainestown E5504 48GB DDR3-1066 120.0GB 2.5" SATA 7200RPM
57
+ 3 santaclara-ca-usa 2.66 GHz Clovertown X5355 8GB DDR-400 500.0GB 2.5" SATA 7200RPM
58
+ 9 santaclara-ca-usa 2.66 GHz Woodcrest E5150 4GB DDR-400 73.0GB 2.5" SAS 10000RPM
59
+ 1 miami-fl-usa 2.8 GHz Paxville 8GB DDR-400 73.0GB 3.5" SCSI 10000RPM
60
+ ```
61
+
62
+ ### List Images
63
+ #### Description
64
+ This command list all available images at baremetalcloud.
65
+
66
+ #### Parameters
67
+ -P, --password PASSWORD Customer password
68
+ -x, --username USERNAME Customer username
69
+
70
+ #### Usage
71
+ command($ knife baremetalcloud list images -x USERNAME -P PASSWORD)
72
+
73
+ #### Example of Output
74
+ Column description:
75
+ <table>
76
+ <tr>
77
+ <th>image size</th><th>image name</th>
78
+ </tr>
79
+ </table>
80
+ - *image name* string is a required argument when running command($ knife baremetalcloud server create).
81
+ ```
82
+ 361M CentOS 5.8
83
+ 565M CentOS 6.2
84
+ 319M XenServer 5.6 SP2
85
+ 321M Ubuntu 11.10
86
+ 441M Ubuntu 12.04
87
+ 6.1G Windows Server 2008 Standard
88
+ 3.7G Windows Server 2003 Standard R2
89
+ 183M SmartOS
90
+ ```
91
+
92
+ ### List Servers
93
+ #### Description
94
+ This command list all servers from a customer account at baremetalcloud.
95
+
96
+
97
+ #### Parameters
98
+ -P, --password PASSWORD Customer password
99
+ -x, --username USERNAME Customer username
100
+
101
+ #### Usage
102
+ command($ knife baremetalcloud list servers -x USERNAME -P PASSWORD)
103
+
104
+ #### Example of Output
105
+ Column description:
106
+ <table>
107
+ <tr>
108
+ <th>id</th><th>status</th><th>name</th><th>location</th><th>IP</th><th>username</th><th>password</th>
109
+ </tr>
110
+ </table>
111
+ ```
112
+ 1234 Active server-baa miami-fl-usa 111.222.333.444 ubuntu PASSWORD
113
+ 5678 Active server-foo miami-fl-usa 555.666.777.888 root PASSWORD
114
+ ```
115
+
116
+ ### Server Create
117
+ #### Description
118
+ This command add and bootstrap a server at baremetalcloud.
119
+
120
+ #### Parameters
121
+ -P, --password PASSWORD Customer password
122
+ -x, --username USERNAME Customer username
123
+ -C, --configuration CONFIG Hardware configuration string of the server
124
+ -i, --image IMAGE_NAME Either baremetalcloud published or customer images
125
+ -n, --name NAME Label for the new servers
126
+ -r, --run-list RUN_LIST Comma separated list of roles/recipes to apply
127
+
128
+ #### Usage
129
+ command($ knife baremetalcloud list images -x USERNAME -P PASSWORD -C 'santaclara-ca-usa 2.8 GHz Paxville 2GB DDR-400 73.0GB 3.5" SCSI 10000RPM' -i 'CentOS 5.8' -n 'myChefServer' -r 'myrole[cookbook]' )
130
+
131
+
132
+ Contributing
133
+ ------------
24
134
 
25
135
  1. Fork it
26
136
  2. Create your feature branch (`git checkout -b my-new-feature`)
@@ -3,7 +3,7 @@ require File.expand_path('../lib/knife-baremetalcloud/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.name = ["knife-baremetalcloud"]
6
- gem.version = '0.0.3'
6
+ gem.version = '0.0.4'
7
7
  gem.authors = ["Diego Desani"]
8
8
  gem.email = ["diego@newservers.com"]
9
9
  gem.summary = %q{baremetalcloud Compute Support for Chef's Knife Command}
@@ -2,9 +2,9 @@ require 'fog'
2
2
 
3
3
  class Chef
4
4
  class Knife
5
- class BaremetalcloudListAvailableServers < Knife
5
+ class BaremetalcloudListConfigurations < Knife
6
6
 
7
- banner "knife baremetalcloud list available servers (options)"
7
+ banner "knife baremetalcloud list configurations (options)"
8
8
 
9
9
  option :baremetalcloud_username,
10
10
  :short => '-x USERNAME',
@@ -16,13 +16,18 @@ class Chef
16
16
  :long => '--password PASSWORD',
17
17
  :description => 'Customer password'
18
18
 
19
- def locate_config_value(key)
20
- key = key.to_sym
21
- config[key] || Chef::Config[:knife][key]
19
+ # Method to handle baremetalcloud errors
20
+ def errorHandling(response)
21
+ # Error handling
22
+ unless response[:error].nil?
23
+ puts "#{ui.color("ERROR:", :bold)} #{response[:error][:name]}"
24
+ puts "Description: #{response[:error][:description]}"
25
+ exit 1
26
+ end
22
27
  end
23
28
 
24
- def run
25
-
29
+ # Method to verify mandatory arguments
30
+ def verifyArguments
26
31
  # Parameters :baremetalcloud_username and :baremetalcloud_password are mandatory
27
32
  unless config[:baremetalcloud_username]
28
33
  ui.error("--username is a mandatory parameter")
@@ -34,6 +39,14 @@ class Chef
34
39
  exit 1
35
40
  end
36
41
 
42
+ end
43
+
44
+ # Plugin method called by Knife
45
+ def run
46
+
47
+ # Verify mandatory arguments
48
+ verifyArguments
49
+
37
50
  # Configure the API abstraction @bmc
38
51
  @bmc = Fog::Compute.new({
39
52
  :bare_metal_cloud_username => config[:baremetalcloud_username],
@@ -41,13 +54,14 @@ class Chef
41
54
  :provider => 'BareMetalCloud'
42
55
  })
43
56
 
44
- response = @bmc.list_available_servers.body[:"available-server"]
57
+ # Get the API response
58
+ response = @bmc.list_available_servers.body
59
+
60
+ # Error handling
61
+ errorHandling(response)
45
62
 
46
- if response.length > 1
47
- #puts "#{ui.color("String", :cyan)}\t#{ui.color("Quantity", :cyan)}"
48
- response.each do |r|
49
- puts "#{r[:configuration]}\t#{r[:quantity]}"
50
- end
63
+ response[:"available-server"].each do |resp|
64
+ puts "#{resp[:quantity]}\t#{resp[:configuration]}"
51
65
  end
52
66
 
53
67
  end
@@ -16,13 +16,23 @@ class Chef
16
16
  :long => '--password PASSWORD',
17
17
  :description => 'Customer password'
18
18
 
19
- def locate_config_value(key)
19
+ def locateConfigValue(key)
20
20
  key = key.to_sym
21
21
  config[key] || Chef::Config[:knife][key]
22
22
  end
23
23
 
24
- def run
25
-
24
+ # Method to handle baremetalcloud errors
25
+ def errorHandling(response)
26
+ # Error handling
27
+ unless response[:error].nil?
28
+ puts "#{ui.color("ERROR:", :bold)} #{response[:error][:name]}"
29
+ puts "Description: #{response[:error][:description]}"
30
+ exit 1
31
+ end
32
+ end
33
+
34
+ # Method to verify mandatory arguments
35
+ def verifyArguments
26
36
  # Parameters :baremetalcloud_username and :baremetalcloud_password are mandatory
27
37
  unless config[:baremetalcloud_username]
28
38
  ui.error("--username is a mandatory parameter")
@@ -34,18 +44,30 @@ class Chef
34
44
  exit 1
35
45
  end
36
46
 
47
+ end
48
+
49
+ # Plugin method called by Knife
50
+ def run
51
+
52
+ # Verify mandatory arguments
53
+ verifyArguments
54
+
37
55
  # Configure the API abstraction @bmc
38
56
  @bmc = Fog::Compute.new({
39
- :bare_metal_cloud_username => locate_config_value(:baremetalcloud_username),
40
- :bare_metal_cloud_password => locate_config_value(:baremetalcloud_password),
57
+ :bare_metal_cloud_username => locateConfigValue(:baremetalcloud_username),
58
+ :bare_metal_cloud_password => locateConfigValue(:baremetalcloud_password),
41
59
  :provider => 'BareMetalCloud'
42
60
  })
43
61
 
44
- response = @bmc.list_images.body[:image]
45
- if response.length > 1
46
- #puts "#{ui.color("Id", :cyan)}\t#{ui.color("Name", :cyan)}\t#{ui.color("Size", :cyan)}"
47
- response.each do |r|
48
- puts "#{r[:id]}\t#{r[:name]}\t#{r[:size]}"
62
+ # Get the API response
63
+ response = @bmc.list_images.body
64
+
65
+ # Error handling
66
+ errorHandling(response)
67
+
68
+ if response[:image].length > 1
69
+ response[:image].each do |resp|
70
+ puts "#{resp[:size]}\t#{resp[:name]}"
49
71
  end
50
72
  end
51
73
 
@@ -1,4 +1,4 @@
1
- require 'fog'
1
+ require 'fog'
2
2
 
3
3
  class Chef
4
4
  class Knife
@@ -16,13 +16,24 @@ class Chef
16
16
  :long => '--password PASSWORD',
17
17
  :description => 'Customer password'
18
18
 
19
- def locate_config_value(key)
19
+ def locateConfigValue(key)
20
20
  key = key.to_sym
21
21
  config[key] || Chef::Config[:knife][key]
22
22
  end
23
23
 
24
- def run
25
-
24
+ # Method to handle baremetalcloud errors
25
+ def errorHandling(response)
26
+ # Error handling
27
+ unless response[:error].nil?
28
+ puts "#{ui.color("ERROR:", :bold)} #{response[:error][:name]}"
29
+ puts "Description: #{response[:error][:description]}"
30
+ exit 1
31
+ end
32
+ end
33
+
34
+
35
+ # Method to verify mandatory arguments
36
+ def verifyArguments
26
37
  # Parameters :baremetalcloud_username and :baremetalcloud_password are mandatory
27
38
  unless config[:baremetalcloud_username]
28
39
  ui.error("--username is a mandatory parameter")
@@ -33,24 +44,64 @@ class Chef
33
44
  ui.error("--password is a mandatory parameter")
34
45
  exit 1
35
46
  end
47
+
48
+ end
49
+
50
+ # Plugin method called by Knife
51
+ def run
52
+
53
+ # Verify mandatory arguments
54
+ verifyArguments
36
55
 
37
56
  # Configure the API abstraction @bmc
38
57
  @bmc = Fog::Compute.new({
39
- :bare_metal_cloud_username => locate_config_value(:baremetalcloud_username),
40
- :bare_metal_cloud_password => locate_config_value(:baremetalcloud_password),
58
+ :bare_metal_cloud_username => locateConfigValue(:baremetalcloud_username),
59
+ :bare_metal_cloud_password => locateConfigValue(:baremetalcloud_password),
41
60
  :provider => 'BareMetalCloud'
42
61
  })
43
62
 
63
+ # Get the API response
64
+ response = @bmc.list_servers.body
65
+
66
+ # Error handling
67
+ errorHandling(response)
44
68
 
45
- response = @bmc.list_servers.body[:server]
69
+ # only one server
70
+ if ( response[:server].class == Hash )
71
+ puts "#{response[:server][:id]}\t#{response[:server][:state]}\t#{response[:server][:name]}\t#{response[:server][:location]}\t#{response[:server][:ip][:address]}\t#{response[:server][:login][:username]}\t#{response[:server][:login][:password]}"
46
72
 
47
- if response.length > 1
48
- response.each do |r|
49
- puts "#{r[:id]}\t#{r[:state]}\t#{r[:name]}\t#{r[:location]}\t#{r[:ip][:address]}\t#{r[:login][:username]}\t#{r[:login][:password]}"
73
+ # more than one server
74
+ elsif ( response[:server].class == Array )
75
+ response[:server].each do |resp|
76
+
77
+ # 1855 and 1955 have only "system" credentials
78
+ if ( resp[:login].class == Hash )
79
+ puts "#{resp[:id]}\t#{resp[:state]}\t#{resp[:name]}\t#{resp[:location]}\t#{resp[:ip][:address]}\t#{resp[:login][:username]}\t#{resp[:login][:password]}"
80
+
81
+ # M600 and M610 have iDRAC credentials
82
+ else
83
+ # Username and password variables
84
+ username = password = nil
85
+
86
+ # Get only system login. Skip iDRAC
87
+ resp[:login].each do |r|
88
+ if ( r[:name] == "system")
89
+ username = r[:username]
90
+ password = r[:password]
91
+ end
92
+ end
93
+ puts "#{resp[:id]}\t#{resp[:state]}\t#{resp[:name]}\t#{resp[:location]}\t#{resp[:ip][:address]}\t#{username}\t#{password}"
94
+
95
+ end
96
+
50
97
  end
98
+
51
99
  end
52
100
 
53
101
  end
102
+
54
103
  end
104
+
55
105
  end
106
+
56
107
  end
@@ -6,13 +6,12 @@ class Chef
6
6
 
7
7
  deps do
8
8
  require 'fog'
9
- require 'readline'
10
- require 'chef/json_compat'
9
+ # require 'readline'
11
10
  require 'chef/knife/bootstrap'
12
11
  Chef::Knife::Bootstrap.load_deps
13
12
  end
14
13
 
15
- banner "knife baremetalcloud server create NAME [RUN LIST...] (options)"
14
+ banner "knife baremetalcloud server create (options)"
16
15
 
17
16
  attr_accessor :initial_sleep_delay, :bmc
18
17
 
@@ -25,11 +24,21 @@ class Chef
25
24
  :short => '-P PASSWORD',
26
25
  :long => '--password PASSWORD',
27
26
  :description => 'Customer password'
27
+
28
+ option :config,
29
+ :short => '-C CONFIG',
30
+ :long => '--configuration CONFIG',
31
+ :description => 'Hardware configuration string of the server'
28
32
 
29
- option :name,
33
+ option :name,
30
34
  :short => '-n NAME',
31
35
  :long => '--name NAME',
32
36
  :description => 'Label for the new servers'
37
+
38
+ option :imageName,
39
+ :short => '-i IMAGE_NAME',
40
+ :long => '--image IMAGE_NAME',
41
+ :description => 'Either baremetalcloud published or customer images'
33
42
 
34
43
  option :run_list,
35
44
  :short => "-r RUN_LIST",
@@ -38,18 +47,42 @@ class Chef
38
47
  :proc => lambda { |o| o.split(/[\s,]+/) },
39
48
  :default => []
40
49
 
41
- option :location,
42
- :short => '-l LOCATION',
43
- :long => '--location LOCATION',
44
- :description => 'Location of the server (possible values: miami-fl-usa, santaclara-ca-usa)',
45
- :default => "miami-fl-usa"
50
+
51
+
52
+ # Method to check when "system" credentials are available
53
+ # Node's IP Address is updated
54
+ def isNodeReady(serverId)
46
55
 
47
- option :imageName,
48
- :short => '-i IMAGE_NAME',
49
- :long => '--image IMAGE_NAME',
50
- :description => 'Image installed of the server (CentOS5.5x64 or Win2003x64)'
56
+ # Sleep @initial_sleep_delay seconds
57
+ sleep @initial_sleep_delay
58
+
59
+ # Get server's status
60
+ response = @bmc.get_server(serverId).body
61
+
62
+ # 1855 and 1955 have only "system" credentials
63
+ if ( response[:server][:login].class == Hash )
64
+ if ( response[:server][:login][:name] == "system" )
65
+ config[:ssh_user] = response[:server][:login][:username]
66
+ config[:ssh_password] = response[:server][:login][:password]
67
+ config[:chef_node_name] = response[:server][:ip][:address]
68
+ return true
69
+ end
70
+ elsif ( response[:server][:login].class == Array ) # M600 and M610 have iDRAC credentials
71
+ response[:server][:login].each do |r|
72
+ if ( r[:name] == "system")
73
+ config[:ssh_user] = r[:username]
74
+ config[:ssh_password] = r[:password]
75
+ config[:chef_node_name] = response[:server][:ip][:address]
76
+ return true
77
+ end
78
+ end
79
+ end
80
+ false
81
+ end
51
82
 
52
- def tcp_test_ssh(hostname)
83
+ # Method to test if SSH service is running on a node
84
+ def testSSH(hostname)
85
+ sleep @initial_sleep_delay
53
86
  tcp_socket = TCPSocket.new(hostname, "22")
54
87
  readable = IO.select([tcp_socket], nil, nil, 5)
55
88
  if readable
@@ -84,49 +117,64 @@ class Chef
84
117
  tcp_socket && tcp_socket.close
85
118
  end
86
119
 
87
-
88
- def locate_config_value(key)
120
+ # Method to lacate configuration variables
121
+ def locateConfigValue(key)
89
122
  key = key.to_sym
90
123
  config[key] || Chef::Config[:knife][key]
91
124
  end
92
125
 
93
- def bootstrap_for_node(public_ip)
94
- puts "node bootstrap - #{public_ip}"
126
+ # Method to configure Knife Bootstrap object
127
+ def bootstrapNode()
128
+ puts "Bootstrapping node id #{locateConfigValue(:chef_node_name)}"
95
129
  bootstrap = Chef::Knife::Bootstrap.new
96
- bootstrap.name_args = [public_ip]
97
- bootstrap.config[:run_list] = locate_config_value(:run_list)
98
- bootstrap.config[:ssh_user] = locate_config_value(:ssh_user)
99
- bootstrap.config[:ssh_password] = locate_config_value(:ssh_password)
130
+ bootstrap.name_args = locateConfigValue(:chef_node_name)
131
+ bootstrap.config[:run_list] = locateConfigValue(:run_list)
132
+ bootstrap.config[:identity_file] = locateConfigValue[:identity_file]
133
+ bootstrap.config[:ssh_user] = locateConfigValue(:ssh_user)
134
+ bootstrap.config[:ssh_password] = locateConfigValue(:ssh_password)
135
+ bootstrap.config[:use_sudo] = true unless locateConfigValue[:ssh_user] == 'root'
136
+ bootstrap.config[:environment] = config[:environment]
100
137
  bootstrap
101
138
  end
102
139
 
140
+ # Method to handle baremetalcloud errors
141
+ def errorHandling(response)
142
+ # Error handling
143
+ unless response[:error].nil?
144
+ puts "#{ui.color("ERROR:", :bold)} #{response[:error][:name]}"
145
+ puts "Description: #{response[:error][:description]}"
146
+ exit 1
147
+ end
148
+ end
103
149
 
104
-
105
- def addServer(planId, options = {})
106
- puts "Connecting to baremetalcloud"
150
+ # Method to add baremetalcloud's node and configure
151
+ def addNode(config, options = {})
107
152
 
108
- # make the request and get the body
109
- response = @bmc.add_server(planId,options).body
153
+ # Get the API response
154
+ response = @bmc.add_server_by_configuration(config,options).body
110
155
 
111
- # Loop while SSH is not available and sleep @initial_sleep_delay seconds
112
- print(".") until tcp_test_ssh(response[:server][:ip][:address]) {
113
- sleep @initial_sleep_delay
114
- print("done")
115
- }
156
+ # Error handling
157
+ errorHandling(response)
116
158
 
117
- # Get Server's user and password
118
- config[:ssh_user] = response[:server][:login][:username]
119
- config[:ssh_password] = response[:server][:login][:password]
159
+ # get Server id
160
+ serverId = response[:server][:id]
120
161
 
121
- # Configure bootstrap and trigger "run" to start up
122
- bootstrap_for_node(response[:server][:ip][:address]).run
162
+ # Loop while server's status is not "Active"
163
+ print "Waiting for server#{serverId} to be ready"
164
+ print(".") until isNodeReady(serverId){
165
+ print "done\n"
166
+ }
167
+
168
+ # Loop while SSH is not available and sleep @initial_sleep_delay seconds
169
+ print "Connecting to server#{serverId}"
170
+ print(".") until testSSH(response[:server][:ip][:address]) {
171
+ print "done\n"
172
+ }
173
+
123
174
  end
124
175
 
125
- def run
126
-
127
- # sleeptime for testing ssh connectivity
128
- @initial_sleep_delay = 3
129
-
176
+ # Method to verify mandatory arguments
177
+ def verifyArguments
130
178
  # Parameters :baremetalcloud_username and :baremetalcloud_password are mandatory
131
179
  unless config[:baremetalcloud_username]
132
180
  ui.error("--username is a mandatory parameter")
@@ -138,40 +186,46 @@ class Chef
138
186
  exit 1
139
187
  end
140
188
 
189
+ unless config[:config]
190
+ ui.error("--configuration is a mandatory parameter")
191
+ exit 1
192
+ end
193
+
194
+ unless config[:imageName]
195
+ ui.error("--image is a mandatory parameter")
196
+ exit 1
197
+ end
198
+
199
+ end
200
+
201
+ # Plugin method called by Knife
202
+ def run
203
+
204
+ # sleeptime for testing ssh connectivity
205
+ @initial_sleep_delay = 3
206
+
207
+ # Verify mandatory arguments
208
+ verifyArguments
209
+
141
210
  # Configure the API abstraction @bmc
142
211
  @bmc = Fog::Compute.new({
143
- :bare_metal_cloud_username => locate_config_value(:baremetalcloud_username),
144
- :bare_metal_cloud_password => locate_config_value(:baremetalcloud_password),
212
+ :bare_metal_cloud_username => locateConfigValue(:baremetalcloud_username),
213
+ :bare_metal_cloud_password => locateConfigValue(:baremetalcloud_password),
145
214
  :provider => 'BareMetalCloud'
146
215
  })
147
216
 
148
-
149
- # Waiting for API rectoring
150
- # PlanId = 7
151
- ## CentOS small
152
- config[:planId] = 7
153
-
154
217
  # Options
155
218
  options = {
156
- :location => locate_config_value(:location),
157
- :imageName => locate_config_value(:imageName),
158
- :name => locate_config_value(:name)
219
+ :imageName => locateConfigValue(:imageName),
220
+ :name => locateConfigValue(:name)
159
221
  }
160
222
 
161
- if (config[:planId])
162
- addServer(locate_config_value(:planId), options)
163
-
164
- elsif (config[:config]) # BLOCK WILL BE REMOVED
165
- @bmc.list_plans.body[:plan].each do | plan |
166
- if plan[:config] == config[:config]
167
- addServer(plan[:id], options) # small plan == 7
168
- end
169
- end
170
-
171
- else
172
- ui.error("PlanId or Configuration is mandatory")
173
- exit 1
174
- end
223
+ # Add server method
224
+ addNode(locateConfigValue(:config), options)
225
+
226
+ # Configure bootstrap and trigger "run" to start up
227
+ bootstrapNode().run
228
+
175
229
  end
176
230
  end
177
231
  end
@@ -1,5 +1,5 @@
1
1
  module Knife
2
2
  module Baremetalcloud
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-baremetalcloud
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Diego Desani
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-08-22 00:00:00 Z
18
+ date: 2012-08-23 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: fog
@@ -44,13 +44,12 @@ extra_rdoc_files: []
44
44
 
45
45
  files:
46
46
  - .gitignore
47
- - .project
48
47
  - Gemfile
49
48
  - LICENSE
50
49
  - README.md
51
50
  - Rakefile
52
51
  - knife-baremetalcloud.gemspec
53
- - lib/chef/knife/baremetalcloud_list_available_servers.rb
52
+ - lib/chef/knife/baremetalcloud_list_configurations.rb
54
53
  - lib/chef/knife/baremetalcloud_list_images.rb
55
54
  - lib/chef/knife/baremetalcloud_list_servers.rb
56
55
  - lib/chef/knife/baremetalcloud_server_create.rb
data/.project DELETED
@@ -1,18 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <projectDescription>
3
- <name>knife-baremetalcloud</name>
4
- <comment></comment>
5
- <projects>
6
- </projects>
7
- <buildSpec>
8
- <buildCommand>
9
- <name>com.aptana.ide.core.unifiedBuilder</name>
10
- <arguments>
11
- </arguments>
12
- </buildCommand>
13
- </buildSpec>
14
- <natures>
15
- <nature>com.aptana.ruby.core.rubynature</nature>
16
- <nature>com.aptana.projects.webnature</nature>
17
- </natures>
18
- </projectDescription>