knife-vsphere 2.1.0 → 2.1.1

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: 28d327261e11658b4d6f926e93b136a1c4979e55
4
- data.tar.gz: 4c0499b076d8197ccdbd44f9aba9834989e65743
3
+ metadata.gz: 5a38302a790751f683b4e650f7bf7bb8425409b2
4
+ data.tar.gz: 2c4f53befb4b733af86250addfcd844f417df1be
5
5
  SHA512:
6
- metadata.gz: dfdd72ab2858dc5ae00bc8e688c737562a68eb65e52a34e004629a7d7b40a1acb3776dc061c16cfc6699b788ea2f9c66c222af7608b8f3f174cee4fc0de775c1
7
- data.tar.gz: 11f6c48d15e56559a0b6181d9e6506ae0c7d77ad9eec8f70dacbfaf4ab4103d31d18c8551c8a0c468097573c1e1fc4dcad753cded01d84a86a898b94e46a8e26
6
+ metadata.gz: 8fc957ac456c865811d93ea7b6e9ce6006b85e26ab710a21e8cd0ac31e6e39e5665c55a1b6ac1f1e78076cff52ea79c8863460e4f04d6df7c7bdb68f07a8ebd4
7
+ data.tar.gz: a51ce26b8a3e093dae4a11e82627fccfffa906b8c2fbef53aa935e29fbdb2cdb8dadd8830d1336e3e14b59f2d0dbe3d2b4c64bcc248452bd88eb468b9a14ac74
@@ -8,8 +8,8 @@ require 'chef/knife/search_helper'
8
8
  # VsphereVMconfig extends the BaseVspherecommand
9
9
  class Chef::Knife::VsphereVmConfig < Chef::Knife::BaseVsphereCommand
10
10
  include SearchHelper
11
- banner "knife vsphere vm config VMNAME PROPERTY VALUE.
12
- See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.vm.ConfigSpec.html\"
11
+ banner "knife vsphere vm config VMNAME PROPERTY VALUE (PROPERTY VALUE)...
12
+ See \"https://www.vmware.com/support/developer/converter-sdk/conv60_apireference/vim.vm.ConfigSpec.html\"
13
13
  for allowed ATTRIBUTE values (any property of type xs:string is supported)."
14
14
 
15
15
  common_options
@@ -18,31 +18,19 @@ class Chef::Knife::VsphereVmConfig < Chef::Knife::BaseVsphereCommand
18
18
  #
19
19
  def run
20
20
  $stdout.sync = true
21
- vmname = @name_args[0]
21
+ vmname = @name_args.shift
22
22
  if vmname.nil?
23
23
  show_usage
24
24
  fatal_exit('You must specify a virtual machine name')
25
25
  end
26
26
 
27
- property_name = @name_args[1]
28
- if property_name.nil?
29
- show_usage
30
- fatal_exit('You must specify a PROPERTY name (e.g. annotation)')
27
+ unless @name_args.length > 0 && @name_args.length % 2 == 0
28
+ fatal_exit('You must specify a series of PROPERTY name (e.g. annotation) followed by a value')
31
29
  end
32
- property_name = property_name.to_sym
33
-
34
- property_value = @name_args[2]
35
- if property_value.nil?
36
- show_usage
37
- fatal_exit('You must specify a PROPERTY value')
38
- end
39
-
40
- vim_connection
41
30
 
42
31
  vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
43
32
 
44
- properties = {}
45
- properties[property_name] = property_value
33
+ properties = @name_args.each_slice(2).map { |prop, val| [prop.to_sym, val] }.to_h
46
34
  vm.ReconfigVM_Task(spec: RbVmomi::VIM.VirtualMachineConfigSpec(properties)).wait_for_completion
47
35
  end
48
36
  end
@@ -3,11 +3,12 @@
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
  # VsphereVMexecute extends the Basevspherecommand
10
9
  class Chef::Knife::VsphereVmExecute < Chef::Knife::BaseVsphereCommand
10
+ include SearchHelper
11
+
11
12
  banner 'knife vsphere vm execute VMNAME COMMAND ARGS'
12
13
 
13
14
  option :exec_user,
@@ -30,34 +31,29 @@ class Chef::Knife::VsphereVmExecute < Chef::Knife::BaseVsphereCommand
30
31
  #
31
32
  def run
32
33
  $stdout.sync = true
33
- vmname = @name_args[0]
34
+ vmname = @name_args.shift
34
35
  if vmname.nil?
35
36
  show_usage
36
37
  fatal_exit('You must specify a virtual machine name')
37
38
  end
38
- command = @name_args[1]
39
+ command = @name_args.shift
39
40
  if command.nil?
