knife-vsphere 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7da50d689bdd4164cea3df391395eca1a9acb4e5
4
- data.tar.gz: 6682cf4d67ef8da7290a9fda877813b8ab33a8e5
3
+ metadata.gz: eb16b64d53791bd6e96ba472a5567de9c8f16cf2
4
+ data.tar.gz: 6da5cf9fe415bba0e43e48ecf6b70e084152dde1
5
5
  SHA512:
6
- metadata.gz: e1f0c1e19b98f0292b9596ed8df1fae872f88c17d8fb3e0ba0d4f0d78a115a54e18c0b224165d19fd6b0e22bd02c492d151312e7a932708636f96c7b305b19fd
7
- data.tar.gz: 2f286acc8610eeba75e6edadb76a3c6282b2243eec4fbd7c1582962b5f3b5baea2a57041db9f6e94ee3308035f80a526c08fe0d448ab07717aacddb0f31939fc
6
+ metadata.gz: 29a121097a149a4f65a477e25e81a8a5050f30211a34819453bd9ee40f919b5173c6fd42f96ffc23804c5530e1ec79a18f8453eac427e3146d4b6db654fd586c
7
+ data.tar.gz: 54c0d812429c81c78961c7e3cdda47c713fa175e53304289831c1fb8105f5132a7bcdb7a57e4648519d53daae996812c556c2b944c3c7ea6d7e7b72726d2b069
@@ -126,31 +126,6 @@ class Chef
126
126
  @password ||= ui.ask('Enter your password: ') { |q| q.echo = false }
127
127
  end
128
128
 
129
- def get_vm(vmname)
130
- vim_connection
131
- base_folder = find_folder(get_config(:folder))
132
- traverse_folders_for_vm(base_folder, vmname)
133
- end
134
-
135
- def get_vms(vmname)
136
- vim_connection
137
- base_folder = find_folder(get_config(:folder))
138
- traverse_folders_for_vms(base_folder, vmname)
139
- end
140
-
141
- def traverse_folders_for_vm(folder, vmname)
142
- children = folder.children.find_all
143
- children.each do |child|
144
- if child.class == RbVmomi::VIM::VirtualMachine && child.name == vmname
145
- return child
146
- elsif child.class == RbVmomi::VIM::Folder
147
- vm = traverse_folders_for_vm(child, vmname)
148
- return vm if vm
149
- end
150
- end
151
- false
152
- end
153
-
154
129
  def traverse_folders_for_pools(folder)
155
130
  retval = []
156
131
  children = folder.children.find_all
@@ -177,19 +152,6 @@ class Chef
177
152
  retval
178
153
  end
179
154
 
180
- def traverse_folders_for_vms(folder, vmname)
181
- retval = []
182
- children = folder.children.find_all
183
- children.each do |child|
184
- if child.class == RbVmomi::VIM::VirtualMachine && child.name == vmname
185
- retval << child
186
- elsif child.class == RbVmomi::VIM::Folder
187
- retval.concat(traverse_folders_for_vms(child, vmname))
188
- end
189
- end
190
- retval
191
- end
192
-
193
155
  def traverse_folders_for_dc(folder, dcname)
194
156
  children = folder.children.find_all
195
157
  children.each do |child|
@@ -6,14 +6,20 @@ module SearchHelper
6
6
  # and `#obj` will return the actual object (but make a call to the server)
7
7
  # param [Array<String>] properties to retrieve
8
8
  # @return [Array<RbVmomi::VIM::ObjectContent>]
9
- def get_all_vm_objects(properties = ['name'])
9
+ def get_all_vm_objects(opts = {})
10
10
  pc = vim_connection.serviceInstance.content.propertyCollector
11
11
  viewmgr = vim_connection.serviceInstance.content.viewManager
