knife-vsphere 0.1.6 → 0.1.7
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.
- data/lib/chef/knife/vsphere_vm_clone.rb +24 -11
- metadata +4 -3
@@ -31,8 +31,7 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
31
31
|
|
32
32
|
option :resource_pool,
|
33
33
|
:long => "--resource-pool POOL",
|
34
|
-
:description => "The resource pool into which to put the cloned VM"
|
35
|
-
:default => ''
|
34
|
+
:description => "The resource pool into which to put the cloned VM"
|
36
35
|
|
37
36
|
option :source_vm,
|
38
37
|
:long => "--template TEMPLATE",
|
@@ -75,15 +74,15 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
75
74
|
:long => "--cram CUST_MEMORY_GB",
|
76
75
|
:description => "Gigabytes of RAM"
|
77
76
|
|
78
|
-
option :power,
|
77
|
+
option :power,
|
79
78
|
:long => "--start STARTVM",
|
80
79
|
:description => "Indicates whether to start the VM after a successful clone",
|
81
|
-
:default =>
|
80
|
+
:default => false
|
82
81
|
|
83
|
-
option :bootstrap,
|
82
|
+
option :bootstrap,
|
84
83
|
:long => "--bootstrap FALSE",
|
85
84
|
:description => "Indicates whether to bootstrap the VM",
|
86
|
-
:default =>
|
85
|
+
:default => false
|
87
86
|
|
88
87
|
option :fqdn,
|
89
88
|
:long => "--fqdn SERVER_FQDN",
|
@@ -156,7 +155,6 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
156
155
|
:default => false
|
157
156
|
|
158
157
|
def run
|
159
|
-
|
160
158
|
$stdout.sync = true
|
161
159
|
|
162
160
|
vmname = @name_args[0]
|
@@ -167,16 +165,21 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
167
165
|
config[:fqdn] = vmname unless config[:fqdn]
|
168
166
|
config[:chef_node_name] = vmname unless config[:chef_node_name]
|
169
167
|
|
170
|
-
get_vim_connection
|
168
|
+
vim = get_vim_connection
|
171
169
|
|
172
|
-
|
170
|
+
dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
|
171
|
+
dc = vim.serviceInstance.find_datacenter(dcname) or abort "datacenter not found"
|
172
|
+
|
173
|
+
src_folder = find_folder(config[:folder]) || dc.vmFolder
|
173
174
|
|
174
175
|
src_vm = find_in_folder(src_folder, RbVmomi::VIM::VirtualMachine, config[:source_vm]) or
|
175
176
|
abort "VM/Template not found"
|
176
177
|
|
177
178
|
clone_spec = generate_clone_spec(src_vm.config)
|
178
179
|
|
179
|
-
|
180
|
+
cust_folder = config[:dest_folder] || config[:folder]
|
181
|
+
|
182
|
+
dest_folder = cust_folder.nil? ? src_vm.vmFolder : find_folder(cust_folder)
|
180
183
|
|
181
184
|
task = src_vm.CloneVM_Task(:folder => dest_folder, :name => vmname, :spec => clone_spec)
|
182
185
|
puts "Cloning template #{config[:source_vm]} to new VM #{vmname}"
|
@@ -201,7 +204,17 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
|
|
201
204
|
|
202
205
|
# Builds a CloneSpec
|
203
206
|
def generate_clone_spec (src_config)
|
204
|
-
|
207
|
+
|
208
|
+
rspec = nil
|
209
|
+
if config[:resource_pool]
|
210
|
+
rspec = RbVmomi::VIM.VirtualMachineRelocateSpec(:pool => find_pool(config[:resource_pool]))
|
211
|
+
else
|
212
|
+
dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
|
213
|
+
dc = config[:vim].serviceInstance.find_datacenter(dcname) or abort "datacenter not found"
|
214
|
+
hosts = find_all_in_folder(dc.hostFolder, RbVmomi::VIM::ComputeResource)
|
215
|
+
rp = hosts.first.resourcePool
|
216
|
+
rspec = RbVmomi::VIM.VirtualMachineRelocateSpec(:pool => rp)
|
217
|
+
end
|
205
218
|
|
206
219
|
if config[:datastore]
|
207
220
|
rspec.datastore = find_datastore(config[:datastore])
|
metadata
CHANGED
@@ -2,15 +2,16 @@
|
|
2
2
|
name: knife-vsphere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.7
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Ezra Pagel
|
9
|
+
- Jesse Campbell
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
13
|
|
13
|
-
date: 2012-01-
|
14
|
+
date: 2012-01-24 00:00:00 -06:00
|
14
15
|
default_executable:
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
@@ -64,7 +65,7 @@ files:
|
|
64
65
|
- lib/chef/knife/vsphere_vm_state.rb
|
65
66
|
- lib/knife-vsphere/version.rb
|
66
67
|
has_rdoc: true
|
67
|
-
homepage:
|
68
|
+
homepage: http://github.com/ezrapagel/knife-vsphere
|
68
69
|
licenses: []
|
69
70
|
|
70
71
|
post_install_message:
|