knife-vsphere 3.0.1 → 4.0.1

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/lib/chef/knife/base_vsphere_command.rb +35 -32
  3. data/lib/chef/knife/search_helper.rb +3 -3
  4. data/lib/chef/knife/vsphere_customization_list.rb +1 -1
  5. data/lib/chef/knife/vsphere_datastore_file.rb +12 -12
  6. data/lib/chef/knife/vsphere_datastore_list.rb +6 -6
  7. data/lib/chef/knife/vsphere_datastore_maxfree.rb +8 -8
  8. data/lib/chef/knife/vsphere_datastorecluster_list.rb +2 -1
  9. data/lib/chef/knife/vsphere_datastorecluster_maxfree.rb +4 -4
  10. data/lib/chef/knife/vsphere_folder_list.rb +1 -1
  11. data/lib/chef/knife/vsphere_hosts_list.rb +3 -3
  12. data/lib/chef/knife/vsphere_pool_list.rb +1 -1
  13. data/lib/chef/knife/vsphere_vlan_create.rb +2 -2
  14. data/lib/chef/knife/vsphere_vlan_list.rb +1 -1
  15. data/lib/chef/knife/vsphere_vm_cdrom.rb +18 -18
  16. data/lib/chef/knife/vsphere_vm_clone.rb +168 -333
  17. data/lib/chef/knife/vsphere_vm_delete.rb +7 -7
  18. data/lib/chef/knife/vsphere_vm_disk_extend.rb +4 -3
  19. data/lib/chef/knife/vsphere_vm_execute.rb +8 -8
  20. data/lib/chef/knife/vsphere_vm_find.rb +50 -49
  21. data/lib/chef/knife/vsphere_vm_list.rb +13 -12
  22. data/lib/chef/knife/vsphere_vm_migrate.rb +8 -8
  23. data/lib/chef/knife/vsphere_vm_move.rb +13 -13
  24. data/lib/chef/knife/vsphere_vm_net.rb +1 -1
  25. data/lib/chef/knife/vsphere_vm_network_add.rb +7 -8
  26. data/lib/chef/knife/vsphere_vm_network_delete.rb +1 -1
  27. data/lib/chef/knife/vsphere_vm_property_set.rb +3 -3
  28. data/lib/chef/knife/vsphere_vm_snapshot.rb +32 -30
  29. data/lib/chef/knife/vsphere_vm_state.rb +12 -12
  30. data/lib/chef/knife/vsphere_vm_toolsconfig.rb +3 -3
  31. data/lib/chef/knife/vsphere_vm_vmdk_add.rb +15 -13
  32. data/lib/chef/knife/vsphere_vm_vnc_set.rb +7 -7
  33. data/lib/chef/knife/vsphere_vm_wait_sysprep.rb +6 -6
  34. data/lib/knife-vsphere/version.rb +1 -1
  35. metadata +31 -17
@@ -19,15 +19,15 @@ class Chef::Knife::VsphereVmDelete < Chef::Knife::BaseVsphereCommand
19
19
  banner "knife vsphere vm delete VMNAME (options)"
20
20
 
21
21
  option :purge,
22
- short: "-P",
23
- long: "--purge",
24
- boolean: true,
25
- description: "Destroy corresponding node and client on the Chef Server, in addition to destroying the VM itself."
22
+ short: "-P",
23
+ long: "--purge",
24
+ boolean: true,
25
+ description: "Destroy corresponding node and client on the Chef Server, in addition to destroying the VM itself."
26
26
 
27
27
  option :chef_node_name,
28
- short: "-N NAME",
29
- long: "--node-name NAME",
30
- description: "Use this option if the Chef node name is different from the VM name"
28
+ short: "-N NAME",
29
+ long: "--node-name NAME",
30
+ description: "Use this option if the Chef node name is different from the VM name"
31
31
 
32
32
  common_options
33
33
 
@@ -14,8 +14,8 @@ class Chef::Knife::VsphereVmDiskExtend < Chef::Knife::BaseVsphereCommand
14
14
  common_options
15
15
 
16
16
  option :diskname,