12
- root_folder = vim_connection.serviceInstance.content.rootFolder
13
- vmview = viewmgr.CreateContainerView(container: root_folder,
12
+ folder = if opts[:folder]
13
+ find_folder(opts[:folder])
14
+ else
15
+ vim_connection.serviceInstance.content.rootFolder
16
+ end
17
+ vmview = viewmgr.CreateContainerView(container: folder,
14
18
  type: ['VirtualMachine'],
15
19
  recursive: true)
16
20
 
21
+ opts[:properties] ||= ['name']
22
+
17
23
  filter_spec = RbVmomi::VIM.PropertyFilterSpec(
18
24
  objectSet: [
19
25
  obj: vmview,
@@ -28,14 +34,14 @@ module SearchHelper
28
34
  ]
29
35
  ],
30
36
  propSet: [
31
- { type: 'VirtualMachine', pathSet: properties }
37
+ { type: 'VirtualMachine', pathSet: opts[:properties] }
32
38
  ]
33
39
  )
34
40
  pc.RetrieveProperties(specSet: [filter_spec])
35
41
  end
36
42
 
37
- def get_vm_by_name(vmname)
38
- vm = get_all_vm_objects.detect { |r| r['name'] == vmname }
43
+ def get_vm_by_name(vmname, folder = nil)
44
+ vm = get_all_vm_objects(folder: folder).detect { |r| r['name'] == vmname }
39
45
  vm ? vm.obj : nil
40
46
  end
41
47
  end
@@ -5,10 +5,12 @@
5
5
 
6
6
  require 'chef/knife'
7
7
  require 'chef/knife/base_vsphere_command'
8
+ require 'chef/knife/search_helper'
8
9
 
9
10
  # Lists all known VM templates in the configured datacenter
10
11
  # VsphereTemplatelist extends the BaseVspherecommand
11
12
  class Chef::Knife::VsphereTemplateList < Chef::Knife::BaseVsphereCommand
13
+ include SearchHelper
12
14
  banner 'knife vsphere template list'
13
15
 
14
16
  common_options
@@ -21,13 +23,13 @@ class Chef::Knife::VsphereTemplateList < Chef::Knife::BaseVsphereCommand
21
23
 
22
24
  vim_connection
23
25
 
24
- base_folder = find_folder(get_config(:folder))
25
-
26
- vms = find_all_in_folder(base_folder, RbVmomi::VIM::VirtualMachine)
27
- .select { |v| !v.config.nil? && v.config.template == true }
26
+ vms = get_all_vm_objects(
27
+ folder: get_config(:folder),
28
+ properties: ['name', 'config.template']
29
+ ).select { |vm| vm['config.template'] == true }
28
30
 
29
31
  vm_list = vms.map do |vm|
30
- { 'Template Name' => vm.name }
32
+ { 'Template Name' => vm['name'] }
31
33
  end
32
34
 
33
35
  ui.output(vm_list)
@@ -2,11 +2,11 @@
2
2
 
3
3
  require 'chef/knife'
4
4
  require 'chef/knife/base_vsphere_command'
5
- require 'rbvmomi'
6
- require 'netaddr'
5
+ require 'chef/knife/search_helper'
7
6
 
8
7
  # VsphereVmCdrom extends the BaseVspherecommand
9
8
  class Chef::Knife::VsphereVmCdrom < Chef::Knife::BaseVsphereCommand
9
+ include SearchHelper
10
10
  banner 'knife vsphere vm cdrom VMNAME (options)'
11
11
 
12
12
  # The empty device name.
@@ -64,20 +64,7 @@ class Chef::Knife::VsphereVmCdrom < Chef::Knife::BaseVsphereCommand
64
64
  fatal_exit 'You must specify the name and path of an ISO with --iso' if get_config(:attach) && !get_config(:iso)
65
65
  fatal_exit 'You must specify the datastore containing the ISO with --datastore' if get_config(:attach) && !get_config(:datastore)
66
66
 