40
41
  show_usage
41
42
  fatal_exit('You must specify a command to execute')
42
43
  end
43
44
 
44
- args = @name_args[2]
45
- args = '' if args.nil?
46
-
47
- vim = vim_connection
48
-
49
- dc = datacenter
50
- folder = find_folder(get_config(:folder)) || dc.vmFolder
45
+ args = @name_args
46
+ args = '' if args.nil? || args.empty?
51
47
 
52
- vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) || abort("VM #{vmname} not found")
48
+ vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
53
49
 
54
- gom = vim.serviceContent.guestOperationsManager
50
+ gom = vim_connection.serviceContent.guestOperationsManager
55
51
 
56
52
  guest_auth = RbVmomi::VIM::NamePasswordAuthentication(interactiveSession: false,
57
53
  username: config[:exec_user],
58
54
  password: config[:exec_passwd])
59
55
  prog_spec = RbVmomi::VIM::GuestProgramSpec(programPath: command,
60
- arguments: args,
56
+ arguments: args.join(' '),
61
57
  workingDirectory: get_config(:exec_dir))
62
58
 
63
59
  gom.processManager.StartProgramInGuest(vm: vm, auth: guest_auth, spec: prog_spec)
@@ -16,33 +16,33 @@ class Chef::Knife::VsphereVmShow < Chef::Knife::BaseVsphereCommand
16
16
  #
17
17
  def run
18
18
  $stdout.sync = true
19
- vmname = @name_args[0]
19
+ vmname = @name_args.shift
20
20
  if vmname.nil?
21
21
  show_usage
22
22
  fatal_exit('You must specify a virtual machine name')
23
23
  end
24
24
 
25
- query_string = @name_args[1]
26
- if query_string.nil?
25
+ if @name_args.empty?
27
26
  show_usage
28
27
  fatal_exit('You must specify a QUERY value (e.g. guest.ipAddress or network[0].name)')
29
28
  end
30
29
 
31
- vim_connection
32
-
33
30
  vm = get_vm_by_name(vmname, get_config(:folder)) || fatal_exit("Could not find #{vmname}")
34
31
 
35
- # split QUERY by dots, and walk the object model
36
- query = query_string.split '.'
37
- result = vm
38
- query.each do |part|
39
- message, index = part.split(/[\[\]]/)
40
- unless result.respond_to? message.to_sym
41
- fatal_exit("\"#{query_string}\" not recognized.")
32
+ out = @name_args.map do |query_string|
33
+ # split QUERY by dots, and walk the object model
34
+ query = query_string.split '.'
35
+ result = vm
36
+ query.each do |part|
37
+ message, index = part.split(/[\[\]]/)
38
+ unless result.respond_to? message.to_sym
39
+ fatal_exit("\"#{query_string}\" not recognized.")
40
+ end
41
+ result = index ? result.send(message)[index.to_i] : result.send(message)
42
42
  end
43
43
 
44
- result = index ? result.send(message)[index.to_i] : result.send(message)
44
+ { query_string => result }
45
45
  end
46
- puts result
46
+ ui.output out
47
47
  end
48
48
  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.1.0'
4
+ VERSION = '2.1.1'
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.1.0
4
+ version: 2.1.1
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-27 00:00:00.000000000 Z
11
+ date: 2018-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: knife-windows
@@ -208,7 +208,6 @@ files:
208
208
  - lib/chef/knife/vsphere_vm_network_set.rb
209
209
  - lib/chef/knife/vsphere_vm_property_get.rb
210
210
  - lib/chef/knife/vsphere_vm_property_set.rb
211
- - lib/chef/knife/vsphere_vm_query.rb
212
211
  - lib/chef/knife/vsphere_vm_show.rb
213
212
  - lib/chef/knife/vsphere_vm_snapshot.rb
214
213
  - lib/chef/knife/vsphere_vm_state.rb
@@ -1,19 +0,0 @@
1
- require 'chef/knife'
2
- require 'chef/knife/base_vsphere_command'
3
-
4
- # VsphereVmQuery extends the BaseVspherecommand
5
- class Chef::Knife::VsphereVmQuery < Chef::Knife::BaseVsphereCommand
6
- banner "knife vsphere vm query VMNAME QUERY. See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.VirtualMachine.html\" for allowed QUERY values."
7
-
8
- common_options
9
-
10
- # The main run method for vm_query
11
- #
12
- def run
13
- args = ARGV
14
- args[2] = 'show'
15
- ui.warn 'vsphere vm query is moving to vsphere vm show. Next time, please run'
16
- ui.warn args.join " "
17
- Chef::Knife.run(args)
18
- end
19
- end