17
- long: "--diskname DISKNAME",
18
- description: "The name of the disk that will be extended"
17
+ long: "--diskname DISKNAME",
18
+ description: "The name of the disk that will be extended"
19
19
 
20
20
  def run
21
21
  $stdout.sync = true
@@ -57,7 +57,8 @@ class Chef::Knife::VsphereVmDiskExtend < Chef::Knife::BaseVsphereCommand
57
57
  RbVmomi::VIM::VirtualMachineConfigSpec(
58
58
  deviceChange: [RbVmomi::VIM::VirtualDeviceConfigSpec(
59
59
  device: disk,
60
- operation: RbVmomi::VIM::VirtualDeviceConfigSpecOperation("edit"))]
60
+ operation: RbVmomi::VIM::VirtualDeviceConfigSpecOperation("edit")
61
+ )]
61
62
  )).wait_for_completion
62
63
 
63
64
  puts "Disk resized successfully"
@@ -12,18 +12,18 @@ class Chef::Knife::VsphereVmExecute < Chef::Knife::BaseVsphereCommand
12
12
  banner "knife vsphere vm execute VMNAME COMMAND ARGS"
13
13
 
14
14
  option :exec_user,
15
- long: "--exec-user USER",
16
- description: "User to execute as",
17
- required: true
15
+ long: "--exec-user USER",
16
+ description: "User to execute as",
17
+ required: true
18
18
 
19
19
  option :exec_passwd,
20
- long: "--exec-passwd PASSWORD",
21
- description: "Password for execute user",
22
- required: true
20
+ long: "--exec-passwd PASSWORD",
21
+ description: "Password for execute user",
22
+ required: true
23
23
 
24
24
  option :exec_dir,
25
- long: "--exec-dir DIRECTORY",
26
- description: "Working directory to execute in"
25
+ long: "--exec-dir DIRECTORY",
26
+ description: "Working directory to execute in"
27
27
 
28
28
  common_options
29
29
 
@@ -17,101 +17,101 @@ class Chef::Knife::VsphereVmFind < Chef::Knife::BaseVsphereCommand
17
17
 
18
18
  # Deprecating
19
19
  option :pool,
20
- long: "--pool pool",
21
- short: "-h",
22
- description: "Target pool"
20
+ long: "--pool pool",
21
+ short: "-h",
22
+ description: "Target pool"
23
23
  # Deprecating
24
24
  option :poolpath,
25
- long: "--pool-path",
26
- description: "Pool is full-path"
25
+ long: "--pool-path",
26
+ description: "Pool is full-path"
27
27
 
28
28
  option :esx_disk,
29
- long: "--esx-disk",
30
- description: "Show esx disks"
29
+ long: "--esx-disk",
30
+ description: "Show esx disks"
31
31
 
32
32
  option :snapshots,
33
- long: "--snapshots",
34
- description: "Show snapshots"
33
+ long: "--snapshots",
34
+ description: "Show snapshots"
35
35
 
36
36
  option :os_disk,
37
- long: "--os-disks",
38
- description: "Show os disks"
37
+ long: "--os-disks",
38
+ description: "Show os disks"
39
39
 
40
40
  option :cpu,
41
- long: "--cpu",
42
- description: "Show cpu"
41
+ long: "--cpu",
42
+ description: "Show cpu"
43
43
 
44
44
  option :cpu_hot_add_enabled,
45
- long: "--cpu_hot_add_enabled",
46
- description: "Show cpu hot add enabled"
45
+ long: "--cpu_hot_add_enabled",
46
+ description: "Show cpu hot add enabled"
47
47
 
48
48
  option :memory_hot_add_enabled,
49
- long: "--memory_hot_add_enabled",
50
- description: "Show memory hot add enabled"
49
+ long: "--memory_hot_add_enabled",
50
+ description: "Show memory hot add enabled"
51
51
 
52
52
  option :ram,
53
- long: "--ram",
54
- description: "Show ram"
53
+ long: "--ram",
54
+ description: "Show ram"
55
55
 
56
56
  option :ip,