67
- vim_connection
68
-
69
- if get_config(:recursive)
70
- vms = get_vms(vmname)
71
- if vms.length > 1
72
- fatal_exit "More than one VM with name #{vmname} found:\n" + vms.map { |vm| get_path_to_object(vm) }.join("\n")
73
- end
74
- fatal_exit "VM #{vmname} not found" if vms.empty?
75
- vm = vms[0]
76
- else
77
- base_folder = find_folder(get_config(:folder))
78
-
79
- vm = find_in_folder(base_folder, RbVmomi::VIM::VirtualMachine, vmname) || fatal_exit("VM #{vmname} not found")
80
- end
67
+ vm = get_vm_by_name(vmname, config[:folder]) || fatal_exit("Could not find #{vmname}")
81
68
 
82
69
  cdrom_obj = vm.config.hardware.device.find { |hw| hw.class == RbVmomi::VIM::VirtualCdrom }
83
70
  fatal_exit 'Could not find a cd drive' unless cdrom_obj
@@ -39,7 +39,7 @@ class Chef::Knife::VsphereVmConfig < Chef::Knife::BaseVsphereCommand
39
39
 
40
40
  vim_connection
41
41
 
42
- vm = get_vm_by_name(vmname) || fatal_exit("Could not find #{vmname}")
42
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
43
43
 
44
44
  properties = {}
45
45
  properties[property_name] = property_value
@@ -5,6 +5,7 @@
5
5
 
6
6
  require 'chef/knife'
7
7
  require 'chef/knife/base_vsphere_command'
8
+ require 'chef/knife/search_helper'
8
9
  require 'rbvmomi'
9
10
 
10
11
  # These two are needed for the '--purge' deletion case
@@ -14,6 +15,7 @@ require 'chef/api_client'
14
15
  # Delete a virtual machine from vCenter
15
16
  # VsphereVmDelete extends the BaseVspherecommand
16
17
  class Chef::Knife::VsphereVmDelete < Chef::Knife::BaseVsphereCommand
18
+ include SearchHelper
17
19
  banner 'knife vsphere vm delete VMNAME (options)'
18
20
 
19
21
  option :purge,
@@ -56,11 +58,7 @@ class Chef::Knife::VsphereVmDelete < Chef::Knife::BaseVsphereCommand
56
58
  fatal_exit('You must specify a virtual machine name')
57
59
  end
58
60
 
59
- vim_connection
60
-
61
- base_folder = find_folder(get_config(:folder))
62
-
63
- vm = traverse_folders_for_vm(base_folder, vmname) || fatal_exit("VM #{vmname} not found")
61
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
64
62
 
65
63
  vm.PowerOffVM_Task.wait_for_completion unless vm.runtime.powerState == 'poweredOff'
66
64
  vm.Destroy_Task.wait_for_completion
@@ -5,9 +5,10 @@
5
5
 
6
6
  require 'chef/knife'
7
7
  require 'chef/knife/base_vsphere_command'
8
- require 'rbvmomi'
8
+ require 'chef/knife/search_helper'
9
9
 
10
10
  class Chef::Knife::VsphereVmDiskExtend < Chef::Knife::BaseVsphereCommand
11
+ include SearchHelper
11
12
  banner 'knife vsphere vm disk extend VMNAME SIZE. Extends the disk of vm VMNAME to SIZE kilobytes.'
12
13
 
13
14
  common_options
@@ -36,9 +37,7 @@ class Chef::Knife::VsphereVmDiskExtend < Chef::Knife::BaseVsphereCommand
36
37
 
37
38
  dc = datacenter
38
39
 
39
- folder = find_folder(get_config(:folder)) || dc.vmFolder
40
-
41
- vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) || abort("VM #{vmname} not found")
40
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
42
41
 
43
42
  disks = vm.config.hardware.device.select do |device|
44
43
  device.is_a?(RbVmomi::VIM::VirtualDisk) && (disk_name.nil? || device.deviceInfo.label == disk_name)
@@ -21,7 +21,7 @@ class Chef::Knife::VsphereVmDiskList < Chef::Knife::BaseVsphereCommand
21
21
  fatal_exit 'You must specify a virtual machine name'
22
22
  end
23
23
 
24
- vm = get_vm_by_name(vmname) || fatal_exit("Could not find #{vmname}")
24
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
25
25
 
