knife-rackspace 0.10.2 → 0.11.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.
- checksums.yaml +8 -8
- data/CHANGELOG.md +4 -1
- data/knife-rackspace.gemspec +1 -1
- data/lib/chef/knife/rackspace_server_create.rb +55 -23
- data/lib/knife-rackspace/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
M2NhZmI1NDM4OWUxODEwODI1ZGVmNWQ2YzgxZjBjNmJiYjMzOGVkYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTY4MTM0MTMzNzY5M2U4NWUwMmMxNmFhZWEyNjQ3YjQzYTdkNWMwZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NTdjN2ZlMzBiNjUwZDZjODQ0M2U1YmQyODkwMTA0MGMyMTIxYjZmYTNhODQ5
|
10
|
+
MGExY2U5NmEzMzc5MTUxMWE4YzkwZDBiMGJmNzMxZTAyODc2MzZmMjdiMjg1
|
11
|
+
NzVlMWU0NWZlYjY1Yzc5MDU2OWE4MjI4NGUxMjM4N2I5MGFjZjQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTVkNjkwMjM4MDM0YTZhZDdjNmEzZDhlYzY2OTk4NTA3MTdmODE2YjgyNzRj
|
14
|
+
MzJjODA0MjY1MmFhNjY5NzFmMWFhMzY4YjhlZjQ4OTA1MTkwNGRlMjBiZTc4
|
15
|
+
Mzk4MjE1OGU3ODkyOTM3NDJmMWQ1ZDcxYWQ5MGY4YjI4ZTdjN2E=
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
## v0.11.0
|
2
|
+
* Add -B (boot volume ID) to `knife rackspace server create` - #91
|
3
|
+
|
1
4
|
## v0.10.1
|
2
|
-
* Support new chef-vault
|
5
|
+
* Support new chef-vault boostrap flags (--bootstrap-vault-file, -bootstrap-vault-json, and --bootstrap-vault-item)
|
3
6
|
|
4
7
|
## v0.10.0
|
5
8
|
* KNIFE-498 knife rackspace uses direct TCP connection on port 22 to verify SSHD
|
data/knife-rackspace.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.add_dependency "knife-windows"
|
20
|
-
s.add_dependency "fog", '>= 1.
|
20
|
+
s.add_dependency "fog", '>= 1.24'
|
21
21
|
s.add_dependency "chef", ">= 0.10.10"
|
22
22
|
s.require_paths = ["lib"]
|
23
23
|
|
@@ -54,6 +54,12 @@ class Chef
|
|
54
54
|
:description => "The image of the server",
|
55
55
|
:proc => Proc.new { |i| Chef::Config[:knife][:image] = i.to_s }
|
56
56
|
|
57
|
+
option :boot_volume_id,
|
58
|
+
:short => "-B BOOT_VOLUME_ID",
|
59
|
+
:long => "--boot-volume-id UUID",
|
60
|
+
:description => "The image CBS UUID to use as the server's boot device",
|
61
|
+
:proc => Proc.new { |i| Chef::Config[:knife][:boot_volume_id] = i.to_s }
|
62
|
+
|
57
63
|
option :server_name,
|
58
64
|
:short => "-S NAME",
|
59
65
|
:long => "--server-name NAME",
|
@@ -365,52 +371,78 @@ class Chef
|
|
365
371
|
def run
|
366
372
|
$stdout.sync = true
|
367
373
|
|
374
|
+
server_create_options = {
|
375
|
+
:metadata => Chef::Config[:knife][:rackspace_metadata],
|
376
|
+
:disk_config => Chef::Config[:knife][:rackspace_disk_config],
|
377
|
+
:user_data => user_data,
|
378
|
+
:config_drive => locate_config_value(:rackspace_config_drive) || false,
|
379
|
+
:personality => files,
|
380
|
+
:key_name => Chef::Config[:knife][:rackspace_ssh_keypair],
|
381
|
+
:name => get_node_name(config[:chef_node_name] || config[:server_name]),
|
382
|
+
:networks => get_networks(Chef::Config[:knife][:rackspace_networks], Chef::Config[:knife][:rackconnect_v3_network_id]),
|
383
|
+
}
|
384
|
+
|
368
385
|
# Maybe deprecate this option at some point
|
369
386
|
config[:bootstrap_network] = 'private' if config[:private_network]
|
370
387
|
|
371
|
-
|
372
|
-
|
388
|
+
flavor_id = locate_config_value(:flavor)
|
389
|
+
flavor = connection.flavors.get(flavor_id)
|
390
|
+
if !flavor
|
391
|
+
ui.error("Invalid Flavor ID: #{flavor_id}")
|
373
392
|
exit 1
|
393
|
+
else
|
394
|
+
server_create_options[:flavor_id] = flavor.id
|
395
|
+
end
|
396
|
+
|
397
|
+
# This is somewhat a hack, but Rackspace's API returns '0' for flavors
|
398
|
+
# that must be backed by a CBS volume.
|
399
|
+
#
|
400
|
+
# In the case we are trying to create one of these flavors, we should
|
401
|
+
# swap out the image_id argument with the boot_image_id argument.
|
402
|
+
if flavor.disk == 0
|
403
|
+
server_create_options[:image_id] = ''
|
404
|
+
server_create_options[:boot_volume_id] = Chef::Config[:knife][:boot_volume_id]
|
405
|
+
server_create_options[:boot_image_id] = Chef::Config[:knife][:image]
|
406
|
+
|
407
|
+
if server_create_options[:boot_image_id] && server_create_options[:boot_volume_id]
|
408
|
+
ui.error('Please specify exactly one of --boot-volume-id (-B) and --image (-I)')
|
409
|
+
exit 1
|
410
|
+
end
|
411
|
+
else
|
412
|
+
server_create_options[:image_id] = Chef::Config[:knife][:image]
|
413
|
+
|
414
|
+
if !server_create_options[:image_id]
|
415
|
+
ui.error('Please specify an Image ID for the server with --image (-I)')
|
416
|
+
exit 1
|
417
|
+
end
|
374
418
|
end
|
375
419
|
|
376
420
|
if locate_config_value(:bootstrap_protocol) == 'winrm'
|
377
421
|
load_winrm_deps
|
378
422
|
end
|
379
423
|
|
380
|
-
|
381
|
-
rackconnect3 = Chef::Config[:knife][:rackconnect_v3_network_id] || config[:rackconnect_v3_network_id]
|
382
|
-
rackspace_servicelevel_wait = Chef::Config[:knife][:rackspace_servicelevel_wait] || config[:rackspace_servicelevel_wait]
|
383
|
-
node_name = get_node_name(config[:chef_node_name] || config[:server_name])
|
384
|
-
networks = get_networks(Chef::Config[:knife][:rackspace_networks], rackconnect3)
|
385
|
-
|
386
|
-
server = connection.servers.new(
|
387
|
-
:name => node_name,
|
388
|
-
:image_id => Chef::Config[:knife][:image],
|
389
|
-
:flavor_id => locate_config_value(:flavor),
|
390
|
-
:metadata => Chef::Config[:knife][:rackspace_metadata],
|
391
|
-
:disk_config => Chef::Config[:knife][:rackspace_disk_config],
|
392
|
-
:user_data => user_data,
|
393
|
-
:config_drive => locate_config_value(:rackspace_config_drive) || false,
|
394
|
-
:personality => files,
|
395
|
-
:key_name => Chef::Config[:knife][:rackspace_ssh_keypair]
|
396
|
-
)
|
424
|
+
server = connection.servers.new(server_create_options)
|
397
425
|
|
398
426
|
if version_one?
|
399
427
|
server.save
|
400
428
|
else
|
401
|
-
server.save(:networks => networks)
|
429
|
+
server.save(:networks => server_create_options[:networks])
|
402
430
|
end
|
403
431
|
|
432
|
+
rackconnect_wait = Chef::Config[:knife][:rackconnect_wait] || config[:rackconnect_wait]
|
433
|
+
rackspace_servicelevel_wait = Chef::Config[:knife][:rackspace_servicelevel_wait] || config[:rackspace_servicelevel_wait]
|
434
|
+
|
404
435
|
msg_pair("Instance ID", server.id)
|
405
436
|
msg_pair("Host ID", server.host_id)
|
406
437
|
msg_pair("Name", server.name)
|
407
438
|
msg_pair("Flavor", server.flavor.name)
|
408
|
-
msg_pair("Image", server.image.name)
|
439
|
+
msg_pair("Image", server.image.name) if server.image
|
440
|
+
msg_pair("Boot Image ID", server.boot_image_id) if server.boot_image_id
|
409
441
|
msg_pair("Metadata", server.metadata.all)
|
410
442
|
msg_pair("ConfigDrive", server.config_drive)
|
411
443
|
msg_pair("UserData", Chef::Config[:knife][:rackspace_user_data])
|
412
444
|
msg_pair("RackConnect Wait", rackconnect_wait ? 'yes' : 'no')
|
413
|
-
msg_pair("RackConnect V3",
|
445
|
+
msg_pair("RackConnect V3", Chef::Config[:knife][:rackconnect_v3_network_id] ? 'yes' : 'no')
|
414
446
|
msg_pair("ServiceLevel Wait", rackspace_servicelevel_wait ? 'yes' : 'no')
|
415
447
|
msg_pair("SSH Key", Chef::Config[:knife][:rackspace_ssh_keypair])
|
416
448
|
|
@@ -457,7 +489,7 @@ class Chef
|
|
457
489
|
end
|
458
490
|
end
|
459
491
|
|
460
|
-
if networks && Chef::Config[:knife][:rackspace_networks]
|
492
|
+
if server_create_options[:networks] && Chef::Config[:knife][:rackspace_networks]
|
461
493
|
msg_pair("Networks", Chef::Config[:knife][:rackspace_networks].sort.join(', '))
|
462
494
|
end
|
463
495
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-rackspace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Jacob
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-
|
15
|
+
date: 2015-09-08 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: knife-windows
|
@@ -34,14 +34,14 @@ dependencies:
|
|
34
34
|
requirements:
|
35
35
|
- - ! '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: '1.
|
37
|
+
version: '1.24'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: '1.
|
44
|
+
version: '1.24'
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: chef
|
47
47
|
requirement: !ruby/object:Gem::Requirement
|