57
- long: "--ip",
58
- description: "Show primary ip"
57
+ long: "--ip",
58
+ description: "Show primary ip"
59
59
 
60
60
  option :networks,
61
- long: "--networks",
62
- description: "Show all networks with their IPs"
61
+ long: "--networks",
62
+ description: "Show all networks with their IPs"
63
63
 
64
64
  option :soff,
65
- long: "--powered-off",
66
- description: "Show only stopped machines"
65
+ long: "--powered-off",
66
+ description: "Show only stopped machines"
67
67
 
68
68
  option :son,
69
- long: "--powered-on",
70
- description: "Show only started machines"
69
+ long: "--powered-on",
70
+ description: "Show only started machines"
71
71
 
72
72
  option :matchip,
73
- long: "--match-ip IP",
74
- description: "match ip"
73
+ long: "--match-ip IP",
74
+ description: "match ip"
75
75
 
76
76
  option :matchos,
77
- long: "--match-os OS",
78
- description: "match os"
77
+ long: "--match-os OS",
78
+ description: "match os"
79
79
 
80
80
  option :matchname,
81
- long: "--match-name VMNAME",
82
- description: "match name"
81
+ long: "--match-name VMNAME",
82
+ description: "match name"
83
83
 
84
84
  option :matchtools,
85
- long: "--match-tools TOOLSSTATE",
86
- description: "match tools state"
85
+ long: "--match-tools TOOLSSTATE",
86
+ description: "match tools state"
87
87
 
88
88
  option :hostname,
89
- long: "--hostname",
90
- description: "show hostname of the guest"
89
+ long: "--hostname",
90
+ description: "show hostname of the guest"
91
91
 
92
92
  option :host_name,
93
- long: "--host_name",
94
- description: "show name of the VMs host"
93
+ long: "--host_name",
94
+ description: "show name of the VMs host"
95
95
 
96
96
  option :os,
97
- long: "--os",
98
- description: "show os details"
97
+ long: "--os",
98
+ description: "show os details"
99
99
 
100
100
  option :alarms,
101
- long: "--alarms",
102
- description: "show alarm status"
101
+ long: "--alarms",
102
+ description: "show alarm status"
103
103
 
104
104
  option :tools,
105
- long: "--tools",
106
- description: "show tools status"
105
+ long: "--tools",
106
+ description: "show tools status"
107
107
 
108
108
  option :full_path,
109
- long: "--full-path",
110
- description: "Show full folder path to the VM"
109
+ long: "--full-path",
110
+ description: "Show full folder path to the VM"
111
111
 
112
112
  option :short_path,
113
- long: "--short-path",
114
- description: "Show the VM's enclosing folder name"
113
+ long: "--short-path",
114
+ description: "Show the VM's enclosing folder name"
115
115
 
116
116
  $stdout.sync = true # smoother output from print
117
117
 
@@ -241,6 +241,7 @@ class Chef::Knife::VsphereVmFind < Chef::Knife::BaseVsphereCommand
241
241
  iterator = vm.obj
242
242
  while (iterator = iterator.parent)
243
243
  break if iterator.name == VMFOLDER
244
+
244
245
  path.unshift iterator.name
245
246
  end
246
247
 
@@ -12,14 +12,14 @@ class Chef::Knife::VsphereVmList < Chef::Knife::BaseVsphereCommand
12
12
  common_options
13
13
 
14
14
  option :recursive,
15
- long: "--recursive",
16
- short: "-r",
17
- description: "Recurse into sub-folders"
15
+ long: "--recursive",
16
+ short: "-r",
17
+ description: "Recurse into sub-folders"
18
18
 
19
19
  option :onlyfolders,
20
- long: "--only-folders",
21
- description: "List only the folders found",
22
- boolean: false
20
+ long: "--only-folders",
21
+ description: "List only the folders found",
22
+ boolean: false
23
23
 
24
24
  def traverse_folders(folder, is_top = false, recurse = false, only_folders = false)
25
25
  if only_folders