26
26
  disks = vm.config.hardware.device.select do |device|
27
27
  device.is_a? RbVmomi::VIM::VirtualDisk
@@ -8,22 +8,18 @@
8
8
 
9
9
  require 'chef/knife'
10
10
  require 'chef/knife/base_vsphere_command'
11
- require 'rbvmomi'
11
+ require 'chef/knife/search_helper'
12
12
 
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
16
  # Vspherevmmarkastemplate extends the Basevspherecommand
17
17
  class Chef::Knife::VsphereVmMarkastemplate < Chef::Knife::BaseVsphereCommand
18
+ include SearchHelper
18
19
  banner 'knife vsphere vm markastemplate VMNAME'
19
20
 
20
21
  common_options
21
22
 
22
- option :folder,
23
- long: '--folder FOLDER',
24
- description: 'The folder which contains the VM',
25
- default: ''
26
-
27
23
  # The main run method for vm_markastemplate
28
24
  #
29
25
  def run
@@ -34,16 +30,8 @@ class Chef::Knife::VsphereVmMarkastemplate < Chef::Knife::BaseVsphereCommand
34
30
  show_usage
35
31
  fatal_exit('You must specify a virtual machine name')
36
32
  end
37
- config[:chef_node_name] = vmname unless config[:chef_node_name]
38
- config[:vmname] = vmname
39
-
40
- vim_connection
41
-
42
- dc = datacenter
43
-
44
- src_folder = find_folder(get_config(:folder)) || dc.vmFolder
45
33
 
46
- vm = find_in_folder(src_folder, RbVmomi::VIM::VirtualMachine, config[:vmname]) || abort('VM not found')
34
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
47
35
 
48
36
  puts "Marking VM #{vmname} as template"
49
37
  vm.MarkAsTemplate()
@@ -4,9 +4,11 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
+ require 'chef/knife/search_helper'
7
8
 
8
9
  # migrate vm to specified resource pool , datastore and host
9
10
  class Chef::Knife::VsphereVmMigrate < Chef::Knife::BaseVsphereCommand
11
+ include SearchHelper
10
12
  # migrate --resource-pool --dest-host --dest-datastore
11
13
  banner 'knife vsphere vm migrate (options)'
12
14
 
@@ -45,17 +47,13 @@ class Chef::Knife::VsphereVmMigrate < Chef::Knife::BaseVsphereCommand
45
47
  fatal_exit('You must specify a virtual machine name')
46
48
  end
47
49
 
48
- vim_connection
49
- dc = datacenter
50
- folder = find_folder(get_config(:folder)) || dc.vmFolder
51
-
52
- vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) || abort("VM #{vmname} not found")
50
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
53
51
 
54
52
  priority = config[:priority]
55
53
  dest_host = config[:dest_host]
56
54
  ndc = find_datastore(config[:dest_datastore]) || abort('dest-datastore not found')
57
55
  pool = find_pool(config[:resource_pool]) if config[:resource_pool]
58
- dest_host = find_host_folder(dc.hostFolder, dest_host)
56
+ dest_host = find_host_folder(datacenter.hostFolder, dest_host)
59
57
  migrate_spec = RbVmomi::VIM.VirtualMachineRelocateSpec(datastore: ndc, pool: pool, host: dest_host)
60
58
  vm.RelocateVM_Task(spec: migrate_spec, priority: priority).wait_for_completion
61
59
  end
@@ -4,10 +4,12 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
+ require 'chef/knife/search_helper'
7
8
 
8
9
  # Lists all known virtual machines in the configured datacenter
9
10
  # VsphereVmMove extends the BaseVspherecommand
10
11
  class Chef::Knife::VsphereVmMove < Chef::Knife::BaseVsphereCommand
12
+ include SearchHelper
11
13
  banner 'knife vsphere vm move'
12
14
 
13
15
  common_options
@@ -79,12 +81,7 @@ class Chef::Knife::VsphereVmMove < Chef::Knife::BaseVsphereCommand
79
81
  fatal_exit('You must specify a virtual machine name')
