knife-vsphere 1.2.18 → 1.2.19

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: 1d94e79affa56d7c9ac20ff54a800e882729a428
4
- data.tar.gz: 02e05a982fde906a602ed5f5033c20f259b9db9a
3
+ metadata.gz: 0c25fd6b8d92bd7e275f83b51cf56547e11c40bc
4
+ data.tar.gz: fa0e605b6779e90693077b4505648ea123e9365d
5
5
  SHA512:
6
- metadata.gz: f674ccb248127469ec5bc4e26f9410a08602180ee205280b68ef500f8da7ef296f665f133f5ca230f051fb74948e28e6d1697a94acb0c79a676111681b074eb2
7
- data.tar.gz: 827d76a2f790947f0123a26d57703620eb9c477b37ff927be06722a4edb6ede2f93a470d2044af33a2c735357ff7a1d589815e2cbfb30572cf702e1d87e11259
6
+ metadata.gz: e82afdd76191d93c17ac79a3f349bf2fcf5225b50bc1bc97535ee7a1c017a50fe1528eb6bd83d5283f8cbe7912f458d346a7cafe482b4411c2bdf2f26ec02c24
7
+ data.tar.gz: 6ba7c5d6f7923ed5bbcb5d12b5de0855a8cfaa06656ed8b73d510bc1979c534037e6531eb294e6a2a2f9a182da62c8fe18ecd76b4deb78f94e74cdab73fa23ac
@@ -0,0 +1,68 @@
1
+ #
2
+ # Author:: Scott Williams (<scott@backups.net.au>)
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ require 'chef/knife'
6
+ require 'chef/knife/base_vsphere_command'
7
+ require 'rbvmomi'
8
+ require 'netaddr'
9
+
10
+ class Chef::Knife::VsphereVmNetworkAdd < Chef::Knife::BaseVsphereCommand
11
+ banner 'knife vsphere vm network add VMNAME NETWORKNAME'
12
+
13
+ common_options
14
+
15
+ def run
16
+ $stdout.sync = true
17
+ vmname = @name_args[0]
18
+ if vmname.nil?
19
+ show_usage
20
+ fatal_exit('You must specify a virtual machine name')
21
+ end
22
+
23
+ networkname = @name_args[1]
24
+ if networkname.nil?
25
+ show_usage
26
+ fatal_exit('You must specify the network name')
27
+ end
28
+
29
+ vim_connection
30
+
31
+ dc = datacenter
32
+ folder = find_folder(get_config(:folder)) || dc.vmFolder
33
+ vm = traverse_folders_for_vm(folder, vmname) || abort("VM #{vmname} not found")
34
+
35
+ network = find_network(networkname)
36
+
37
+ puts network.class
38
+ case network
39
+ when RbVmomi::VIM::DistributedVirtualPortgroup
40
+ switch, pg_key = network.collect 'config.distributedVirtualSwitch', 'key'
41
+ port = RbVmomi::VIM.DistributedVirtualSwitchPortConnection(
42
+ switchUuid: switch.uuid,
43
+ portgroupKey: pg_key
44
+ )
45
+ summary = network.name
46
+ backing = RbVmomi::VIM.VirtualEthernetCardDistributedVirtualPortBackingInfo(port: port)
47
+ when VIM::Network
48
+ summary = network.name
49
+ backing = RbVmomi::VIM.VirtualEthernetCardNetworkBackingInfo(deviceName: network.name)
50
+ else fail
51
+ end
52
+
53
+ vm.ReconfigVM_Task(
54
+ spec: {
55
+ deviceChange: [{
56
+ operation: :add,
57
+ fileOperation: nil,
58
+ device: RbVmomi::VIM::VirtualVmxnet3(
59
+ key: -1,
60
+ deviceInfo: { summary: summary, label: '' },
61
+ backing: backing,
62
+ addressType: 'generated'
63
+ )
64
+ }]
65
+ }
66
+ ).wait_for_completion
67
+ end
68
+ end
@@ -0,0 +1,54 @@
1
+ #
2
+ # Author:: Scott Williams (<scott@backups.net.au>)
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ require 'chef/knife'
6
+ require 'chef/knife/base_vsphere_command'
7
+ require 'rbvmomi'
8
+ require 'netaddr'
9
+
10
+ class Chef::Knife::VsphereVmVncset < Chef::Knife::BaseVsphereCommand
11
+ banner 'knife vsphere vm vncset VMNAME COMMAND ARGS'
12
+
13
+ option :vnc_port,
14
+ long: '--vnc-port PORT',
15
+ description: 'Port to run VNC on',
16
+ required: true
17
+
18
+ option :vnc_password,
19
+ long: '--vnc-password PASSWORD',
20
+ description: 'Password for connecting to VNC',
21
+ required: true
22
+
23
+ common_options
24
+
25
+ def run
26
+ $stdout.sync = true
27
+ vmname = @name_args[0]
28
+ if vmname.nil?
29
+ show_usage
30
+ fatal_exit('You must specify a virtual machine name')
31
+ end
32
+
33
+ vim_connection
34
+
35
+ dc = datacenter
36
+ folder = find_folder(get_config(:folder)) || dc.vmFolder
37
+
38
+ vm = find_in_folder(folder, RbVmomi::VIM::VirtualMachine, vmname) || abort("VM #{vmname} not found")
39
+
40
+ extra_config, = vm.collect('config.extraConfig')
41
+
42
+ vm.ReconfigVM_Task(
43
+ spec: {
44
+ extraConfig: [
45
+ { key: 'RemoteDisplay.vnc.enabled', value: 'true' },
46
+ { key: 'RemoteDisplay.vnc.port', value: config[:vnc_port].to_s },
47
+ { key: 'RemoteDisplay.vnc.password', value: config[:vnc_password].to_s }
48
+ ]
49
+ }
50
+ ).wait_for_completion
51
+
52
+ puts extra_config.detect { |x| 'RemoteDisplay.vnc.enabled'.casecmp(x.key) && 'true'.casecmp(x.value.downcase) }
53
+ end
54
+ end
@@ -1,3 +1,3 @@
1
1
  module KnifeVsphere
2
- VERSION = '1.2.18'
2
+ VERSION = '1.2.19'
3
3
  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: 1.2.18
4
+ version: 1.2.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ezra Pagel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-26 00:00:00.000000000 Z
11
+ date: 2016-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: filesize
@@ -159,6 +159,7 @@ files:
159
159
  - lib/chef/knife/vsphere_vm_migrate.rb
160
160
  - lib/chef/knife/vsphere_vm_move.rb
161
161
  - lib/chef/knife/vsphere_vm_net.rb
162
+ - lib/chef/knife/vsphere_vm_network_add.rb
162
163
  - lib/chef/knife/vsphere_vm_network_set.rb
163
164
  - lib/chef/knife/vsphere_vm_property_get.rb
164
165
  - lib/chef/knife/vsphere_vm_property_set.rb
@@ -168,6 +169,7 @@ files:
168
169
  - lib/chef/knife/vsphere_vm_state.rb
169
170
  - lib/chef/knife/vsphere_vm_toolsconfig.rb
170
171
  - lib/chef/knife/vsphere_vm_vmdk_add.rb
172
+ - lib/chef/knife/vsphere_vm_vnc_set.rb
171
173
  - lib/chef/knife/vsphere_vm_wait_sysprep.rb
172
174
  - lib/knife-vsphere/version.rb
173
175
  homepage: http://github.com/ezrapagel/knife-vsphere