@@ -30,11 +30,12 @@ class Chef::Knife::VsphereVmList < Chef::Knife::BaseVsphereCommand
30
30
  print_folder(folder)
31
31
  vms.each { |v| print_vm(v) }
32
32
  elsif is_top
33
- puts "#{ui.color('No VMs', :cyan)}"
33
+ puts "#{ui.color("No VMs", :cyan)}"
34
34
  end
35
35
  end
36
36
 
37
37
  return unless recurse
38
+
38
39
  folders = find_all_in_folder(folder, RbVmomi::VIM::Folder)
39
40
  folders.each do |child|
40
41
  traverse_folders(child, false, recurse, only_folders)
@@ -50,14 +51,14 @@ class Chef::Knife::VsphereVmList < Chef::Knife::BaseVsphereCommand
50
51
  when PS_SUSPENDED
51
52
  ui.color("suspended", :yellow)
52
53
  end
53
- puts "\t#{ui.color('VM Name:', :cyan)} #{vm.name}"
54
- puts "\t\t#{ui.color('IP:', :magenta)} #{vm.guest.ipAddress}"
55
- puts "\t\t#{ui.color('RAM:', :magenta)} #{vm.summary.config.memorySizeMB}"
56
- puts "\t\t#{ui.color('State:', :magenta)} #{state}"
54
+ puts "\t#{ui.color("VM Name:", :cyan)} #{vm.name}"
55
+ puts "\t\t#{ui.color("IP:", :magenta)} #{vm.guest.ipAddress}"
56
+ puts "\t\t#{ui.color("RAM:", :magenta)} #{vm.summary.config.memorySizeMB}"
57
+ puts "\t\t#{ui.color("State:", :magenta)} #{state}"
57
58
  end
58
59
 
59
60
  def print_folder(folder)
60
- puts "#{ui.color('Folder', :cyan)}: " + (folder.path[3..-1].map { |x| x[1] }.* "/")
61
+ puts "#{ui.color("Folder", :cyan)}: " + (folder.path[3..-1].map { |x| x[1] }.* "/")
61
62
  end
62
63
 
63
64
  def run
@@ -15,20 +15,20 @@ class Chef::Knife::VsphereVmMigrate < Chef::Knife::BaseVsphereCommand
15
15
  common_options
16
16
 
17
17
  option :dest_host,
18
- long: "--dest-host HOST",
19
- description: "Destination host for the VM or template"
18
+ long: "--dest-host HOST",
19
+ description: "Destination host for the VM or template"
20
20
 
21
21
  option :dest_datastore,
22
- long: "--dest-datastore DATASTORE",
23
- description: "The destination datastore"
22
+ long: "--dest-datastore DATASTORE",
23
+ description: "The destination datastore"
24
24
 
25
25
  option :priority,
26
- long: "--priority PRIORITY",
27
- description: "migration priority"
26
+ long: "--priority PRIORITY",
27
+ description: "migration priority"
28
28
 
29
29
  option :resource_pool,
30
- long: "--resource-pool POOL",
31
- description: "The resource pool into which to put the VM"
30
+ long: "--resource-pool POOL",
31
+ description: "The resource pool into which to put the VM"
32
32
 
33
33
  def run
34
34
  $stdout.sync = true
@@ -15,27 +15,27 @@ class Chef::Knife::VsphereVmMove < Chef::Knife::BaseVsphereCommand
15
15
  common_options
16
16
 
17
17
  option :dest_name,
18
- long: "--dest-name NAME",
19
- short: "-r",
20
- description: "Destination name of the VM or template"
18
+ long: "--dest-name NAME",
19
+ short: "-r",
20
+ description: "Destination name of the VM or template"
21
21
 
22
22
  option :dest_folder,
23
- long: "--dest-folder FOLDER",
24
- description: "The destination folder into which the VM or template should be moved"
23
+ long: "--dest-folder FOLDER",
24
+ description: "The destination folder into which the VM or template should be moved"
25
25
 
26
26
  option :datastore,
27
- long: "--datastore STORE",
28
- description: "The datastore into which to put the cloned VM"
27
+ long: "--datastore STORE",
28
+ description: "The datastore into which to put the cloned VM"
29
29
 