80
82
  end
81
83
 
82
- vim = vim_connection
83
- dcname = get_config(:vsphere_dc)
84
- dc = vim.serviceInstance.find_datacenter(dcname) || abort('datacenter not found')
85
- folder = find_folder(get_config(:folder)) || dc.vmFolder
86
-
87
- vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) || abort("VM #{vmname} not found")
84
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
88
85
 
89
86
  if get_config(:thin_provision) || get_config(:thick_provision)
90
87
  convert_vm(vm)
@@ -4,10 +4,12 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
+ require 'chef/knife/search_helper'
7
8
 
8
9
  # Switch VM networking state up/down (on all network interfaces)
9
10
  # VsphereVmNet extends the BaseVspherecommand
10
11
  class Chef::Knife::VsphereVmNet < Chef::Knife::BaseVsphereCommand
12
+ include SearchHelper
11
13
  banner 'knife vsphere vm net STATE VMNAME'
12
14
  common_options
13
15
 
@@ -32,11 +34,9 @@ class Chef::Knife::VsphereVmNet < Chef::Knife::BaseVsphereCommand
32
34
  elsif state == 'down'
33
35
  if_state = false
34
36
  end
35
- vim_connection
36
- dc = datacenter
37
- folder = find_folder(get_config(:folder)) || dc.vmFolder
38
- vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) ||
39
- abort("VM #{vmname} not found")
37
+
38
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
39
+
40
40
  vm.config.hardware.device.each.grep(RbVmomi::VIM::VirtualEthernetCard) do |a|
41
41
  backing = a.backing
42
42
  key = a.key
@@ -4,10 +4,11 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
- require 'rbvmomi'
7
+ require 'chef/knife/search_helper'
8
8
  require 'netaddr'
9
9
 
10
10
  class Chef::Knife::VsphereVmNetworkAdd < Chef::Knife::BaseVsphereCommand
11
+ include SearchHelper
11
12
  banner 'knife vsphere vm network add VMNAME NETWORKNAME'
12
13
 
13
14
  option :adapter_type,
@@ -37,11 +38,8 @@ class Chef::Knife::VsphereVmNetworkAdd < Chef::Knife::BaseVsphereCommand
37
38
  fatal_exit('You must specify the network name')
38
39
  end
39
40
 
40
- vim_connection
41
41
 
42
- dc = datacenter
43
- folder = find_folder(get_config(:folder)) || dc.vmFolder
44
- vm = traverse_folders_for_vm(folder, vmname) || abort("VM #{vmname} not found")
42
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
45
43
 
46
44
  network = find_network(networkname)
47
45
 
@@ -4,10 +4,10 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
- require 'rbvmomi'
8
- require 'netaddr'
7
+ require 'chef/knife/search_helper'
9
8
 
10
9
  class Chef::Knife::VsphereVmNetworkDelete < Chef::Knife::BaseVsphereCommand
10
+ include SearchHelper
11
11
  banner 'knife vsphere vm network delete VMNAME NICNAME'
12
12
 
13
13
  common_options
@@ -27,8 +27,7 @@ class Chef::Knife::VsphereVmNetworkDelete < Chef::Knife::BaseVsphereCommand
27
27
  fatal_exit('You must specify the name of the NIC to delete')
28
28
  end
29
29
 
30
- vim_connection
31
- vm = get_vm(vmname) || abort('VM not found')
30
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
32
31
 
33
32
  cards = vm.config.hardware.device.grep(RbVmomi::VIM::VirtualEthernetCard)
34
33
  card = cards.detect { |c| c.deviceInfo.label == nicname }
@@ -4,11 +4,11 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
- require 'rbvmomi'
8
- require 'netaddr'
7
+ require 'chef/knife/search_helper'
9
8
 
10
9
  # VsphereVmNetworklist extends the BaseVspherecommand
11
10
  class Chef::Knife::VsphereVmNetworkList < Chef::Knife::BaseVsphereCommand
