knife-vsphere 1.2.26 → 2.0.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 +4 -4
- data/lib/chef/knife/base_vsphere_command.rb +5 -0
- data/lib/chef/knife/customization_helper.rb +11 -0
- data/lib/chef/knife/vsphere_cpu_ratio.rb +3 -0
- data/lib/chef/knife/vsphere_customization_list.rb +3 -0
- data/lib/chef/knife/vsphere_datastore_file.rb +3 -0
- data/lib/chef/knife/vsphere_datastore_list.rb +3 -0
- data/lib/chef/knife/vsphere_datastore_maxfree.rb +3 -0
- data/lib/chef/knife/vsphere_folder_list.rb +6 -0
- data/lib/chef/knife/vsphere_hosts_list.rb +3 -0
- data/lib/chef/knife/vsphere_pool_query.rb +3 -0
- data/lib/chef/knife/vsphere_template_list.rb +3 -0
- data/lib/chef/knife/vsphere_vlan_create.rb +3 -0
- data/lib/chef/knife/vsphere_vlan_list.rb +3 -0
- data/lib/chef/knife/vsphere_vm_cdrom.rb +4 -0
- data/lib/chef/knife/vsphere_vm_clone.rb +8 -4
- data/lib/chef/knife/vsphere_vm_config.rb +3 -0
- data/lib/chef/knife/vsphere_vm_delete.rb +7 -0
- data/lib/chef/knife/vsphere_vm_disk_list.rb +3 -0
- data/lib/chef/knife/vsphere_vm_execute.rb +3 -0
- data/lib/chef/knife/vsphere_vm_find.rb +91 -66
- data/lib/chef/knife/vsphere_vm_markastemplate.rb +3 -0
- data/lib/chef/knife/vsphere_vm_move.rb +7 -0
- data/lib/chef/knife/vsphere_vm_net.rb +5 -0
- data/lib/chef/knife/vsphere_vm_network_list.rb +3 -0
- data/lib/chef/knife/vsphere_vm_network_set.rb +3 -0
- data/lib/chef/knife/vsphere_vm_property_get.rb +3 -0
- data/lib/chef/knife/vsphere_vm_property_set.rb +3 -0
- data/lib/chef/knife/vsphere_vm_query.rb +3 -0
- data/lib/chef/knife/vsphere_vm_show.rb +3 -0
- data/lib/chef/knife/vsphere_vm_state.rb +4 -0
- data/lib/chef/knife/vsphere_vm_toolsconfig.rb +3 -0
- data/lib/chef/knife/vsphere_vm_vmdk_add.rb +3 -0
- data/lib/chef/knife/vsphere_vm_vnc_set.rb +3 -0
- data/lib/chef/knife/vsphere_vm_wait_sysprep.rb +2 -0
- data/lib/knife-vsphere/version.rb +3 -1
- metadata +59 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1590f83d24583a54afdd8e0d20e6cebdbe68a16c
|
4
|
+
data.tar.gz: 1ad17a8abad640718689b93a16879734c27f8250
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a220f46264fb88086e93bc61195e3c093048604f07eabeadbe4cabb78201dbc4671df728aa7372c3363ec176c0266b3fc267fb47065d5fd68eeedda1f0cdd61
|
7
|
+
data.tar.gz: 344665daa9c9849c83d8ea1b2fa6e1872ca487424c691462f6b89ae7f53e2a7c51d74cfb6c77fc876c20b937bde297b3bb5695d4182c20e8186e4a98ca3460a1
|
@@ -9,13 +9,18 @@ require 'rbvmomi'
|
|
9
9
|
require 'base64'
|
10
10
|
require 'filesize'
|
11
11
|
|
12
|
+
# Power state on
|
12
13
|
PS_ON ||= 'poweredOn'.freeze
|
14
|
+
# Power state off
|
13
15
|
PS_OFF ||= 'poweredOff'.freeze
|
16
|
+
# Power state suspended
|
14
17
|
PS_SUSPENDED ||= 'suspended'.freeze
|
15
18
|
|
16
19
|
# Base class for vsphere knife commands
|
17
20
|
class Chef
|
21
|
+
# Base class for knife
|
18
22
|
class Knife
|
23
|
+
# Main knife vsphere that more or less everything in this gem is built off of
|
19
24
|
class BaseVsphereCommand < Knife
|
20
25
|
deps do
|
21
26
|
require 'chef/knife/bootstrap'
|
@@ -5,7 +5,14 @@
|
|
5
5
|
|
6
6
|
require 'rbvmomi'
|
7
7
|
|
8
|
+
# The Customization helper for sysprep
|
8
9
|
module CustomizationHelper
|
10
|
+
# Wait for sysprep
|
11
|
+
#
|
12
|
+
# @param [Object] vm The VM object to connect to
|
13
|
+
# @param [Object] vim_connection The vim_connection object settings to connect for
|
14
|
+
# @param [String] timeout A string to set the timeout
|
15
|
+
# @param [String] sleep_time A string to set the a sleep_time
|
9
16
|
def self.wait_for_sysprep(vm, vim_connection, timeout, sleep_time)
|
10
17
|
vem = vim_connection.serviceContent.eventManager
|
11
18
|
|
@@ -31,6 +38,10 @@ module CustomizationHelper
|
|
31
38
|
end
|
32
39
|
end
|
33
40
|
|
41
|
+
# Confirm that cspec is done
|
42
|
+
#
|
43
|
+
# @param [Object] vm The VM object to connect to
|
44
|
+
# @param [Object] vem The vem TODO
|
34
45
|
def self.query_customization_succeeded(vm, vem)
|
35
46
|
vem.QueryEvents(filter:
|
36
47
|
RbVmomi::VIM::EventFilterSpec(entity:
|
@@ -1,11 +1,14 @@
|
|
1
1
|
require 'chef/knife'
|
2
2
|
require 'chef/knife/base_vsphere_command'
|
3
3
|
|
4
|
+
# VsphereCpuratio extends the BaseVspherecommand
|
4
5
|
class Chef::Knife::VsphereCpuRatio < Chef::Knife::BaseVsphereCommand
|
5
6
|
banner 'knife vsphere cpu ratio [CLUSTER] [HOST]'
|
6
7
|
|
7
8
|
common_options
|
8
9
|
|
10
|
+
# The main run method for cpu_ratio
|
11
|
+
#
|
9
12
|
def run
|
10
13
|
$stdout.sync = true
|
11
14
|
|
@@ -6,11 +6,14 @@ require 'chef/knife'
|
|
6
6
|
require 'chef/knife/base_vsphere_command'
|
7
7
|
|
8
8
|
# Lists all customization specifications in the configured datacenter
|
9
|
+
# VsphereCustomizationlist extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereCustomizationList < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner 'knife vsphere customization list'
|
11
12
|
|
12
13
|
common_options
|
13
14
|
|
15
|
+
# The main run method for customization_list
|
16
|
+
#
|
14
17
|
def run
|
15
18
|
$stdout.sync = true
|
16
19
|
|
@@ -3,6 +3,7 @@ require 'chef/knife'
|
|
3
3
|
require 'chef/knife/base_vsphere_command'
|
4
4
|
|
5
5
|
# Upload or download a file from a datastore
|
6
|
+
# VsphereDatastoreFile extends the BaseVspherecommand
|
6
7
|
class Chef::Knife::VsphereDatastoreFile < Chef::Knife::BaseVsphereCommand
|
7
8
|
banner 'knife vsphere datastore file'
|
8
9
|
|
@@ -28,6 +29,8 @@ class Chef::Knife::VsphereDatastoreFile < Chef::Knife::BaseVsphereCommand
|
|
28
29
|
short: '-D',
|
29
30
|
description: 'Download remote file to local'
|
30
31
|
|
32
|
+
# Main run method for datastore_file
|
33
|
+
#
|
31
34
|
def run
|
32
35
|
$stdout.sync = true
|
33
36
|
|
@@ -19,6 +19,7 @@ require 'chef/knife'
|
|
19
19
|
require 'chef/knife/base_vsphere_command'
|
20
20
|
|
21
21
|
# Lists all known data stores in datacenter with sizes
|
22
|
+
# VsphereDatastorelist extends the BaseVspherecommand
|
22
23
|
class Chef::Knife::VsphereDatastoreList < Chef::Knife::BaseVsphereCommand
|
23
24
|
banner 'knife vsphere datastore list'
|
24
25
|
|
@@ -33,6 +34,8 @@ class Chef::Knife::VsphereDatastoreList < Chef::Knife::BaseVsphereCommand
|
|
33
34
|
long: '--pool pool',
|
34
35
|
description: 'Target pool'
|
35
36
|
|
37
|
+
# The main run method for datastore_list
|
38
|
+
#
|
36
39
|
def run
|
37
40
|
$stdout.sync = true
|
38
41
|
|
@@ -19,6 +19,7 @@ require 'chef/knife'
|
|
19
19
|
require 'chef/knife/base_vsphere_command'
|
20
20
|
|
21
21
|
# Gets the data store with the most free space in datacenter
|
22
|
+
# VsphereDatastoreMaxfree extends the BaseVspherecommand
|
22
23
|
class Chef::Knife::VsphereDatastoreMaxfree < Chef::Knife::BaseVsphereCommand
|
23
24
|
banner 'knife vsphere datastore maxfree'
|
24
25
|
|
@@ -38,6 +39,8 @@ class Chef::Knife::VsphereDatastoreMaxfree < Chef::Knife::BaseVsphereCommand
|
|
38
39
|
|
39
40
|
common_options
|
40
41
|
|
42
|
+
# The main run method for datastore_maxfree
|
43
|
+
#
|
41
44
|
def run
|
42
45
|
$stdout.sync = true
|
43
46
|
if get_config(:vlan) && get_config(:pool)
|
@@ -6,11 +6,16 @@ require 'chef/knife'
|
|
6
6
|
require 'chef/knife/base_vsphere_command'
|
7
7
|
|
8
8
|
# Lists all vm folders
|
9
|
+
# VsphereFolderlist extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereFolderList < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner 'knife vsphere folder list'
|
11
12
|
|
12
13
|
common_options
|
13
14
|
|
15
|
+
# Walks though the folders to find something
|
16
|
+
#
|
17
|
+
# param [String] folder that you should go through
|
18
|
+
# param [String] indent_level for the output to indent
|
14
19
|
def traverse_folders(folder, indent_level)
|
15
20
|
puts "#{' ' * indent_level} #{ui.color('Folder', :cyan)}: " + folder.name
|
16
21
|
|
@@ -20,6 +25,7 @@ class Chef::Knife::VsphereFolderList < Chef::Knife::BaseVsphereCommand
|
|
20
25
|
end
|
21
26
|
end
|
22
27
|
|
28
|
+
# Main run method for folder_list
|
23
29
|
def run
|
24
30
|
vim_connection
|
25
31
|
base_folder = find_folder(get_config(:folder))
|
@@ -4,6 +4,7 @@ require 'rbvmomi'
|
|
4
4
|
require 'netaddr'
|
5
5
|
|
6
6
|
# list hosts belonging to pool
|
7
|
+
# VsphereHostslist extends the BaseVspherecommand
|
7
8
|
class Chef::Knife::VsphereHostsList < Chef::Knife::BaseVsphereCommand
|
8
9
|
banner 'knife vsphere hosts list'
|
9
10
|
|
@@ -13,6 +14,8 @@ class Chef::Knife::VsphereHostsList < Chef::Knife::BaseVsphereCommand
|
|
13
14
|
short: '-h',
|
14
15
|
description: 'Target pool'
|
15
16
|
|
17
|
+
# The main run method for hosts_list
|
18
|
+
#
|
16
19
|
def run
|
17
20
|
vim_connection
|
18
21
|
dc = datacenter
|
@@ -3,11 +3,14 @@ require 'chef/knife/base_vsphere_command'
|
|
3
3
|
require 'rbvmomi'
|
4
4
|
require 'netaddr'
|
5
5
|
|
6
|
+
# VspherePoolQuery extends the BaseVsphereCommand
|
6
7
|
class Chef::Knife::VspherePoolQuery < Chef::Knife::BaseVsphereCommand
|
7
8
|
banner "knife vsphere pool query POOLNAME QUERY. See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.ComputeResource.html\" for allowed QUERY values."
|
8
9
|
|
9
10
|
common_options
|
10
11
|
|
12
|
+
# The main run method for poll_query
|
13
|
+
#
|
11
14
|
def run
|
12
15
|
args = ARGV
|
13
16
|
args[2] = 'show'
|
@@ -7,11 +7,14 @@ require 'chef/knife'
|
|
7
7
|
require 'chef/knife/base_vsphere_command'
|
8
8
|
|
9
9
|
# Lists all known VM templates in the configured datacenter
|
10
|
+
# VsphereTemplatelist extends the BaseVspherecommand
|
10
11
|
class Chef::Knife::VsphereTemplateList < Chef::Knife::BaseVsphereCommand
|
11
12
|
banner 'knife vsphere template list'
|
12
13
|
|
13
14
|
common_options
|
14
15
|
|
16
|
+
# The main run method for template_list
|
17
|
+
#
|
15
18
|
def run
|
16
19
|
$stdout.sync = true
|
17
20
|
$stderr.sync = true
|
@@ -2,6 +2,7 @@ require 'chef/knife'
|
|
2
2
|
require 'chef/knife/base_vsphere_command'
|
3
3
|
|
4
4
|
# Lists all known data stores in datacenter with sizes
|
5
|
+
# VsphereVlanCreate extends BaseVspherecommand
|
5
6
|
class Chef::Knife::VsphereVlanCreate < Chef::Knife::BaseVsphereCommand
|
6
7
|
banner 'knife vsphere vlan create NAME VID'
|
7
8
|
|
@@ -11,6 +12,8 @@ class Chef::Knife::VsphereVlanCreate < Chef::Knife::BaseVsphereCommand
|
|
11
12
|
long: '--switch DVSNAME',
|
12
13
|
description: 'The DVSwitch that will hold this VLAN'
|
13
14
|
|
15
|
+
# The main run method for vlan_create
|
16
|
+
#
|
14
17
|
def run
|
15
18
|
$stdout.sync = true
|
16
19
|
|
@@ -18,11 +18,14 @@ require 'chef/knife'
|
|
18
18
|
require 'chef/knife/base_vsphere_command'
|
19
19
|
|
20
20
|
# Lists all known data stores in datacenter with sizes
|
21
|
+
# VsphereVlanlist extends the BaseVspherecommand
|
21
22
|
class Chef::Knife::VsphereVlanList < Chef::Knife::BaseVsphereCommand
|
22
23
|
banner 'knife vsphere vlan list'
|
23
24
|
|
24
25
|
common_options
|
25
26
|
|
27
|
+
# The main run method for vlan_list
|
28
|
+
#
|
26
29
|
def run
|
27
30
|
$stdout.sync = true
|
28
31
|
|
@@ -5,9 +5,11 @@ require 'chef/knife/base_vsphere_command'
|
|
5
5
|
require 'rbvmomi'
|
6
6
|
require 'netaddr'
|
7
7
|
|
8
|
+
# VsphereVmCdrom extends the BaseVspherecommand
|
8
9
|
class Chef::Knife::VsphereVmCdrom < Chef::Knife::BaseVsphereCommand
|
9
10
|
banner 'knife vsphere vm cdrom VMNAME (options)'
|
10
11
|
|
12
|
+
# The empty device name.
|
11
13
|
EMPTY_DEVICE_NAME = ''.freeze
|
12
14
|
|
13
15
|
common_options
|
@@ -44,6 +46,8 @@ class Chef::Knife::VsphereVmCdrom < Chef::Knife::BaseVsphereCommand
|
|
44
46
|
long: '--recursive',
|
45
47
|
description: 'Search all folders'
|
46
48
|
|
49
|
+
# The main run method for vm_cdrom
|
50
|
+
#
|
47
51
|
def run
|
48
52
|
$stdout.sync = true
|
49
53
|
|
@@ -15,10 +15,13 @@ require 'chef/knife/winrm_base'
|
|
15
15
|
require 'chef/knife/customization_helper'
|
16
16
|
require 'ipaddr'
|
17
17
|
|
18
|
+
# VsphereVmClone extends the BaseVspherecommand
|
18
19
|
class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
19
20
|
banner 'knife vsphere vm clone VMNAME (options)'
|
20
21
|
|
22
|
+
# A AUTO_MAC for NIC?
|
21
23
|
AUTO_MAC = 'auto'
|
24
|
+
# A NO IP for you to use!
|
22
25
|
NO_IPS = ''
|
23
26
|
|
24
27
|
include Chef::Knife::WinrmBase
|
@@ -389,8 +392,6 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
389
392
|
|
390
393
|
return unless get_config(:bootstrap)
|
391
394
|
|
392
|
-
connect_host = guest_address(vm)
|
393
|
-
Chef::Log.debug("Connect Host for Bootstrap: #{connect_host}")
|
394
395
|
connect_port = get_config(:ssh_port)
|
395
396
|
protocol = get_config(:bootstrap_protocol)
|
396
397
|
if windows?(src_vm.config)
|
@@ -403,10 +404,14 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
403
404
|
CustomizationHelper.wait_for_sysprep(vm, vim, Integer(get_config(:sysprep_timeout)), 10)
|
404
405
|
puts 'Customization Complete'
|
405
406
|
end
|
407
|
+
connect_host = guest_address(vm)
|
408
|
+
Chef::Log.debug("Connect Host for winrm Bootstrap: #{connect_host}")
|
406
409
|
wait_for_access(connect_host, connect_port, protocol)
|
407
410
|
ssh_override_winrm
|
408
411
|
bootstrap_for_windows_node.run
|
409
412
|
else
|
413
|
+
connect_host = guest_address(vm)
|
414
|
+
Chef::Log.debug("Connect Host for SSH Bootstrap: #{connect_host}")
|
410
415
|
protocol ||= 'ssh'
|
411
416
|
wait_for_access(connect_host, connect_port, protocol)
|
412
417
|
ssh_override_winrm
|
@@ -687,7 +692,7 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
687
692
|
)
|
688
693
|
license_file_print_data = RbVmomi::VIM.CustomizationLicenseFilePrintData(
|
689
694
|
autoMode: cust_spec.identity.licenseFilePrintData.autoMode
|
690
|
-
)
|
695
|
+
) if cust_spec.identity.licenseFilePrintData # optional param
|
691
696
|
|
692
697
|
user_data = RbVmomi::VIM.CustomizationUserData(
|
693
698
|
fullName: cust_spec.identity.userData.fullName,
|
@@ -770,7 +775,6 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
770
775
|
end
|
771
776
|
|
772
777
|
# Retrieves a CustomizationSpecItem that matches the supplied name
|
773
|
-
# @param vim [Connection] VI Connection to use
|
774
778
|
# @param name [String] name of customization
|
775
779
|
# @return [RbVmomi::VIM::CustomizationSpecItem]
|
776
780
|
def find_customization(name)
|
@@ -6,6 +6,7 @@ require 'chef/knife/base_vsphere_command'
|
|
6
6
|
require 'rbvmomi'
|
7
7
|
require 'netaddr'
|
8
8
|
|
9
|
+
# VsphereVMconfig extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereVmConfig < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner "knife vsphere vm config VMNAME PROPERTY VALUE.
|
11
12
|
See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.vm.ConfigSpec.html\"
|
@@ -13,6 +14,8 @@ class Chef::Knife::VsphereVmConfig < Chef::Knife::BaseVsphereCommand
|
|
13
14
|
|
14
15
|
common_options
|
15
16
|
|
17
|
+
# The main run method in vm_config
|
18
|
+
#
|
16
19
|
def run
|
17
20
|
$stdout.sync = true
|
18
21
|
vmname = @name_args[0]
|
@@ -12,6 +12,7 @@ require 'chef/node'
|
|
12
12
|
require 'chef/api_client'
|
13
13
|
|
14
14
|
# Delete a virtual machine from vCenter
|
15
|
+
# VsphereVmDelete extends the BaseVspherecommand
|
15
16
|
class Chef::Knife::VsphereVmDelete < Chef::Knife::BaseVsphereCommand
|
16
17
|
banner 'knife vsphere vm delete VMNAME (options)'
|
17
18
|
|
@@ -33,12 +34,18 @@ class Chef::Knife::VsphereVmDelete < Chef::Knife::BaseVsphereCommand
|
|
33
34
|
# flag (and also explicitly confirming the server destruction!)
|
34
35
|
# the user is already making their intent known. It is not
|
35
36
|
# necessary to make them confirm two more times.
|
37
|
+
#
|
38
|
+
# @param [Object] itemClass The class object
|
39
|
+
# @param [String] name The name of the VM that you need to delete
|
40
|
+
# @param [String] type_name The type_name of the thing that you need? TODO
|
36
41
|
def destroy_item(itemClass, name, type_name)
|
37
42
|
object = itemClass.load(name)
|
38
43
|
object.destroy
|
39
44
|
puts "Deleted #{type_name} #{name}"
|
40
45
|
end
|
41
46
|
|
47
|
+
# The main run method from vm_delete
|
48
|
+
#
|
42
49
|
def run
|
43
50
|
$stdout.sync = true
|
44
51
|
|
@@ -2,11 +2,14 @@ require 'chef/knife'
|
|
2
2
|
require 'chef/knife/base_vsphere_command'
|
3
3
|
|
4
4
|
# List the disks attached to a VM
|
5
|
+
# VsphereVmdisklist extends the BaseVspherecommand
|
5
6
|
class Chef::Knife::VsphereVmDiskList < Chef::Knife::BaseVsphereCommand
|
6
7
|
banner 'knife vsphere vm disk list VMNAME'
|
7
8
|
|
8
9
|
common_options
|
9
10
|
|
11
|
+
# The main run method for vm_disk_list
|
12
|
+
#
|
10
13
|
def run
|
11
14
|
$stdout.sync = true
|
12
15
|
|
@@ -6,6 +6,7 @@ require 'chef/knife/base_vsphere_command'
|
|
6
6
|
require 'rbvmomi'
|
7
7
|
require 'netaddr'
|
8
8
|
|
9
|
+
# VsphereVMexecute extends the Basevspherecommand
|
9
10
|
class Chef::Knife::VsphereVmExecute < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner 'knife vsphere vm execute VMNAME COMMAND ARGS'
|
11
12
|
|
@@ -25,6 +26,8 @@ class Chef::Knife::VsphereVmExecute < Chef::Knife::BaseVsphereCommand
|
|
25
26
|
|
26
27
|
common_options
|
27
28
|
|
29
|
+
# The main run method for vm_execute
|
30
|
+
#
|
28
31
|
def run
|
29
32
|
$stdout.sync = true
|
30
33
|
vmname = @name_args[0]
|
@@ -49,7 +49,11 @@ class Chef::Knife::VsphereVmFind < Chef::Knife::BaseVsphereCommand
|
|
49
49
|
|
50
50
|
option :ips,
|
51
51
|
long: '--ips',
|
52
|
-
description: 'Show all ips, with networks'
|
52
|
+
description: 'Show all ips, with networks - DEPRECATED use --networks'
|
53
|
+
|
54
|
+
option :networks,
|
55
|
+
long: '--networks',
|
56
|
+
description: 'Show all networks with their IPs'
|
53
57
|
|
54
58
|
option :soff,
|
55
59
|
long: '--powered-off',
|
@@ -73,7 +77,7 @@ class Chef::Knife::VsphereVmFind < Chef::Knife::BaseVsphereCommand
|
|
73
77
|
|
74
78
|
option :hostname,
|
75
79
|
long: '--hostname',
|
76
|
-
description: 'show hostname'
|
80
|
+
description: 'show hostname of the guest'
|
77
81
|
|
78
82
|
option :host_name,
|
79
83
|
long: '--host_name',
|
@@ -101,20 +105,25 @@ class Chef::Knife::VsphereVmFind < Chef::Knife::BaseVsphereCommand
|
|
101
105
|
|
102
106
|
$stdout.sync = true # smoother output from print
|
103
107
|
|
104
|
-
|
108
|
+
# Find the given pool or compute resource
|
109
|
+
# @param folder [RbVmomi::VIM::Folder] the folder from which to start the search, most likely dc.hostFolder
|
110
|
+
# @param objectname [String] name of the object (pool or cluster/compute) to find
|
111
|
+
# @return [RbVmomi::VIM::ClusterComputeResource, RbVmomi::VIM::ComputeResource, RbVmomi::VIM::ResourcePool]
|
112
|
+
def traverse_folders_for_pool_clustercompute(folder, objectname)
|
105
113
|
children = find_all_in_folder(folder, RbVmomi::VIM::ManagedObject)
|
106
114
|
children.each do |child|
|
107
115
|
next unless child.class == RbVmomi::VIM::ClusterComputeResource || child.class == RbVmomi::VIM::ComputeResource || child.class == RbVmomi::VIM::ResourcePool
|
108
|
-
if child.name ==
|
116
|
+
if child.name == objectname
|
109
117
|
return child
|
110
118
|
elsif child.class == RbVmomi::VIM::Folder || child.class == RbVmomi::VIM::ComputeResource || child.class == RbVmomi::VIM::ClusterComputeResource || child.class == RbVmomi::VIM::ResourcePool
|
111
|
-
pool = traverse_folders_for_pool_clustercompute(child,
|
119
|
+
pool = traverse_folders_for_pool_clustercompute(child, objectname)
|
112
120
|
end
|
113
121
|
return pool if pool
|
114
122
|
end
|
115
123
|
false
|
116
124
|
end
|
117
125
|
|
126
|
+
# Main entry point to the command
|
118
127
|
def run
|
119
128
|
poolname = config[:pool]
|
120
129
|
if poolname.nil?
|
@@ -122,6 +131,8 @@ class Chef::Knife::VsphereVmFind < Chef::Knife::BaseVsphereCommand
|
|
122
131
|
fatal_exit('You must specify a resource pool or cluster name (see knife vsphere pool list)')
|
123
132
|
end
|
124
133
|
|
134
|
+
abort '--ips has been removed. Please use --networks' if get_config(:ips)
|
135
|
+
|
125
136
|
vim_connection
|
126
137
|
dc = datacenter
|
127
138
|
folder = dc.hostFolder
|
@@ -130,121 +141,135 @@ class Chef::Knife::VsphereVmFind < Chef::Knife::BaseVsphereCommand
|
|
130
141
|
else
|
131
142
|
traverse_folders_for_pool_clustercompute(folder, poolname) || abort("Pool #{poolname} not found")
|
132
143
|
end
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
end
|
138
|
-
|
139
|
-
return if vm.nil?
|
140
|
-
vm.each do |vmc|
|
141
|
-
state = case vmc.runtime.powerState
|
142
|
-
when PS_ON
|
143
|
-
ui.color('on', :green)
|
144
|
-
when PS_OFF
|
145
|
-
ui.color('off', :red)
|
146
|
-
when PS_SUSPENDED
|
147
|
-
ui.color('suspended', :yellow)
|
144
|
+
vm_list = if pool.class == RbVmomi::VIM::ResourcePool
|
145
|
+
pool.vm
|
146
|
+
else
|
147
|
+
pool.resourcePool.vm
|
148
148
|
end
|
149
149
|
|
150
|
+
return if vm_list.nil?
|
151
|
+
|
152
|
+
output = vm_list.map do |vm|
|
153
|
+
thisvm = {}
|
150
154
|
if get_config(:matchname)
|
151
|
-
next unless
|
155
|
+
next unless vm.name.include? config[:matchname]
|
152
156
|
end
|
153
157
|
|
154
158
|
if get_config(:matchtools)
|
155
|
-
next unless
|
159
|
+
next unless vm.guest.toolsStatus == config[:matchtools]
|
156
160
|
end
|
157
161
|
|
158
|
-
|
162
|
+
power_state = vm.runtime.powerState
|
163
|
+
|
164
|
+
thisvm['state'] = case power_state
|
165
|
+
when PS_ON
|
166
|
+
'on'
|
167
|
+
when PS_OFF
|
168
|
+
'off'
|
169
|
+
when PS_SUSPENDED
|
170
|
+
'suspended'
|
171
|
+
end
|
172
|
+
|
159
173
|
|
160
|
-
next if get_config(:
|
174
|
+
next if get_config(:soff) && (power_state == PS_ON)
|
175
|
+
|
176
|
+
next if get_config(:son) && (power_state == PS_OFF)
|
161
177
|
|
162
178
|
if get_config(:matchip)
|
163
|
-
if !
|
164
|
-
next unless
|
179
|
+
if !vm.guest.ipAddress.nil? && vm.guest.ipAddress != ''
|
180
|
+
next unless vm.guest.ipAddress.include? config[:matchip]
|
165
181
|
else
|
166
182
|
next
|
167
183
|
end
|
168
184
|
end
|
169
185
|
|
170
|
-
unless
|
186
|
+
unless vm.guest.guestFullName.nil?
|
171
187
|
if get_config(:matchos)
|
172
|
-
next unless
|
188
|
+
next unless vm.guest.guestFullName.include? config[:matchos]
|
173
189
|
end
|
174
190
|
end
|
175
191
|
|
176
|
-
|
192
|
+
thisvm['name'] = vm.name
|
177
193
|
if get_config(:hostname)
|
178
|
-
|
194
|
+
thisvm['hostname'] = vm.guest.hostName
|
179
195
|
end
|
180
196
|
if get_config(:host_name)
|
181
|
-
|
197
|
+
# TODO: Why vm.summary.runtime vs vm.runtime?
|
198
|
+
thisvm['host_name'] = vm.summary.runtime.host.name
|
182
199
|
end
|
183
200
|
|
184
201
|
if get_config(:full_path)
|
185
|
-
|
186
|
-
|
187
|
-
while !vmcp.parent.nil? && vmcp.parent.name != 'vm'
|
188
|
-
actualname.concat("#{vmcp.parent.name}/")
|
189
|
-
vmcp = vmcp.parent
|
190
|
-
end
|
191
|
-
print ui.color('Folder:', :cyan)
|
192
|
-
print '"'
|
193
|
-
print actualname.split('/').reverse.join('/')
|
194
|
-
print "\"\t"
|
202
|
+
fullpath = ''
|
203
|
+
iterator = vm
|
195
204
|
|
205
|
+
while iterator = iterator.parent
|
206
|
+
break if iterator.name == 'vm'
|
207
|
+
fullpath = fullpath.empty? ? iterator.name : "#{iterator.name}/#{fullpath}"
|
208
|
+
end
|
209
|
+
thisvm['folder'] = fullpath
|
196
210
|
else
|
197
|
-
|
211
|
+
thisvm['folder'] = vm.parent.name
|
198
212
|
end
|
199
213
|
|
200
214
|
if get_config(:ip)
|
201
|
-
|
215
|
+
thisvm['ip'] = vm.guest.ipAddress
|
202
216
|
end
|
203
|
-
|
217
|
+
|
218
|
+
if get_config(:networks)
|
204
219
|
ipregex = /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/
|
205
|
-
networks =
|
206
|
-
|
220
|
+
thisvm['networks'] = vm.guest.net.map do |net|
|
221
|
+
firstip = net.ipConfig.ipAddress.first { |i| i.ipAddress[ipregex] }
|
222
|
+
|
223
|
+
{ 'name' => net.network,
|
224
|
+
'ip' => firstip.ipAddress,
|
225
|
+
'prefix' => firstip.prefixLength
|
226
|
+
}
|
227
|
+
end
|
207
228
|
end
|
229
|
+
|
208
230
|
if get_config(:os)
|
209
|
-
|
231
|
+
thisvm['os'] = vm.guest.guestFullName
|
210
232
|
end
|
233
|
+
|
211
234
|
if get_config(:ram)
|
212
|
-
|
235
|
+
thisvm['ram'] = vm.summary.config.memorySizeMB
|
213
236
|
end
|
237
|
+
|
214
238
|
if get_config(:cpu)
|
215
|
-
|
239
|
+
thisvm['cpu'] = vm.summary.config.numCpu
|
216
240
|
end
|
241
|
+
|
217
242
|
if get_config(:alarms)
|
218
|
-
|
243
|
+
thisvm['alarms'] = vm.summary.overallStatus
|
219
244
|
end
|
220
|
-
|
245
|
+
|
221
246
|
if get_config(:tools)
|
222
|
-
|
247
|
+
thisvm['tools'] = vm.guest.toolsStatus
|
223
248
|
end
|
224
249
|
|
225
250
|
if get_config(:os_disk)
|
226
|
-
|
227
|
-
|
228
|
-
|
251
|
+
thisvm['disks'] = vm.guest.disk.map do |disk|
|
252
|
+
{ 'name' => disk.diskPath,
|
253
|
+
'capacity' => disk.capacity / 1024 / 1024,
|
254
|
+
'free' => disk.freeSpace / 1024 / 1024
|
255
|
+
}
|
229
256
|
end
|
230
257
|
end
|
231
258
|
|
232
259
|
if get_config(:esx_disk)
|
233
|
-
|
234
|
-
|
235
|
-
print "#{dsc.diskFile} | "
|
236
|
-
end
|
260
|
+
# TODO: https://www.vmware.com/support/developer/converter-sdk/conv55_apireference/vim.VirtualMachine.html#field_detail says this is deprecated
|
261
|
+
thisvm['esx_disks'] = vm.layout.disk.map(&:diskFile)
|
237
262
|
end
|
238
263
|
|
239
264
|
if get_config(:snapshots)
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
end
|
265
|
+
thisvm['snapshots'] = if vm.snapshot
|
266
|
+
vm.snapshot.rootSnapshotList.map(&:name)
|
267
|
+
else
|
268
|
+
[]
|
269
|
+
end
|
246
270
|
end
|
247
|
-
|
271
|
+
thisvm
|
248
272
|
end
|
273
|
+
ui.output(output.compact)
|
249
274
|
end
|
250
275
|
end
|
@@ -13,6 +13,7 @@ require 'rbvmomi'
|
|
13
13
|
# Clone an existing template into a new VM, optionally applying a customization specification.
|
14
14
|
# usage:
|
15
15
|
# knife vsphere vm markastemplate MyVM --folder /templates
|
16
|
+
# Vspherevmmarkastemplate extends the Basevspherecommand
|
16
17
|
class Chef::Knife::VsphereVmMarkastemplate < Chef::Knife::BaseVsphereCommand
|
17
18
|
banner 'knife vsphere vm markastemplate VMNAME'
|
18
19
|
|
@@ -23,6 +24,8 @@ class Chef::Knife::VsphereVmMarkastemplate < Chef::Knife::BaseVsphereCommand
|
|
23
24
|
description: 'The folder which contains the VM',
|
24
25
|
default: ''
|
25
26
|
|
27
|
+
# The main run method for vm_markastemplate
|
28
|
+
#
|
26
29
|
def run
|
27
30
|
$stdout.sync = true
|
28
31
|
|
@@ -6,6 +6,7 @@ require 'chef/knife'
|
|
6
6
|
require 'chef/knife/base_vsphere_command'
|
7
7
|
|
8
8
|
# Lists all known virtual machines in the configured datacenter
|
9
|
+
# VsphereVmMove extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereVmMove < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner 'knife vsphere vm move'
|
11
12
|
|
@@ -35,6 +36,8 @@ class Chef::Knife::VsphereVmMove < Chef::Knife::BaseVsphereCommand
|
|
35
36
|
boolean: true
|
36
37
|
|
37
38
|
# Convert VM
|
39
|
+
#
|
40
|
+
# @param [Object] vm The VM object to convert the VM
|
38
41
|
def convert_vm(vm)
|
39
42
|
dc = datacenter
|
40
43
|
hosts = find_all_in_folder(dc.hostFolder, RbVmomi::VIM::ComputeResource)
|
@@ -56,6 +59,8 @@ class Chef::Knife::VsphereVmMove < Chef::Knife::BaseVsphereCommand
|
|
56
59
|
end
|
57
60
|
|
58
61
|
# Move VM
|
62
|
+
#
|
63
|
+
# @param [Object] vm The VM object to convert the VM
|
59
64
|
def move_vm(vm)
|
60
65
|
dest_name = config[:dest_name] || vm.name
|
61
66
|
dest_folder = config[:dest_folder].nil? ? (vm.parent) : (find_folder(get_config(:dest_folder)))
|
@@ -64,6 +69,8 @@ class Chef::Knife::VsphereVmMove < Chef::Knife::BaseVsphereCommand
|
|
64
69
|
dest_folder.MoveIntoFolder_Task(list: [vm]).wait_for_completion unless vm.parent == dest_folder
|
65
70
|
end
|
66
71
|
|
72
|
+
# The main run method for vm_move
|
73
|
+
#
|
67
74
|
def run
|
68
75
|
$stdout.sync = true
|
69
76
|
vmname = @name_args[0]
|
@@ -4,10 +4,15 @@
|
|
4
4
|
#
|
5
5
|
require 'chef/knife'
|
6
6
|
require 'chef/knife/base_vsphere_command'
|
7
|
+
|
7
8
|
# Switch VM networking state up/down (on all network interfaces)
|
9
|
+
# VsphereVmNet extends the BaseVspherecommand
|
8
10
|
class Chef::Knife::VsphereVmNet < Chef::Knife::BaseVsphereCommand
|
9
11
|
banner 'knife vsphere vm net STATE VMNAME'
|
10
12
|
common_options
|
13
|
+
|
14
|
+
# The main run method for vm_net
|
15
|
+
#
|
11
16
|
def run
|
12
17
|
$stdout.sync = true
|
13
18
|
vmname = @name_args[1]
|
@@ -7,11 +7,14 @@ require 'chef/knife/base_vsphere_command'
|
|
7
7
|
require 'rbvmomi'
|
8
8
|
require 'netaddr'
|
9
9
|
|
10
|
+
# VsphereVmNetworklist extends the BaseVspherecommand
|
10
11
|
class Chef::Knife::VsphereVmNetworkList < Chef::Knife::BaseVsphereCommand
|
11
12
|
banner 'knife vsphere vm network list VMNAME'
|
12
13
|
|
13
14
|
common_options
|
14
15
|
|
16
|
+
# The main run method for vm_network_list
|
17
|
+
#
|
15
18
|
def run
|
16
19
|
$stdout.sync = true
|
17
20
|
|
@@ -6,6 +6,7 @@ require 'chef/knife'
|
|
6
6
|
require 'chef/knife/base_vsphere_command'
|
7
7
|
|
8
8
|
# Changes network on a certain VM
|
9
|
+
# VsphereVmNetworkSet extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereVmNetworkSet < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner 'knife vsphere vm network set VMNAME NETWORKNAME'
|
11
12
|
|
@@ -16,6 +17,8 @@ class Chef::Knife::VsphereVmNetworkSet < Chef::Knife::BaseVsphereCommand
|
|
16
17
|
description: 'Network interface to use when multiple NICs are present on the VM. (0,1..)',
|
17
18
|
default: 0
|
18
19
|
|
20
|
+
# The main run method for vm_network_set
|
21
|
+
#
|
19
22
|
def run
|
20
23
|
$stdout.sync = true
|
21
24
|
vmname = @name_args[0]
|
@@ -6,11 +6,14 @@ require 'chef/knife/base_vsphere_command'
|
|
6
6
|
require 'rbvmomi'
|
7
7
|
require 'netaddr'
|
8
8
|
|
9
|
+
# VsphereVMPropertyget extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereVmPropertyGet < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner 'knife vsphere vm property get VMNAME PROPERTY. Gets a vApp Property on VMNAME.'
|
11
12
|
|
12
13
|
common_options
|
13
14
|
|
15
|
+
# The main run method for vm_property_get
|
16
|
+
#
|
14
17
|
def run
|
15
18
|
$stdout.sync = true
|
16
19
|
vmname = @name_args[0]
|
@@ -6,6 +6,7 @@ require 'chef/knife/base_vsphere_command'
|
|
6
6
|
require 'rbvmomi'
|
7
7
|
require 'netaddr'
|
8
8
|
|
9
|
+
# VsphereVMPropertySet extends Basevspherecommand
|
9
10
|
class Chef::Knife::VsphereVmPropertySet < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner 'knife vsphere vm property set VMNAME PROPERTY VALUE. Sets a vApp Property on VMNAME.'
|
11
12
|
|
@@ -15,6 +16,8 @@ class Chef::Knife::VsphereVmPropertySet < Chef::Knife::BaseVsphereCommand
|
|
15
16
|
long: '--ovf-environment-transport STRING',
|
16
17
|
description: 'Comma delimited string. Configures the transports to use for properties. Supported values are: iso and com.vmware.guestInfo.'
|
17
18
|
|
19
|
+
# The main run method for vm_property_set
|
20
|
+
#
|
18
21
|
def run
|
19
22
|
$stdout.sync = true
|
20
23
|
vmname = @name_args[0]
|
@@ -3,11 +3,14 @@ require 'chef/knife/base_vsphere_command'
|
|
3
3
|
require 'rbvmomi'
|
4
4
|
require 'netaddr'
|
5
5
|
|
6
|
+
# VsphereVmQuery extends the BaseVspherecommand
|
6
7
|
class Chef::Knife::VsphereVmQuery < Chef::Knife::BaseVsphereCommand
|
7
8
|
banner "knife vsphere vm query VMNAME QUERY. See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.VirtualMachine.html\" for allowed QUERY values."
|
8
9
|
|
9
10
|
common_options
|
10
11
|
|
12
|
+
# The main run method for vm_query
|
13
|
+
#
|
11
14
|
def run
|
12
15
|
args = ARGV
|
13
16
|
args[2] = 'show'
|
@@ -6,11 +6,14 @@ require 'chef/knife/base_vsphere_command'
|
|
6
6
|
require 'rbvmomi'
|
7
7
|
require 'netaddr'
|
8
8
|
|
9
|
+
# VsphereVmShow extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereVmShow < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner "knife vsphere vm show VMNAME QUERY. See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.VirtualMachine.html\" for allowed QUERY values."
|
11
12
|
|
12
13
|
common_options
|
13
14
|
|
15
|
+
# The main run method for vm_show
|
16
|
+
#
|
14
17
|
def run
|
15
18
|
$stdout.sync = true
|
16
19
|
vmname = @name_args[0]
|
@@ -9,7 +9,9 @@ require 'rbvmomi'
|
|
9
9
|
require 'netaddr'
|
10
10
|
|
11
11
|
# Manage power state of a virtual machine
|
12
|
+
# VsphereVmState extends the BaseVspherecommand
|
12
13
|
class Chef::Knife::VsphereVmState < Chef::Knife::BaseVsphereCommand
|
14
|
+
# The Different power states that vSphere reports
|
13
15
|
POWER_STATES = {
|
14
16
|
PS_ON => 'powered on',
|
15
17
|
PS_OFF => 'powered off',
|
@@ -40,6 +42,8 @@ class Chef::Knife::VsphereVmState < Chef::Knife::BaseVsphereCommand
|
|
40
42
|
long: '--recursive',
|
41
43
|
description: 'Search all folders'
|
42
44
|
|
45
|
+
# The main run method for vm_state
|
46
|
+
#
|
43
47
|
def run
|
44
48
|
$stdout.sync = true
|
45
49
|
|
@@ -6,6 +6,7 @@ require 'chef/knife/base_vsphere_command'
|
|
6
6
|
require 'rbvmomi'
|
7
7
|
require 'netaddr'
|
8
8
|
|
9
|
+
# Vspherevmtoolsconfig extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereVmToolsconfig < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner "knife vsphere vm toolsconfig PROPERTY VALUE.
|
11
12
|
See \"https://www.vmware.com/support/developer/vc-sdk/visdk25pubs/ReferenceGuide/vim.vm.ToolsConfigInfo.html\"
|
@@ -17,6 +18,8 @@ class Chef::Knife::VsphereVmToolsconfig < Chef::Knife::BaseVsphereCommand
|
|
17
18
|
description: 'Allow empty string'
|
18
19
|
common_options
|
19
20
|
|
21
|
+
# The main run method for vm_toolsconfig
|
22
|
+
#
|
20
23
|
def run
|
21
24
|
$stdout.sync = true
|
22
25
|
vmname = @name_args[0]
|
@@ -6,6 +6,7 @@ require 'chef/knife'
|
|
6
6
|
require 'chef/knife/base_vsphere_command'
|
7
7
|
|
8
8
|
# Add a new disk to a virtual machine
|
9
|
+
# VsphereVmvmdkadd extends the BaseVspherecommand
|
9
10
|
class Chef::Knife::VsphereVmVmdkAdd < Chef::Knife::BaseVsphereCommand
|
10
11
|
banner 'knife vsphere vm vmdk add VMNAME DISK_GB'
|
11
12
|
|
@@ -21,6 +22,8 @@ class Chef::Knife::VsphereVmVmdkAdd < Chef::Knife::BaseVsphereCommand
|
|
21
22
|
long: '--target-lun NAME',
|
22
23
|
description: 'name of target LUN'
|
23
24
|
|
25
|
+
# The main run method for vm_vmdk_add
|
26
|
+
#
|
24
27
|
def run
|
25
28
|
$stdout.sync = true
|
26
29
|
|
@@ -7,6 +7,7 @@ require 'chef/knife/base_vsphere_command'
|
|
7
7
|
require 'rbvmomi'
|
8
8
|
require 'netaddr'
|
9
9
|
|
10
|
+
# Main class VsphereVMvncset extends the BaseVspherecommand
|
10
11
|
class Chef::Knife::VsphereVmVncset < Chef::Knife::BaseVsphereCommand
|
11
12
|
banner 'knife vsphere vm vncset VMNAME COMMAND ARGS'
|
12
13
|
|
@@ -22,6 +23,8 @@ class Chef::Knife::VsphereVmVncset < Chef::Knife::BaseVsphereCommand
|
|
22
23
|
|
23
24
|
common_options
|
24
25
|
|
26
|
+
# The main run method for vm_vnc_set
|
27
|
+
#
|
25
28
|
def run
|
26
29
|
$stdout.sync = true
|
27
30
|
vmname = @name_args[0]
|
@@ -30,6 +30,8 @@ class Chef::Knife::VsphereVmWaitSysprep < Chef::Knife::BaseVsphereCommand
|
|
30
30
|
description: 'The timeout in seconds before aborting. Default: 300 seconds',
|
31
31
|
default: 300
|
32
32
|
|
33
|
+
# The main run method for vm_wait_sysprep.
|
34
|
+
#
|
33
35
|
def run
|
34
36
|
$stdout.sync = true
|
35
37
|
|
metadata
CHANGED
@@ -1,125 +1,153 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-vsphere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ezra Pagel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: knife-windows
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: netaddr
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.5'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rbvmomi
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.8'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.8'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: filesize
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.1.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.1.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: byebug
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: chef
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: 0.10.0
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 0.10.0
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: rake
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- -
|
101
|
+
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '0'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- -
|
108
|
+
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
112
|
+
name: rb-readline
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
|
-
- -
|
115
|
+
- - ">="
|
102
116
|
- !ruby/object:Gem::Version
|
103
117
|
version: '0'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
|
-
- -
|
122
|
+
- - ">="
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
126
|
+
name: rspec
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: yard
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
|
-
- -
|
143
|
+
- - ">="
|
116
144
|
- !ruby/object:Gem::Version
|
117
145
|
version: '0'
|
118
146
|
type: :development
|
119
147
|
prerelease: false
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
121
149
|
requirements:
|
122
|
-
- -
|
150
|
+
- - ">="
|
123
151
|
- !ruby/object:Gem::Version
|
124
152
|
version: '0'
|
125
153
|
description: VMware vSphere Support for Chef's Knife Command
|
@@ -174,7 +202,7 @@ files:
|
|
174
202
|
- lib/chef/knife/vsphere_vm_vnc_set.rb
|
175
203
|
- lib/chef/knife/vsphere_vm_wait_sysprep.rb
|
176
204
|
- lib/knife-vsphere/version.rb
|
177
|
-
homepage: http://github.com/
|
205
|
+
homepage: http://github.com/chef-partners/knife-vsphere
|
178
206
|
licenses:
|
179
207
|
- Apache
|
180
208
|
metadata: {}
|
@@ -184,17 +212,17 @@ require_paths:
|
|
184
212
|
- lib
|
185
213
|
required_ruby_version: !ruby/object:Gem::Requirement
|
186
214
|
requirements:
|
187
|
-
- -
|
215
|
+
- - ">="
|
188
216
|
- !ruby/object:Gem::Version
|
189
217
|
version: '0'
|
190
218
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
191
219
|
requirements:
|
192
|
-
- -
|
220
|
+
- - ">="
|
193
221
|
- !ruby/object:Gem::Version
|
194
222
|
version: '0'
|
195
223
|
requirements: []
|
196
224
|
rubyforge_project:
|
197
|
-
rubygems_version: 2.
|
225
|
+
rubygems_version: 2.5.1
|
198
226
|
signing_key:
|
199
227
|
specification_version: 4
|
200
228
|
summary: vSphere Support for Knife
|