30
30
  option :thin_provision,
31
- long: "--thin-provision",
32
- description: "Indicates whether disk should be thin provisioned.",
33
- boolean: true
31
+ long: "--thin-provision",
32
+ description: "Indicates whether disk should be thin provisioned.",
33
+ boolean: true
34
34
 
35
35
  option :thick_provision,
36
- long: "--thick-provision",
37
- description: "Indicates whether disk should be thick provisioned.",
38
- boolean: true
36
+ long: "--thick-provision",
37
+ description: "Indicates whether disk should be thick provisioned.",
38
+ boolean: true
39
39
 
40
40
  # Convert VM
41
41
  #
@@ -41,7 +41,7 @@ class Chef::Knife::VsphereVmNet < Chef::Knife::BaseVsphereCommand
41
41
  backing = a.backing
42
42
  key = a.key
43
43
 
44
- puts "#{ui.color('Setting network adapter', :cyan)} :#{a.deviceInfo.label} on vlan :#{a.deviceInfo.summary} :#{state}"
44
+ puts "#{ui.color("Setting network adapter", :cyan)} :#{a.deviceInfo.label} on vlan :#{a.deviceInfo.summary} :#{state}"
45
45
 
46
46
  conninfo = RbVmomi::VIM.VirtualDeviceConnectInfo(startConnected: true,
47
47
  allowGuestControl: true,
@@ -12,14 +12,14 @@ class Chef::Knife::VsphereVmNetworkAdd < Chef::Knife::BaseVsphereCommand
12
12
  banner "knife vsphere vm network add VMNAME NETWORKNAME"
13
13
 
14
14
  option :adapter_type,
15
- long: "--adapter-type STRING",
16
- description: "Adapter type eg e1000,vmxnet3",
17
- required: true
15
+ long: "--adapter-type STRING",
16
+ description: "Adapter type eg e1000,vmxnet3",
17
+ required: true
18
18
 
19
19
  option :mac_address,
20
- long: "--mac-address STRING",
21
- description: "Adapter MAC address eg. AA:BB:CC:DD:EE:FF",
22
- required: false
20
+ long: "--mac-address STRING",
21
+ description: "Adapter MAC address eg. AA:BB:CC:DD:EE:FF",
22
+ required: false
23
23
 
24
24
  common_options
25
25
 
@@ -83,8 +83,7 @@ class Chef::Knife::VsphereVmNetworkAdd < Chef::Knife::BaseVsphereCommand
83
83
  deviceInfo: { summary: summary, label: "" },
84
84
  backing: backing,
85
85
  addressType: address_type,
86
- macAddress: mac_address
87
- ),
86
+ macAddress: mac_address),
88
87
  }],
89
88
  }
90
89
  ).wait_for_completion
@@ -43,7 +43,7 @@ class Chef::Knife::VsphereVmNetworkDelete < Chef::Knife::BaseVsphereCommand
43
43
  )
44
44
 
45
45
  vm.ReconfigVM_Task(spec: spec).wait_for_completion
46
- puts "#{ui.color('NIC', :red)}: #{card.deviceInfo.label} was deleted"
46
+ puts "#{ui.color("NIC", :red)}: #{card.deviceInfo.label} was deleted"
47
47
  end
48
48
  end
49
49
  end
@@ -13,8 +13,8 @@ class Chef::Knife::VsphereVmPropertySet < Chef::Knife::BaseVsphereCommand
13
13
  common_options
14
14
 
15
15
  option :ovf_environment_transport,
16
- long: "--ovf-environment-transport STRING",
17
- description: "Comma delimited string. Configures the transports to use for properties. Supported values are: iso and com.vmware.guestInfo."
16
+ long: "--ovf-environment-transport STRING",
17
+ description: "Comma delimited string. Configures the transports to use for properties. Supported values are: iso and com.vmware.guestInfo."
18
18
 
19
19
  # The main run method for vm_property_set
20
20
  #