11
+ include SearchHelper
12
12
  banner 'knife vsphere vm network list VMNAME'
13
13
 
14
14
  common_options
@@ -24,15 +24,14 @@ class Chef::Knife::VsphereVmNetworkList < Chef::Knife::BaseVsphereCommand
24
24
  fatal_exit('You must specify a virtual machine name')
25
25
  end
26
26
 
27
- vim_connection
27
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
28
28
  dc = datacenter
29
- folder = find_folder(get_config(:folder)) || dc.vmFolder
30
- vm = traverse_folders_for_vm(folder, vmname) || abort("VM #{vmname} not found")
31
29
 
32
30
  vm.config.hardware.device.each.grep(RbVmomi::VIM::VirtualEthernetCard).map do |nic|
33
- dc.network.each.grep(RbVmomi::VIM::DistributedVirtualPortgroup) do |net|
31
+ dc.network.grep(RbVmomi::VIM::DistributedVirtualPortgroup) do |net|
34
32
  if nic.backing.port.portgroupKey.eql?(net.key)
35
33
  puts "NIC: #{nic.deviceInfo.label} VLAN: #{net.name}"
34
+ break
36
35
  end
37
36
  end
38
37
  end
@@ -4,10 +4,12 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
+ require 'chef/knife/search_helper'
7
8
 
8
9
  # Changes network on a certain VM
9
10
  # VsphereVmNetworkSet extends the BaseVspherecommand
10
11
  class Chef::Knife::VsphereVmNetworkSet < Chef::Knife::BaseVsphereCommand
12
+ include SearchHelper
11
13
  banner 'knife vsphere vm network set VMNAME NETWORKNAME'
12
14
 
13
15
  common_options
@@ -33,7 +35,7 @@ class Chef::Knife::VsphereVmNetworkSet < Chef::Knife::BaseVsphereCommand
33
35
  end
34
36
 
35
37
  network = find_network(networkname)
36
- vm = get_vm(vmname) || abort('VM not found')
38
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
37
39
  nic = vm.config.hardware.device.each.grep(RbVmomi::VIM::VirtualEthernetCard)[Integer(get_config(:nic))]
38
40
  if network.is_a? RbVmomi::VIM::DistributedVirtualPortgroup
39
41
  port = RbVmomi::VIM.DistributedVirtualSwitchPortConnection(switchUuid: network.config.distributedVirtualSwitch.uuid, portgroupKey: network.key)
@@ -3,11 +3,11 @@
3
3
 
4
4
  require 'chef/knife'
5
5
  require 'chef/knife/base_vsphere_command'
6
- require 'rbvmomi'
7
- require 'netaddr'
6
+ require 'chef/knife/search_helper'
8
7
 
9
8
  # VsphereVMPropertyget extends the BaseVspherecommand
10
9
  class Chef::Knife::VsphereVmPropertyGet < Chef::Knife::BaseVsphereCommand
10
+ include SearchHelper
11
11
  banner 'knife vsphere vm property get VMNAME PROPERTY. Gets a vApp Property on VMNAME.'
12
12
 
13
13
  common_options
@@ -29,12 +29,7 @@ class Chef::Knife::VsphereVmPropertyGet < Chef::Knife::BaseVsphereCommand
29
29
  end
30
30
  property_name = property_name.to_sym
31
31
 
32
- vim_connection
33
-
34
- dc = datacenter
35
- folder = find_folder(get_config(:folder)) || dc.vmFolder
36
-
37
- vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) || abort("VM #{vmname} not found")
32
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
38
33
 
39
34
  existing_property = vm.config.vAppConfig.property.find { |p| p.props[:id] == property_name.to_s }
40
35
 
@@ -43,7 +43,7 @@ class Chef::Knife::VsphereVmPropertySet < Chef::Knife::BaseVsphereCommand
43
43
 
44
44
  dc = datacenter
45
45
 
46
- vm = get_vm_by_name(vmname) || fatal_exit("Could not find #{vmname}")
46
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
47
47
 
