knife-vsphere 1.2.4 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/chef/knife/vsphere_pool_query.rb +5 -45
- data/lib/chef/knife/vsphere_pool_show.rb +58 -0
- data/lib/chef/knife/vsphere_vm_clone.rb +4 -1
- data/lib/chef/knife/vsphere_vm_find.rb +235 -0
- data/lib/chef/knife/vsphere_vm_query.rb +5 -35
- data/lib/chef/knife/vsphere_vm_show.rb +48 -0
- data/lib/chef/knife/vsphere_vm_snapshot.rb +12 -2
- data/lib/knife-vsphere/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06e3ee523488e2e14df1e267f2c980880a427e19
|
4
|
+
data.tar.gz: 7050570b79976dc09f12b4370176645a857e3894
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6df9b92b2fe8a8ece228ca68104968c49943e6440ddbf239a590fd4de221836533cc665d5c5447e8188c1298c542966072570f44b05066a0afe7df28b0d96bc6
|
7
|
+
data.tar.gz: 733ec8e53a9930bb05632f5d8864d19bfa51c5eb44ef8ac068a532127bfe6141ee7147c05751954c5cb9db4b865100f0f45a700fb36d98d2aacad1b587c78614
|
@@ -8,51 +8,11 @@ class Chef::Knife::VspherePoolQuery < Chef::Knife::BaseVsphereCommand
|
|
8
8
|
|
9
9
|
common_options
|
10
10
|
|
11
|
-
def traverse_folders_for_pool(folder, poolname)
|
12
|
-
children = folder.children.find_all
|
13
|
-
children.each do |child|
|
14
|
-
if child.class == RbVmomi::VIM::ClusterComputeResource || child.class == RbVmomi::VIM::ComputeResource || child.class == RbVmomi::VIM::ResourcePool
|
15
|
-
return child if child.name == poolname
|
16
|
-
elsif child.class == RbVmomi::VIM::Folder
|
17
|
-
pool = traverse_folders_for_pool(child, poolname)
|
18
|
-
return pool if pool
|
19
|
-
end
|
20
|
-
end
|
21
|
-
false
|
22
|
-
end
|
23
|
-
|
24
11
|
def run
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
|
-
query_string = @name_args[1]
|
33
|
-
if query_string.nil?
|
34
|
-
show_usage
|
35
|
-
fatal_exit('You must specify a QUERY value (e.g. summary.overallStatus )')
|
36
|
-
end
|
37
|
-
|
38
|
-
vim_connection
|
39
|
-
|
40
|
-
dc = datacenter
|
41
|
-
folder = dc.hostFolder
|
42
|
-
|
43
|
-
pool = traverse_folders_for_pool(folder, poolname) || abort("Pool #{poolname} not found")
|
44
|
-
|
45
|
-
# split QUERY by dots, and walk the object model
|
46
|
-
query = query_string.split '.'
|
47
|
-
result = pool
|
48
|
-
query.each do |part|
|
49
|
-
message, index = part.split(/[\[\]]/)
|
50
|
-
unless result.respond_to? message.to_sym
|
51
|
-
fatal_exit("\"#{query_string}\" not recognized.")
|
52
|
-
end
|
53
|
-
|
54
|
-
result = index ? result.send(message)[index.to_i] : result.send(message)
|
55
|
-
end
|
56
|
-
puts result
|
12
|
+
args = ARGV
|
13
|
+
args[2] = 'show'
|
14
|
+
ui.warn 'vsphere pool query is moving to vsphere pool show. Next time, please run'
|
15
|
+
ui.warn args.join " "
|
16
|
+
Chef::Knife.run(args)
|
57
17
|
end
|
58
18
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'chef/knife'
|
2
|
+
require 'chef/knife/base_vsphere_command'
|
3
|
+
require 'rbvmomi'
|
4
|
+
require 'netaddr'
|
5
|
+
|
6
|
+
class Chef::Knife::VspherePoolShow < Chef::Knife::BaseVsphereCommand
|
7
|
+
banner "knife vsphere pool show POOLNAME QUERY. See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.ComputeResource.html\" for allowed QUERY values."
|
8
|
+
|
9
|
+
common_options
|
10
|
+
|
11
|
+
def traverse_folders_for_pool(folder, poolname)
|
12
|
+
children = folder.children.find_all
|
13
|
+
children.each do |child|
|
14
|
+
if child.class == RbVmomi::VIM::ClusterComputeResource || child.class == RbVmomi::VIM::ComputeResource || child.class == RbVmomi::VIM::ResourcePool
|
15
|
+
return child if child.name == poolname
|
16
|
+
elsif child.class == RbVmomi::VIM::Folder
|
17
|
+
pool = traverse_folders_for_pool(child, poolname)
|
18
|
+
return pool if pool
|
19
|
+
end
|
20
|
+
end
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
$stdout.sync = true
|
26
|
+
poolname = @name_args[0]
|
27
|
+
if poolname.nil?
|
28
|
+
show_usage
|
29
|
+
fatal_exit('You must specify a resource poor or cluster name (see knife vsphere pool list)')
|
30
|
+
end
|
31
|
+
|
32
|
+
query_string = @name_args[1]
|
33
|
+
if query_string.nil?
|
34
|
+
show_usage
|
35
|
+
fatal_exit('You must specify a QUERY value (e.g. summary.overallStatus )')
|
36
|
+
end
|
37
|
+
|
38
|
+
vim_connection
|
39
|
+
|
40
|
+
dc = datacenter
|
41
|
+
folder = dc.hostFolder
|
42
|
+
|
43
|
+
pool = traverse_folders_for_pool(folder, poolname) || abort("Pool #{poolname} not found")
|
44
|
+
|
45
|
+
# split QUERY by dots, and walk the object model
|
46
|
+
query = query_string.split '.'
|
47
|
+
result = pool
|
48
|
+
query.each do |part|
|
49
|
+
message, index = part.split(/[\[\]]/)
|
50
|
+
unless result.respond_to? message.to_sym
|
51
|
+
fatal_exit("\"#{query_string}\" not recognized.")
|
52
|
+
end
|
53
|
+
|
54
|
+
result = index ? result.send(message)[index.to_i] : result.send(message)
|
55
|
+
end
|
56
|
+
puts result
|
57
|
+
end
|
58
|
+
end
|
@@ -437,7 +437,10 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
437
437
|
fatal_exit "No hosts have the requested DatastoreCluster available! #{get_config(:datastorecluster)}" if hosts.empty?
|
438
438
|
|
439
439
|
if get_config(:customization_vlan)
|
440
|
-
|
440
|
+
vlan_list = get_config(:customization_vlan).split(',')
|
441
|
+
vlan_list.each do |network|
|
442
|
+
hosts.reject! { |host| !host.network.include?(find_network(network)) }
|
443
|
+
end
|
441
444
|
end
|
442
445
|
|
443
446
|
fatal_exit "No hosts have the requested Network available! #{get_config(:customization_vlan)}" if hosts.empty?
|
@@ -0,0 +1,235 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Raducu Deaconu (<rhadoo_io@yahoo.com>)
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
|
6
|
+
require 'chef/knife'
|
7
|
+
require 'chef/knife/base_vsphere_command'
|
8
|
+
require 'rbvmomi'
|
9
|
+
require 'netaddr'
|
10
|
+
|
11
|
+
PsOn = 'poweredOn'
|
12
|
+
PsOff = 'poweredOff'
|
13
|
+
PsSuspended = 'suspended'
|
14
|
+
|
15
|
+
# find vms belonging to pool that match criteria, display specified fields
|
16
|
+
class Chef::Knife::VsphereVmFind < Chef::Knife::BaseVsphereCommand
|
17
|
+
banner 'knife vsphere vm find'
|
18
|
+
|
19
|
+
common_options
|
20
|
+
|
21
|
+
option :pool,
|
22
|
+
long: '--pool pool',
|
23
|
+
short: '-h',
|
24
|
+
description: 'Target pool'
|
25
|
+
|
26
|
+
option :esx_disk,
|
27
|
+
long: '--esx-disk',
|
28
|
+
description: 'Show esx disks'
|
29
|
+
|
30
|
+
option :snapshots,
|
31
|
+
long: '--snapshots',
|
32
|
+
description: 'Show snapshots'
|
33
|
+
|
34
|
+
option :os_disk,
|
35
|
+
long: '--os-disks',
|
36
|
+
description: 'Show os disks'
|
37
|
+
|
38
|
+
option :cpu,
|
39
|
+
long: '--cpu',
|
40
|
+
description: 'Show cpu'
|
41
|
+
|
42
|
+
option :ram,
|
43
|
+
long: '--ram',
|
44
|
+
description: 'Show ram'
|
45
|
+
|
46
|
+
option :ip,
|
47
|
+
long: '--ip',
|
48
|
+
description: 'Show ip'
|
49
|
+
|
50
|
+
option :soff,
|
51
|
+
long: '--powered-off',
|
52
|
+
description: 'Show only stopped machines'
|
53
|
+
|
54
|
+
option :son,
|
55
|
+
long: '--powered-on',
|
56
|
+
description: 'Show only started machines'
|
57
|
+
|
58
|
+
option :matchip,
|
59
|
+
long: '--match-ip IP',
|
60
|
+
description: 'match ip'
|
61
|
+
|
62
|
+
option :matchos,
|
63
|
+
long: '--match-os OS',
|
64
|
+
description: 'match os'
|
65
|
+
|
66
|
+
option :matchname,
|
67
|
+
long: '--match-name VMNAME',
|
68
|
+
description: 'match name'
|
69
|
+
|
70
|
+
option :hostname,
|
71
|
+
long: '--hostname',
|
72
|
+
description: 'show hostname'
|
73
|
+
|
74
|
+
option :os,
|
75
|
+
long: '--os',
|
76
|
+
description: 'show os details'
|
77
|
+
|
78
|
+
option :alarms,
|
79
|
+
long: '--alarms',
|
80
|
+
description: 'show alarm status'
|
81
|
+
|
82
|
+
option :tools,
|
83
|
+
long: '--tools',
|
84
|
+
description: 'show tools status'
|
85
|
+
|
86
|
+
option :matchtools,
|
87
|
+
long: '--match-tools TOOLSSTATE',
|
88
|
+
description: 'match tools state'
|
89
|
+
|
90
|
+
option :full_path,
|
91
|
+
long: '--full-path',
|
92
|
+
description: 'Show full path'
|
93
|
+
|
94
|
+
$stdout.sync = true # smoother output from print
|
95
|
+
|
96
|
+
def traverse_folders_for_pool_clustercompute(folder, poolname)
|
97
|
+
# children = folder.children.find_all
|
98
|
+
children = find_all_in_folder(folder, RbVmomi::VIM::ManagedObject)
|
99
|
+
children.each do |child|
|
100
|
+
if child.class == RbVmomi::VIM::ClusterComputeResource || child.class == RbVmomi::VIM::ComputeResource || child.class == RbVmomi::VIM::ResourcePool
|
101
|
+
if child.name == poolname then return child
|
102
|
+
else if child.class == RbVmomi::VIM::Folder || child.class == RbVmomi::VIM::ComputeResource || child.class == RbVmomi::VIM::ClusterComputeResource || child.class == RbVmomi::VIM::ResourcePool
|
103
|
+
pool = traverse_folders_for_pool_clustercompute(child, poolname)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
if pool then return pool end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
return false
|
110
|
+
end
|
111
|
+
|
112
|
+
def run
|
113
|
+
poolname = config[:pool]
|
114
|
+
if poolname.nil?
|
115
|
+
show_usage
|
116
|
+
fatal_exit('You must specify a resource pool or cluster name (see knife vsphere pool list)')
|
117
|
+
end
|
118
|
+
|
119
|
+
vim = vim_connection
|
120
|
+
dc = datacenter
|
121
|
+
folder = dc.hostFolder
|
122
|
+
|
123
|
+
pool = traverse_folders_for_pool_clustercompute(folder, poolname) or abort "Pool #{poolname} not found"
|
124
|
+
|
125
|
+
if pool.class == RbVmomi::VIM::ResourcePool
|
126
|
+
vm = pool.vm
|
127
|
+
else
|
128
|
+
vm = pool.resourcePool.vm
|
129
|
+
end
|
130
|
+
|
131
|
+
unless vm.nil?
|
132
|
+
vm.each do |vmc|
|
133
|
+
state = case vmc.runtime.powerState
|
134
|
+
when PsOn
|
135
|
+
ui.color('on', :green)
|
136
|
+
when PsOff
|
137
|
+
ui.color('off', :red)
|
138
|
+
when PsSuspended
|
139
|
+
ui.color('suspended', :yellow)
|
140
|
+
end
|
141
|
+
|
142
|
+
if get_config(:matchname)
|
143
|
+
next unless vmc.name.include? config[:matchname]
|
144
|
+
end
|
145
|
+
|
146
|
+
if get_config(:matchtools)
|
147
|
+
next unless vmc.guest.toolsStatus == config[:matchtools]
|
148
|
+
end
|
149
|
+
|
150
|
+
next if get_config(:soff) && (vmc.runtime.powerState == PsOn)
|
151
|
+
|
152
|
+
next if get_config(:son) && (vmc.runtime.powerState == PsOff)
|
153
|
+
|
154
|
+
if get_config(:matchip)
|
155
|
+
if (!vmc.guest.ipAddress.nil? && vmc.guest.ipAddress != '')
|
156
|
+
next unless vmc.guest.ipAddress.include? config[:matchip]
|
157
|
+
else
|
158
|
+
next
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
unless vmc.guest.guestFullName.nil?
|
163
|
+
if get_config(:matchos)
|
164
|
+
next unless vmc.guest.guestFullName.include? config[:matchos]
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
print "#{ui.color("VM Name:", :cyan)} #{vmc.name}\t"
|
169
|
+
if get_config(:hostname)
|
170
|
+
print "#{ui.color("Hostname:", :cyan)} #{vmc.guest.hostName}\t"
|
171
|
+
end
|
172
|
+
|
173
|
+
if get_config(:full_path)
|
174
|
+
actualname = ''
|
175
|
+
vmcp = vmc
|
176
|
+
while vmcp.parent != nil && vmcp.parent.name != 'vm'
|
177
|
+
actualname.concat("#{vmcp.parent.name}/")
|
178
|
+
vmcp = vmcp.parent
|
179
|
+
end
|
180
|
+
print "#{ui.color("Folder:", :cyan)}"
|
181
|
+
print "\""
|
182
|
+
print actualname.split('/').reverse().join('/')
|
183
|
+
print "\"\t"
|
184
|
+
|
185
|
+
else
|
186
|
+
print "#{ui.color("Folder", :cyan)}: #{vmc.parent.name}\t"
|
187
|
+
end
|
188
|
+
|
189
|
+
if get_config(:ip)
|
190
|
+
print "#{ui.color("IP:", :cyan)} #{vmc.guest.ipAddress}\t"
|
191
|
+
end
|
192
|
+
if get_config(:os)
|
193
|
+
print "#{ui.color("OS:", :cyan)} #{vmc.guest.guestFullName}\t"
|
194
|
+
end
|
195
|
+
if get_config(:ram)
|
196
|
+
print "#{ui.color("RAM:", :cyan)} #{vmc.summary.config.memorySizeMB}\t"
|
197
|
+
end
|
198
|
+
if get_config(:cpu)
|
199
|
+
print "#{ui.color("CPU:", :cyan)} #{vmc.summary.config.numCpu}\t"
|
200
|
+
end
|
201
|
+
if get_config(:alarms)
|
202
|
+
print "#{ui.color("Alarms:", :cyan)} #{vmc.summary.overallStatus}\t"
|
203
|
+
end
|
204
|
+
print "#{ui.color("State:", :cyan)} #{state}\t"
|
205
|
+
if get_config(:tools)
|
206
|
+
print "#{ui.color("Tools:", :cyan)} #{vmc.guest.toolsStatus}\t"
|
207
|
+
end
|
208
|
+
|
209
|
+
if get_config(:os_disk)
|
210
|
+
print "#{ui.color("OS Disks:", :cyan)}"
|
211
|
+
vmc.guest.disk.each do |disc|
|
212
|
+
print "#{disc.diskPath} #{disc.capacity / 1024 / 1024}MB Free:#{disc.freeSpace / 1024 / 1024}MB |"
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
if get_config(:esx_disk)
|
217
|
+
print "#{ui.color("ESX Disks:", :cyan)}"
|
218
|
+
vmc.layout.disk.each do |dsc|
|
219
|
+
print "#{dsc.diskFile} | "
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
if get_config(:snapshots)
|
224
|
+
unless vmc.snapshot.nil?
|
225
|
+
print "#{ui.color("Snapshots:", :cyan)}"
|
226
|
+
vmc.snapshot.rootSnapshotList.each do |snap|
|
227
|
+
print " #{snap.name}"
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
231
|
+
puts
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
@@ -1,6 +1,3 @@
|
|
1
|
-
# Author:: Brian Dupras (<bdupras@rallydev.com>)
|
2
|
-
# License:: Apache License, Version 2.0
|
3
|
-
|
4
1
|
require 'chef/knife'
|
5
2
|
require 'chef/knife/base_vsphere_command'
|
6
3
|
require 'rbvmomi'
|
@@ -12,37 +9,10 @@ class Chef::Knife::VsphereVmQuery < Chef::Knife::BaseVsphereCommand
|
|
12
9
|
common_options
|
13
10
|
|
14
11
|
def run
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
query_string = @name_args[1]
|
23
|
-
if query_string.nil?
|
24
|
-
show_usage
|
25
|
-
fatal_exit('You must specify a QUERY value (e.g. guest.ipAddress or network[0].name)')
|
26
|
-
end
|
27
|
-
|
28
|
-
vim_connection
|
29
|
-
|
30
|
-
dc = datacenter
|
31
|
-
folder = find_folder(get_config(:folder)) || dc.vmFolder
|
32
|
-
|
33
|
-
vm = traverse_folders_for_vm(folder, vmname) || abort("VM #{vmname} not found")
|
34
|
-
|
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.")
|
42
|
-
end
|
43
|
-
|
44
|
-
result = index ? result.send(message)[index.to_i] : result.send(message)
|
45
|
-
end
|
46
|
-
puts result
|
12
|
+
args = ARGV
|
13
|
+
args[2] = 'show'
|
14
|
+
ui.warn 'vsphere vm query is moving to vsphere vm show. Next time, please run'
|
15
|
+
ui.warn args.join " "
|
16
|
+
Chef::Knife.run(args)
|
47
17
|
end
|
48
18
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Author:: Brian Dupras (<bdupras@rallydev.com>)
|
2
|
+
# License:: Apache License, Version 2.0
|
3
|
+
|
4
|
+
require 'chef/knife'
|
5
|
+
require 'chef/knife/base_vsphere_command'
|
6
|
+
require 'rbvmomi'
|
7
|
+
require 'netaddr'
|
8
|
+
|
9
|
+
class Chef::Knife::VsphereVmShow < Chef::Knife::BaseVsphereCommand
|
10
|
+
banner "knife vsphere vm show VMNAME QUERY. See \"http://pubs.vmware.com/vi3/sdk/ReferenceGuide/vim.VirtualMachine.html\" for allowed QUERY values."
|
11
|
+
|
12
|
+
common_options
|
13
|
+
|
14
|
+
def run
|
15
|
+
$stdout.sync = true
|
16
|
+
vmname = @name_args[0]
|
17
|
+
if vmname.nil?
|
18
|
+
show_usage
|
19
|
+
fatal_exit('You must specify a virtual machine name')
|
20
|
+
end
|
21
|
+
|
22
|
+
query_string = @name_args[1]
|
23
|
+
if query_string.nil?
|
24
|
+
show_usage
|
25
|
+
fatal_exit('You must specify a QUERY value (e.g. guest.ipAddress or network[0].name)')
|
26
|
+
end
|
27
|
+
|
28
|
+
vim_connection
|
29
|
+
|
30
|
+
dc = datacenter
|
31
|
+
folder = find_folder(get_config(:folder)) || dc.vmFolder
|
32
|
+
|
33
|
+
vm = traverse_folders_for_vm(folder, vmname) || abort("VM #{vmname} not found")
|
34
|
+
|
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.")
|
42
|
+
end
|
43
|
+
|
44
|
+
result = index ? result.send(message)[index.to_i] : result.send(message)
|
45
|
+
end
|
46
|
+
puts result
|
47
|
+
end
|
48
|
+
end
|
@@ -39,6 +39,12 @@ class Chef::Knife::VsphereVmSnapshot < Chef::Knife::BaseVsphereCommand
|
|
39
39
|
description: 'Indicates whether to start the VM after a successful revert',
|
40
40
|
boolean: false
|
41
41
|
|
42
|
+
option :wait,
|
43
|
+
long: '--wait',
|
44
|
+
description: 'Indicates whether to wait for creation/removal to complete',
|
45
|
+
boolean: false
|
46
|
+
|
47
|
+
|
42
48
|
def run
|
43
49
|
$stdout.sync = true
|
44
50
|
|
@@ -67,14 +73,18 @@ class Chef::Knife::VsphereVmSnapshot < Chef::Knife::BaseVsphereCommand
|
|
67
73
|
end
|
68
74
|
|
69
75
|
if config[:create_new_snapshot]
|
70
|
-
vm.CreateSnapshot_Task(name: config[:create_new_snapshot], description: '', memory: false, quiesce: false)
|
76
|
+
snapshot_task=vm.CreateSnapshot_Task(name: config[:create_new_snapshot], description: '', memory: false, quiesce: false)
|
77
|
+
snapshot_task=snapshot_task.wait_for_completion if config[:wait]
|
78
|
+
snapshot_task
|
71
79
|
end
|
72
80
|
|
73
81
|
if config[:remove_named_snapshot]
|
74
82
|
ss_name = config[:remove_named_snapshot]
|
75
83
|
snapshot = find_node(snapshot_list, ss_name)
|
76
84
|
puts "Found snapshot #{ss_name} removing."
|
77
|
-
snapshot.RemoveSnapshot_Task(removeChildren: false)
|
85
|
+
snapshot_task=snapshot.RemoveSnapshot_Task(removeChildren: false)
|
86
|
+
snapshot_task=snapshot_task.wait_for_completion if config[:wait]
|
87
|
+
snapshot_task
|
78
88
|
end
|
79
89
|
|
80
90
|
if config[:revert_current_snapshot]
|
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.
|
4
|
+
version: 1.2.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: 2015-
|
11
|
+
date: 2015-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: netaddr
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/chef/knife/vsphere_hosts_list.rb
|
87
87
|
- lib/chef/knife/vsphere_pool_list.rb
|
88
88
|
- lib/chef/knife/vsphere_pool_query.rb
|
89
|
+
- lib/chef/knife/vsphere_pool_show.rb
|
89
90
|
- lib/chef/knife/vsphere_template_list.rb
|
90
91
|
- lib/chef/knife/vsphere_vlan_create.rb
|
91
92
|
- lib/chef/knife/vsphere_vlan_list.rb
|
@@ -94,6 +95,7 @@ files:
|
|
94
95
|
- lib/chef/knife/vsphere_vm_config.rb
|
95
96
|
- lib/chef/knife/vsphere_vm_delete.rb
|
96
97
|
- lib/chef/knife/vsphere_vm_execute.rb
|
98
|
+
- lib/chef/knife/vsphere_vm_find.rb
|
97
99
|
- lib/chef/knife/vsphere_vm_list.rb
|
98
100
|
- lib/chef/knife/vsphere_vm_markastemplate.rb
|
99
101
|
- lib/chef/knife/vsphere_vm_migrate.rb
|
@@ -102,6 +104,7 @@ files:
|
|
102
104
|
- lib/chef/knife/vsphere_vm_property_get.rb
|
103
105
|
- lib/chef/knife/vsphere_vm_property_set.rb
|
104
106
|
- lib/chef/knife/vsphere_vm_query.rb
|
107
|
+
- lib/chef/knife/vsphere_vm_show.rb
|
105
108
|
- lib/chef/knife/vsphere_vm_snapshot.rb
|
106
109
|
- lib/chef/knife/vsphere_vm_state.rb
|
107
110
|
- lib/chef/knife/vsphere_vm_toolsconfig.rb
|