@@ -69,7 +69,7 @@ class Chef::Knife::VsphereVmPropertySet < Chef::Knife::BaseVsphereCommand
69
69
  userConfigurable: true,
70
70
  value: property_value,
71
71
  }
72
- )
72
+ ),
73
73
  ]
74
74
  )
75
75
  )
@@ -14,56 +14,56 @@ class Chef::Knife::VsphereVmSnapshot < Chef::Knife::BaseVsphereCommand
14
14
  common_options
15
15
 
16
16
  option :list,
17
- long: "--list",
18
- description: "The current tree of snapshots"
17
+ long: "--list",
18
+ description: "The current tree of snapshots"
19
19
 
20
20
  option :create_new_snapshot,
21
- long: "--create SNAPSHOT",
22
- description: "Create a new snapshot off of the current snapshot."
21
+ long: "--create SNAPSHOT",
22
+ description: "Create a new snapshot off of the current snapshot."
23
23
 
24
24
  option :remove_named_snapshot,
25
- long: "--remove SNAPSHOT",
26
- description: "Remove a named snapshot."
25
+ long: "--remove SNAPSHOT",
26
+ description: "Remove a named snapshot."
27
27
 
28
28
  option :revert_snapshot,
29
- long: "--revert SNAPSHOT",
30
- description: "Revert to a named snapshot."
29
+ long: "--revert SNAPSHOT",
30
+ description: "Revert to a named snapshot."
31
31
 
32
32
  option :revert_current_snapshot,
33
- long: "--revert-current",
34
- description: "Revert to current snapshot.",
35
- boolean: false
33
+ long: "--revert-current",
34
+ description: "Revert to current snapshot.",
35
+ boolean: false
36
36
 
37
37
  option :power,
38
- long: "--start",
39
- description: "Indicates whether to start the VM after a successful revert",
40
- boolean: false
38
+ long: "--start",
39
+ description: "Indicates whether to start the VM after a successful revert",
40
+ boolean: false
41
41
 
42
42
  option :wait,
43
- long: "--wait",
44
- description: "Indicates whether to wait for creation/removal to complete",
45
- boolean: false
43
+ long: "--wait",
44
+ description: "Indicates whether to wait for creation/removal to complete",
45
+ boolean: false
46
46
 
47
47
  option :find, # imma deprecate this
48
- long: "--find",
49
- description: "Finds the virtual machine by searching all folders"
48
+ long: "--find",
49
+ description: "Finds the virtual machine by searching all folders"
50
50
 
51
51
  option :dump_memory,
52
- long: "--dump-memory",
53
- boolean: true,
54
- description: "Dump the memory in the snapshot",
55
- default: false
52
+ long: "--dump-memory",
53
+ boolean: true,
54
+ description: "Dump the memory in the snapshot",
55
+ default: false
56
56
 
57
57
  option :quiesce,
58
- long: "--quiesce",
59
- boolean: true,
60
- description: "Quiesce the VM prior to snapshotting",
61
- default: false
58
+ long: "--quiesce",
59
+ boolean: true,
60
+ description: "Quiesce the VM prior to snapshotting",
61
+ default: false
62
62
 
63
63
  option :snapshot_description,
64
- long: "--snapshot-descr DESCR",
65
- description: "Snapshot description",
66
- default: ""
64
+ long: "--snapshot-descr DESCR",
65
+ description: "Snapshot description",
66
+ default: ""
67
67
 
68
68
  def run
69
69
  $stdout.sync = true
@@ -114,10 +114,12 @@ class Chef::Knife::VsphereVmSnapshot < Chef::Knife::BaseVsphereCommand
114
114
  end
115
115
 
116
116
  return unless get_config(:revert_snapshot)
117
+
117
118
  ss_name = get_config(:revert_snapshot)
118
119
  snapshot = find_node(snapshot_list, ss_name)
119
120
  snapshot.RevertToSnapshot_Task(suppressPowerOn: false).wait_for_completion
120
121
  return unless get_config(:power)
122
+
121
123
  vm.PowerOnVM_Task.wait_for_completion
122
124
  puts "Powered on virtual machine #{vmname}"
123
125
  end