48
48
  if vm.config.vAppConfig && vm.config.vAppConfig.property
49
49
  existing_property = vm.config.vAppConfig.property.find { |p| p.props[:id] == property_name.to_s }
@@ -1,7 +1,5 @@
1
1
  require 'chef/knife'
2
2
  require 'chef/knife/base_vsphere_command'
3
- require 'rbvmomi'
4
- require 'netaddr'
5
3
 
6
4
  # VsphereVmQuery extends the BaseVspherecommand
7
5
  class Chef::Knife::VsphereVmQuery < Chef::Knife::BaseVsphereCommand
@@ -3,11 +3,11 @@
3
3
 
4
4
  require 'chef/knife'
5
5
  require 'chef/knife/base_vsphere_command'
6
- require 'rbvmomi'
7
- require 'netaddr'
6
+ require 'chef/knife/search_helper'
8
7
 
9
8
  # VsphereVmShow extends the BaseVspherecommand
10
9
  class Chef::Knife::VsphereVmShow < Chef::Knife::BaseVsphereCommand
10
+ include SearchHelper
11
11
  banner "knife vsphere vm show VMNAME QUERY. See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.VirtualMachine.html\" for allowed QUERY values."
12
12
 
13
13
  common_options
@@ -30,10 +30,7 @@ class Chef::Knife::VsphereVmShow < Chef::Knife::BaseVsphereCommand
30
30
 
31
31
  vim_connection
32
32
 
33
- dc = datacenter
34
- folder = find_folder(get_config(:folder)) || dc.vmFolder
35
-
36
- vm = traverse_folders_for_vm(folder, vmname) || abort("VM #{vmname} not found")
33
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
37
34
 
38
35
  # split QUERY by dots, and walk the object model
39
36
  query = query_string.split '.'
@@ -75,9 +75,7 @@ class Chef::Knife::VsphereVmSnapshot < Chef::Knife::BaseVsphereCommand
75
75
  exit 1
76
76
  end
77
77
 
78
- vim_connection
79
-
80
- vm = get_vm_by_name(vmname) || fatal_exit("Could not find #{vmname}")
78
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
81
79
 
82
80
  if vm.snapshot
83
81
  snapshot_list = vm.snapshot.rootSnapshotList
@@ -3,11 +3,11 @@
3
3
 
4
4
  require 'chef/knife'
5
5
  require 'chef/knife/base_vsphere_command'
6
- require 'rbvmomi'
7
- require 'netaddr'
6
+ require 'chef/knife/search_helper'
8
7
 
9
8
  # Vspherevmtoolsconfig extends the BaseVspherecommand
10
9
  class Chef::Knife::VsphereVmToolsconfig < Chef::Knife::BaseVsphereCommand
10
+ include SearchHelper
11
11
  banner "knife vsphere vm toolsconfig PROPERTY VALUE.
12
12
  See \"https://www.vmware.com/support/developer/vc-sdk/visdk25pubs/ReferenceGuide/vim.vm.ToolsConfigInfo.html\"
13
13
  for available properties and types."
@@ -42,12 +42,7 @@ class Chef::Knife::VsphereVmToolsconfig < Chef::Knife::BaseVsphereCommand
42
42
 
43
43
  value = '' if get_config(:empty)
44
44
 
45
- vim_connection
46
-
47
- dc = datacenter
48
- folder = find_folder(get_config(:folder)) || dc.vmFolder
49
-
50
- vm = traverse_folders_for_vm(folder, vmname) || abort("VM #{vmname} not found")
45
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
51
46
 
52
47
  vm_config_spec = RbVmomi::VIM.VirtualMachineConfigSpec(tools: RbVmomi::VIM.ToolsConfigInfo(property => value))
53
48
  vm.ReconfigVM_Task(spec: vm_config_spec)
@@ -4,10 +4,12 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
+ require 'chef/knife/search_helper'
7
8
 
8
9
  # Add a new disk to a virtual machine
9
10
  # VsphereVmvmdkadd extends the BaseVspherecommand
10
11
  class Chef::Knife::VsphereVmVmdkAdd < Chef::Knife::BaseVsphereCommand
12
+ include SearchHelper
11
13
  banner 'knife vsphere vm vmdk add VMNAME DISK_GB'
12
14
 
13
15
  common_options
@@ -43,7 +45,8 @@ class Chef::Knife::VsphereVmVmdkAdd < Chef::Knife::BaseVsphereCommand
43
45
 
44
46
  vim = vim_connection
45
47
  vdm = vim.serviceContent.virtualDiskManager
46
- vm = get_vm(vmname)
48
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
49
+
47
50
  fatal_exit "Could not find #{vmname}" unless vm
48
51
 
49
52
  target_lun = get_config(:target_lun) unless get_config(:target_lun).nil?
@@ -4,11 +4,11 @@
4
4
  #
5
5
  require 'chef/knife'
6
6
  require 'chef/knife/base_vsphere_command'
7
- require 'rbvmomi'
8
- require 'netaddr'
7
+ require 'chef/knife/search_helper'
9
8
 
10
9
  # Main class VsphereVMvncset extends the BaseVspherecommand
11
10
  class Chef::Knife::VsphereVmVncset < Chef::Knife::BaseVsphereCommand
11
+ include SearchHelper
12
12
  banner 'knife vsphere vm vncset VMNAME COMMAND ARGS'
13
13
 
14
14
  option :vnc_port,
@@ -33,12 +33,7 @@ class Chef::Knife::VsphereVmVncset < Chef::Knife::BaseVsphereCommand
33
33
  fatal_exit('You must specify a virtual machine name')
34
34
  end
35
35
 
36
- vim_connection
37
-
38
- dc = datacenter
39
- folder = find_folder(get_config(:folder)) || dc.vmFolder
40
-
41
- vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) || abort("VM #{vmname} not found")
36
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
42
37
 
43
38
  extra_config, = vm.collect('config.extraConfig')
44
39
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  require 'chef/knife'
8
8
  require 'chef/knife/base_vsphere_command'
9
- require 'rbvmomi'
9
+ require 'chef/knife/search_helper'
10
10
  require 'chef/knife/customization_helper'
11
11
 
12
12
  # Wait for vm finishing Sysprep.
@@ -14,6 +14,7 @@ require 'chef/knife/customization_helper'
14
14
  # knife vsphere vm wait sysprep somemachine --sleep 30 \
15
15
  # --timeout 600
16
16
  class Chef::Knife::VsphereVmWaitSysprep < Chef::Knife::BaseVsphereCommand
17
+ include SearchHelper
17
18
  include CustomizationHelper
18
19
 
19
20
  banner 'knife vsphere vm wait sysprep VMNAME (options)'
@@ -47,10 +48,8 @@ class Chef::Knife::VsphereVmWaitSysprep < Chef::Knife::BaseVsphereCommand
47
48
  sleep_timeout = get_config(:timeout).to_i
48
49
 
49
50
  vim = vim_connection
50
- dc = datacenter
51
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
51
52
 
52
- folder = find_folder(get_config(:folder)) || dc.vmFolder
53
- vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) || abort("VM could not be found in #{folder}")
54
53
 
55
54
  CustomizationHelper.wait_for_sysprep(vm, vim, sleep_timeout, sleep_time)
56
55
  end
@@ -1,5 +1,5 @@
1
1
  # The main knife-vsphere module.
2
2
  module KnifeVsphere
3
3
  # The version of this gem.
4
- VERSION = '2.0.4'
4
+ VERSION = '2.0.5'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-vsphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ezra Pagel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-19 00:00:00.000000000 Z
11
+ date: 2018-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: knife-windows
@@ -237,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
237
  version: '0'
238
238
  requirements: []
239
239
  rubyforge_project:
240
- rubygems_version: 2.6.11
240
+ rubygems_version: 2.6.14
241
241
  signing_key:
242
242
  specification_version: 4
243
243
  summary: vSphere Support for Knife