vmware_web_service 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
- data/lib/VMwareWebService/MiqVimDataStore.rb +6 -7
- data/lib/VMwareWebService/MiqVimHost.rb +1 -2
- data/lib/VMwareWebService/MiqVimVm.rb +8 -8
- data/lib/VMwareWebService/VixDiskLib/VixDiskLibServer.rb +0 -1
- data/lib/VMwareWebService/VixDiskLib/vdl_wrapper.rb +0 -1
- data/lib/VMwareWebService/exception.rb +14 -0
- data/lib/VMwareWebService/miq_fault_tolerant_vim.rb +1 -0
- data/lib/VMwareWebService/version.rb +1 -1
- metadata +21 -84
- data/lib/VMwareWebService/VixDiskLib/test/api_test.rb +0 -76
- data/lib/VMwareWebService/VixDiskLib/test/cookedTest.rb +0 -86
- data/lib/VMwareWebService/VixDiskLib/test/fillDisk.rb +0 -30
- data/lib/VMwareWebService/VixDiskLib/test/rawCloneTest.rb +0 -49
- data/lib/VMwareWebService/VixDiskLib/test/rawTest.rb +0 -79
- data/lib/VMwareWebService/VixDiskLib/test/rawTest11.rb +0 -72
- data/lib/VMwareWebService/VixDiskLib/test/rawWriteTest.rb +0 -33
- data/lib/VMwareWebService/VixDiskLib/test/vixDiskModTest.rb +0 -96
- data/lib/VMwareWebService/test/CustomizationSpec/sles10-x64-vanilla-cust-spec.xml +0 -56
- data/lib/VMwareWebService/test/CustomizationSpec/w2k8-x64-vanilla-cust-spec.xml +0 -566
- data/lib/VMwareWebService/test/MiqVimBrokerClient.rb +0 -116
- data/lib/VMwareWebService/test/MiqVimBrokerServer.rb +0 -128
- data/lib/VMwareWebService/test/MiqVimFolderTest.rb +0 -57
- data/lib/VMwareWebService/test/MiqVimPerfTest.rb +0 -129
- data/lib/VMwareWebService/test/MiqVimVmTest.rb +0 -127
- data/lib/VMwareWebService/test/addDiskTest.rb +0 -45
- data/lib/VMwareWebService/test/addHostToCluster.rb +0 -89
- data/lib/VMwareWebService/test/addNasDatastoreByName.rb +0 -45
- data/lib/VMwareWebService/test/addStandaloneHost.rb +0 -59
- data/lib/VMwareWebService/test/alarmManagerTest.rb +0 -37
- data/lib/VMwareWebService/test/alarmTest.rb +0 -20
- data/lib/VMwareWebService/test/annotation.rb +0 -33
- data/lib/VMwareWebService/test/brokerClientServerStats.rb +0 -78
- data/lib/VMwareWebService/test/brokerConnectionLockTest.rb +0 -81
- data/lib/VMwareWebService/test/brokerLoadTest.rb +0 -123
- data/lib/VMwareWebService/test/brokerObjCountTest.rb +0 -43
- data/lib/VMwareWebService/test/browserTest.rb +0 -141
- data/lib/VMwareWebService/test/cloneAsyncTest.rb +0 -140
- data/lib/VMwareWebService/test/cloneCsmTest.rb +0 -162
- data/lib/VMwareWebService/test/cloneDvsTest.rb +0 -187
- data/lib/VMwareWebService/test/cloneTest.rb +0 -153
- data/lib/VMwareWebService/test/cpuAffinity.rb +0 -35
- data/lib/VMwareWebService/test/cpuMemTest.rb +0 -45
- data/lib/VMwareWebService/test/createFolderTest.rb +0 -65
- data/lib/VMwareWebService/test/createNfsDatastore.rb +0 -42
- data/lib/VMwareWebService/test/customFieldsManagerTest.rb +0 -57
- data/lib/VMwareWebService/test/customizationSpecManagerTest.rb +0 -69
- data/lib/VMwareWebService/test/diskPerf.rb +0 -122
- data/lib/VMwareWebService/test/emsRefreshTest.rb +0 -78
- data/lib/VMwareWebService/test/enterMaintenanceMode.rb +0 -56
- data/lib/VMwareWebService/test/eventHistoryTest.rb +0 -139
- data/lib/VMwareWebService/test/hostAdvancedOptionTest.rb +0 -45
- data/lib/VMwareWebService/test/hostConfigSpecTest.rb +0 -51
- data/lib/VMwareWebService/test/hostDatastoreTest.rb +0 -51
- data/lib/VMwareWebService/test/hostDvsTest.rb +0 -60
- data/lib/VMwareWebService/test/hostFirewallTest.rb +0 -149
- data/lib/VMwareWebService/test/hostNetworkTest.rb +0 -63
- data/lib/VMwareWebService/test/hostServiceTest.rb +0 -147
- data/lib/VMwareWebService/test/hostSnmpSystemTest.rb +0 -58
- data/lib/VMwareWebService/test/hostStandByTest.rb +0 -51
- data/lib/VMwareWebService/test/hostStorageSystem.rb +0 -73
- data/lib/VMwareWebService/test/hostTest.rb +0 -50
- data/lib/VMwareWebService/test/hostVirtualNicManagerTest.rb +0 -83
- data/lib/VMwareWebService/test/linkedCloneFromTemplateTest.rb +0 -135
- data/lib/VMwareWebService/test/linkedCloneTest.rb +0 -132
- data/lib/VMwareWebService/test/list_evm_snapshots.rb +0 -38
- data/lib/VMwareWebService/test/logStatusTest.rb +0 -31
- data/lib/VMwareWebService/test/logTest.rb +0 -72
- data/lib/VMwareWebService/test/migrateTest.rb +0 -71
- data/lib/VMwareWebService/test/rebootHostTest.rb +0 -47
- data/lib/VMwareWebService/test/remoteDisplayVnc.rb +0 -52
- data/lib/VMwareWebService/test/rm_evm_snapshots.rb +0 -45
- data/lib/VMwareWebService/test/rtPerfTest.rb +0 -135
- data/lib/VMwareWebService/test/selectionSpecBrokerClassTest.rb +0 -90
- data/lib/VMwareWebService/test/selectionSpecBrokerInstanceTest.rb +0 -163
- data/lib/VMwareWebService/test/selectionSpecVimClassTest.rb +0 -249
- data/lib/VMwareWebService/test/selectionSpecVimTest.rb +0 -232
- data/lib/VMwareWebService/test/shutdownHostTest.rb +0 -47
- data/lib/VMwareWebService/test/snapshotTest.rb +0 -61
- data/lib/VMwareWebService/test/templateTest.rb +0 -67
- data/lib/VMwareWebService/test/thinProvisioned.rb +0 -87
- data/lib/VMwareWebService/test/vdlBrowserTest.rb +0 -113
- data/lib/VMwareWebService/test/vimCoreUpdater.rb +0 -25
- data/lib/VMwareWebService/test/vimEventMonitory.rb +0 -26
- data/lib/VMwareWebService/test/vimInventory.rb +0 -24
- data/lib/VMwareWebService/test/virtualApp.rb +0 -47
- data/lib/VMwareWebService/test/virtualDiskPerf.rb +0 -82
- data/lib/VMwareWebService/test/vmsafe.rb +0 -56
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
require 'manageiq-gems-pending'
|
|
2
|
-
require 'VMwareWebService/MiqVim'
|
|
3
|
-
require 'VMwareWebService/VimTypes'
|
|
4
|
-
require 'VMwareWebService/MiqVimBroker'
|
|
5
|
-
|
|
6
|
-
$vim_log = Logger.new(STDOUT)
|
|
7
|
-
$vim_log.level = Logger::WARN
|
|
8
|
-
|
|
9
|
-
$miq_wiredump = false
|
|
10
|
-
|
|
11
|
-
$stderr.sync = true
|
|
12
|
-
$stdout.sync = true
|
|
13
|
-
|
|
14
|
-
SRC_VM = "Suse"
|
|
15
|
-
TARGET_VM = "rpo-Suse"
|
|
16
|
-
|
|
17
|
-
VNIC_LABEL = "Network adapter 1"
|
|
18
|
-
NEW_PORTGROUP = "VCB"
|
|
19
|
-
|
|
20
|
-
CUST_SPEC_NAME = "sles10-vanilla-template-vcloud"
|
|
21
|
-
|
|
22
|
-
sVmMor = nil
|
|
23
|
-
miqVm = nil
|
|
24
|
-
|
|
25
|
-
vimDs = nil
|
|
26
|
-
dsName = "DEVOpen-E0"
|
|
27
|
-
|
|
28
|
-
begin
|
|
29
|
-
vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
|
|
30
|
-
|
|
31
|
-
puts "vim.class: #{vim.class}"
|
|
32
|
-
puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
|
|
33
|
-
puts "API version: #{vim.apiVersion}"
|
|
34
|
-
puts
|
|
35
|
-
|
|
36
|
-
#
|
|
37
|
-
# Get the source VM.
|
|
38
|
-
#
|
|
39
|
-
miqVm = vim.getVimVmByFilter("config.name" => SRC_VM)
|
|
40
|
-
|
|
41
|
-
puts "#{SRC_VM} vmPathName: #{miqVm.dsPath}"
|
|
42
|
-
puts "#{SRC_VM} vmLocalPathName: #{miqVm.localPath}"
|
|
43
|
-
|
|
44
|
-
puts "VM: #{miqVm.name}, HOST: #{miqVm.hostSystem} [#{miqVm.vmh.summary.runtime.host}]"
|
|
45
|
-
puts
|
|
46
|
-
|
|
47
|
-
#
|
|
48
|
-
# See if the target VM already exists.
|
|
49
|
-
#
|
|
50
|
-
begin
|
|
51
|
-
dMiqVm = vim.getVimVmByFilter("config.name" => TARGET_VM)
|
|
52
|
-
|
|
53
|
-
puts "Target VM: #{TARGET_VM} already exists"
|
|
54
|
-
puts "\tDeleting #{TARGET_VM}..."
|
|
55
|
-
dMiqVm.destroy
|
|
56
|
-
puts "done."
|
|
57
|
-
exit
|
|
58
|
-
rescue
|
|
59
|
-
# Ignore expectd error
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
puts "Preparing to clone: #{SRC_VM} to #{TARGET_VM}"
|
|
63
|
-
|
|
64
|
-
memoryMB = "1024"
|
|
65
|
-
numCPUs = "1"
|
|
66
|
-
vnicDev = miqVm.devicesByFilter('deviceInfo.label' => VNIC_LABEL).first
|
|
67
|
-
|
|
68
|
-
configSpec = nil
|
|
69
|
-
if vnicDev || memoryMB || numCPUs
|
|
70
|
-
configSpec = VimHash.new('VirtualMachineConfigSpec') do |vmcs|
|
|
71
|
-
vmcs.memoryMB = memoryMB if memoryMB
|
|
72
|
-
vmcs.numCPUs = numCPUs if numCPUs
|
|
73
|
-
if vnicDev
|
|
74
|
-
vmcs.deviceChange = VimArray.new('ArrayOfVirtualDeviceConfigSpec') do |vdcsa|
|
|
75
|
-
vdcsa << VimHash.new('VirtualDeviceConfigSpec') do |vdcs|
|
|
76
|
-
vdcs.operation = VirtualDeviceConfigSpecOperation::Edit
|
|
77
|
-
#
|
|
78
|
-
# deepClone should be made client-side when using DRB.
|
|
79
|
-
#
|
|
80
|
-
vdcs.device = vim.deepClone(vnicDev)
|
|
81
|
-
|
|
82
|
-
#
|
|
83
|
-
# Change the port group of the target VM.
|
|
84
|
-
#
|
|
85
|
-
vdcs.device.deviceInfo.summary = NEW_PORTGROUP
|
|
86
|
-
vdcs.device.backing.deviceName = NEW_PORTGROUP
|
|
87
|
-
|
|
88
|
-
#
|
|
89
|
-
# Manually assign MAC address to target VM.
|
|
90
|
-
#
|
|
91
|
-
vdcs.device.macAddress = '00:50:56:8a:47:ff'
|
|
92
|
-
vdcs.device.addressType = 'Manual'
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
else
|
|
96
|
-
puts "Not changing port group."
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
#
|
|
102
|
-
# Find a resource pool.
|
|
103
|
-
#
|
|
104
|
-
ccr = vim.clusterComputeResourcesByFilter('host' => miqVm.vmh.summary.runtime.host).first
|
|
105
|
-
rp = ccr.resourcePool
|
|
106
|
-
|
|
107
|
-
#
|
|
108
|
-
# Find a VIM inventory folder to put the VM in.
|
|
109
|
-
#
|
|
110
|
-
vmfa = vim.foldersByFilter("name" => "vm")
|
|
111
|
-
raise "VM inventory folder not found" if vmfa.empty?
|
|
112
|
-
vmf = vmfa[0]
|
|
113
|
-
|
|
114
|
-
#
|
|
115
|
-
# Get the customization spec.
|
|
116
|
-
#
|
|
117
|
-
miqCsm = vim.getVimCustomizationSpecManager
|
|
118
|
-
csi = miqCsm.getCustomizationSpec(CUST_SPEC_NAME)
|
|
119
|
-
puts "*** Found custonization spec: #{csi.info.name}"
|
|
120
|
-
|
|
121
|
-
puts
|
|
122
|
-
puts "Cloning..."
|
|
123
|
-
miqVm.cloneVM(TARGET_VM, vmf, rp, nil, nil, false, false, nil, configSpec, csi.spec)
|
|
124
|
-
puts "done."
|
|
125
|
-
|
|
126
|
-
exit
|
|
127
|
-
|
|
128
|
-
#
|
|
129
|
-
# Get the target VM.
|
|
130
|
-
#
|
|
131
|
-
tvm = vim.virtualMachinesByFilter("config.name" => TARGET_VM)
|
|
132
|
-
if tvm.empty?
|
|
133
|
-
puts "VM: #{TARGET_VM} not found"
|
|
134
|
-
exit
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
if (vmp = tvm[0]['summary']['config']['vmPathName'])
|
|
138
|
-
puts "#{TARGET_VM} vmPathName: #{vmp}"
|
|
139
|
-
else
|
|
140
|
-
puts "#{TARGET_VM} vmPathName is not set"
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
if (vmlp = tvm[0]['summary']['config']['vmLocalPathName'])
|
|
144
|
-
puts "#{TARGET_VM} vmLocalPathName: #{vmlp}"
|
|
145
|
-
else
|
|
146
|
-
puts "#{TARGET_VM} vmLocalPathName is not set"
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
exit if !vmp || !vmlp
|
|
150
|
-
|
|
151
|
-
puts "#{TARGET_VM} not hashed by #{vmp}" unless vim.virtualMachines[vmp]
|
|
152
|
-
puts "#{TARGET_VM} not hashed by #{vmlp}" unless vim.virtualMachines[vmlp]
|
|
153
|
-
|
|
154
|
-
rescue => err
|
|
155
|
-
puts err.to_s
|
|
156
|
-
puts err.backtrace.join("\n")
|
|
157
|
-
ensure
|
|
158
|
-
puts
|
|
159
|
-
puts "Exiting..."
|
|
160
|
-
miqVm.release if miqVm
|
|
161
|
-
vim.disconnect if vim
|
|
162
|
-
end
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
require 'manageiq-gems-pending'
|
|
2
|
-
require 'VMwareWebService/MiqVim'
|
|
3
|
-
require 'VMwareWebService/VimTypes'
|
|
4
|
-
require 'VMwareWebService/MiqVimBroker'
|
|
5
|
-
|
|
6
|
-
$vim_log = Logger.new(STDOUT)
|
|
7
|
-
$vim_log.level = Logger::WARN
|
|
8
|
-
|
|
9
|
-
$miq_wiredump = false
|
|
10
|
-
|
|
11
|
-
$stderr.sync = true
|
|
12
|
-
$stdout.sync = true
|
|
13
|
-
|
|
14
|
-
SRC_VM = "nondeploy"
|
|
15
|
-
TARGET_VM = "rpo-nondeploy"
|
|
16
|
-
|
|
17
|
-
HOST_NAME = raise "please define"
|
|
18
|
-
|
|
19
|
-
VNIC_LABEL = "Network adapter 1"
|
|
20
|
-
NEW_PORTGROUP = 'portgroup2'
|
|
21
|
-
|
|
22
|
-
sVmMor = nil
|
|
23
|
-
miqVm = nil
|
|
24
|
-
|
|
25
|
-
vimDs = nil
|
|
26
|
-
dsName = "DEVOpen-E0"
|
|
27
|
-
|
|
28
|
-
begin
|
|
29
|
-
vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
|
|
30
|
-
|
|
31
|
-
puts "vim.class: #{vim.class}"
|
|
32
|
-
puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
|
|
33
|
-
puts "API version: #{vim.apiVersion}"
|
|
34
|
-
puts
|
|
35
|
-
|
|
36
|
-
#
|
|
37
|
-
# Get the source VM.
|
|
38
|
-
#
|
|
39
|
-
miqVm = vim.getVimVmByFilter("config.name" => SRC_VM)
|
|
40
|
-
|
|
41
|
-
puts "#{SRC_VM} vmPathName: #{miqVm.dsPath}"
|
|
42
|
-
puts "#{SRC_VM} vmLocalPathName: #{miqVm.localPath}"
|
|
43
|
-
|
|
44
|
-
puts "VM: #{miqVm.name}, HOST: #{miqVm.hostSystem} #{miqVm.hostSystem.vimType}"
|
|
45
|
-
puts
|
|
46
|
-
|
|
47
|
-
hmor = vim.hostSystems[HOST_NAME]['MOR']
|
|
48
|
-
|
|
49
|
-
#
|
|
50
|
-
# Get the DVS info for a given host.
|
|
51
|
-
#
|
|
52
|
-
dvs = vim.queryDvsConfigTarget(vim.sic.dvSwitchManager, hmor, nil)
|
|
53
|
-
|
|
54
|
-
#
|
|
55
|
-
# List the names of the non-uplink portgroups.
|
|
56
|
-
#
|
|
57
|
-
nupga = vim.applyFilter(dvs.distributedVirtualPortgroup, 'uplinkPortgroup' => 'false')
|
|
58
|
-
puts "Available DVS portgroups:"
|
|
59
|
-
nupga.each { |nupg| puts "\t" + nupg.portgroupName }
|
|
60
|
-
puts
|
|
61
|
-
|
|
62
|
-
dpg = vim.applyFilter(dvs.distributedVirtualPortgroup, 'portgroupName' => NEW_PORTGROUP, 'uplinkPortgroup' => 'false').first
|
|
63
|
-
switchUuid = dpg.switchUuid
|
|
64
|
-
portgroupName = dpg.portgroupName
|
|
65
|
-
portgroupKey = dpg.portgroupKey
|
|
66
|
-
puts "portgroupName: #{portgroupName}, portgroupKey: #{portgroupKey}, switchUuid: #{switchUuid}"
|
|
67
|
-
# vim.dumpObj(dvs)
|
|
68
|
-
# exit
|
|
69
|
-
|
|
70
|
-
#
|
|
71
|
-
# See if the target VM already exists.
|
|
72
|
-
#
|
|
73
|
-
begin
|
|
74
|
-
dMiqVm = vim.getVimVmByFilter("config.name" => TARGET_VM)
|
|
75
|
-
|
|
76
|
-
puts "Target VM: #{TARGET_VM} already exists"
|
|
77
|
-
puts "\tDeleting #{TARGET_VM}..."
|
|
78
|
-
dMiqVm.destroy
|
|
79
|
-
puts "done."
|
|
80
|
-
exit
|
|
81
|
-
rescue
|
|
82
|
-
# Ignore expectd error
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
puts "Preparing to clone: #{SRC_VM} to #{TARGET_VM}"
|
|
86
|
-
|
|
87
|
-
memoryMB = "1024"
|
|
88
|
-
memoryMB = nil
|
|
89
|
-
numCPUs = "1"
|
|
90
|
-
numCPUs = nil
|
|
91
|
-
vnicDev = miqVm.devicesByFilter('deviceInfo.label' => VNIC_LABEL).first
|
|
92
|
-
# vim.dumpObj(vnicDev)
|
|
93
|
-
# exit
|
|
94
|
-
|
|
95
|
-
configSpec = nil
|
|
96
|
-
if vnicDev || memoryMB || numCPUs
|
|
97
|
-
configSpec = VimHash.new('VirtualMachineConfigSpec') do |vmcs|
|
|
98
|
-
vmcs.memoryMB = memoryMB if memoryMB
|
|
99
|
-
vmcs.numCPUs = numCPUs if numCPUs
|
|
100
|
-
if vnicDev
|
|
101
|
-
vmcs.deviceChange = VimArray.new('ArrayOfVirtualDeviceConfigSpec') do |vdcsa|
|
|
102
|
-
vdcsa << VimHash.new('VirtualDeviceConfigSpec') do |vdcs|
|
|
103
|
-
vdcs.operation = VirtualDeviceConfigSpecOperation::Edit
|
|
104
|
-
#
|
|
105
|
-
# deepClone should be made client-side when using DRB.
|
|
106
|
-
#
|
|
107
|
-
vdcs.device = vim.deepClone(vnicDev)
|
|
108
|
-
|
|
109
|
-
#
|
|
110
|
-
# Change the port group of the target VM.
|
|
111
|
-
#
|
|
112
|
-
vdcs.device.deviceInfo.summary = portgroupName
|
|
113
|
-
# vdcs.device.backing.deviceName = NEW_PORTGROUP
|
|
114
|
-
vdcs.device.backing = VimHash.new('VirtualEthernetCardDistributedVirtualPortBackingInfo') do |vecdvpbi|
|
|
115
|
-
vecdvpbi.port = VimHash.new('DistributedVirtualSwitchPortConnection') do |dvspc|
|
|
116
|
-
dvspc.switchUuid = switchUuid
|
|
117
|
-
dvspc.portgroupKey = portgroupKey
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
#
|
|
122
|
-
# Manually assign MAC address to target VM.
|
|
123
|
-
#
|
|
124
|
-
vdcs.device.macAddress = '00:50:56:8a:47:ff'
|
|
125
|
-
vdcs.device.addressType = 'Manual'
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
else
|
|
129
|
-
puts "Not changing port group."
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
#
|
|
135
|
-
# Find a VIM inventory folder to put the VM in.
|
|
136
|
-
#
|
|
137
|
-
# vim.dumpObj(vim.foldersByMor)
|
|
138
|
-
# vmfa = vim.foldersByFilter("childType" => "VirtualMachine", "name" => "vm")
|
|
139
|
-
vmfa = vim.foldersByFilter("name" => "vm")
|
|
140
|
-
raise "VM inventory folder not found" if vmfa.empty?
|
|
141
|
-
vmf = vmfa[0]
|
|
142
|
-
|
|
143
|
-
miqVmf = vim.getVimFolderByMor(vmf["MOR"])
|
|
144
|
-
puts "\tFound inventory folder: #{miqVmf.name} (#{miqVmf.fMor})"
|
|
145
|
-
|
|
146
|
-
puts
|
|
147
|
-
puts "Cloning..."
|
|
148
|
-
miqVm.cloneVM(TARGET_VM, vmf, nil, nil, nil, false, false, nil, configSpec)
|
|
149
|
-
puts "done."
|
|
150
|
-
|
|
151
|
-
exit
|
|
152
|
-
|
|
153
|
-
#
|
|
154
|
-
# Get the target VM.
|
|
155
|
-
#
|
|
156
|
-
tvm = vim.virtualMachinesByFilter("config.name" => TARGET_VM)
|
|
157
|
-
if tvm.empty?
|
|
158
|
-
puts "VM: #{TARGET_VM} not found"
|
|
159
|
-
exit
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
if (vmp = tvm[0]['summary']['config']['vmPathName'])
|
|
163
|
-
puts "#{TARGET_VM} vmPathName: #{vmp}"
|
|
164
|
-
else
|
|
165
|
-
puts "#{TARGET_VM} vmPathName is not set"
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
if (vmlp = tvm[0]['summary']['config']['vmLocalPathName'])
|
|
169
|
-
puts "#{TARGET_VM} vmLocalPathName: #{vmlp}"
|
|
170
|
-
else
|
|
171
|
-
puts "#{TARGET_VM} vmLocalPathName is not set"
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
exit if !vmp || !vmlp
|
|
175
|
-
|
|
176
|
-
puts "#{TARGET_VM} not hashed by #{vmp}" unless vim.virtualMachines[vmp]
|
|
177
|
-
puts "#{TARGET_VM} not hashed by #{vmlp}" unless vim.virtualMachines[vmlp]
|
|
178
|
-
|
|
179
|
-
rescue => err
|
|
180
|
-
puts err.to_s
|
|
181
|
-
puts err.backtrace.join("\n")
|
|
182
|
-
ensure
|
|
183
|
-
puts
|
|
184
|
-
puts "Exiting..."
|
|
185
|
-
miqVm.release if miqVm
|
|
186
|
-
vim.disconnect if vim
|
|
187
|
-
end
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
require 'manageiq-gems-pending'
|
|
2
|
-
require 'VMwareWebService/MiqVim'
|
|
3
|
-
require 'VMwareWebService/VimTypes'
|
|
4
|
-
require 'VMwareWebService/MiqVimBroker'
|
|
5
|
-
|
|
6
|
-
$vim_log = Logger.new(STDOUT)
|
|
7
|
-
$vim_log.level = Logger::WARN
|
|
8
|
-
|
|
9
|
-
$miq_wiredump = false
|
|
10
|
-
|
|
11
|
-
$stderr.sync = true
|
|
12
|
-
$stdout.sync = true
|
|
13
|
-
|
|
14
|
-
SRC_VM = "rpo-clone-src"
|
|
15
|
-
# SRC_VM = "rpo-vmsafe"
|
|
16
|
-
TARGET_VM = "rpo-clone-dest"
|
|
17
|
-
|
|
18
|
-
VNIC_LABEL = "Network adapter 1"
|
|
19
|
-
NEW_PORTGROUP = "VCB"
|
|
20
|
-
|
|
21
|
-
sVmMor = nil
|
|
22
|
-
miqVm = nil
|
|
23
|
-
|
|
24
|
-
vimDs = nil
|
|
25
|
-
dsName = "DEVOpen-E0"
|
|
26
|
-
|
|
27
|
-
begin
|
|
28
|
-
vim = MiqVim.new(SERVER, USERNAME, PASSWORD)
|
|
29
|
-
|
|
30
|
-
puts "vim.class: #{vim.class}"
|
|
31
|
-
puts "#{vim.server} is #{(vim.isVirtualCenter? ? 'VC' : 'ESX')}"
|
|
32
|
-
puts "API version: #{vim.apiVersion}"
|
|
33
|
-
puts
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
# Get the source VM.
|
|
37
|
-
#
|
|
38
|
-
miqVm = vim.getVimVmByFilter("config.name" => SRC_VM)
|
|
39
|
-
|
|
40
|
-
puts "#{SRC_VM} vmPathName: #{miqVm.dsPath}"
|
|
41
|
-
puts "#{SRC_VM} vmLocalPathName: #{miqVm.localPath}"
|
|
42
|
-
|
|
43
|
-
puts "VM: #{miqVm.name}, HOST: #{miqVm.hostSystem}"
|
|
44
|
-
puts
|
|
45
|
-
|
|
46
|
-
#
|
|
47
|
-
# See if the target VM already exists.
|
|
48
|
-
#
|
|
49
|
-
begin
|
|
50
|
-
dMiqVm = vim.getVimVmByFilter("config.name" => TARGET_VM)
|
|
51
|
-
|
|
52
|
-
puts "Target VM: #{TARGET_VM} already exists"
|
|
53
|
-
puts "\tDeleting #{TARGET_VM}..."
|
|
54
|
-
dMiqVm.destroy
|
|
55
|
-
puts "done."
|
|
56
|
-
exit
|
|
57
|
-
rescue
|
|
58
|
-
# Ignore expectd error
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
puts "Preparing to clone: #{SRC_VM} to #{TARGET_VM}"
|
|
62
|
-
|
|
63
|
-
memoryMB = "1024"
|
|
64
|
-
numCPUs = "1"
|
|
65
|
-
vnicDev = miqVm.devicesByFilter('deviceInfo.label' => VNIC_LABEL).first
|
|
66
|
-
|
|
67
|
-
configSpec = nil
|
|
68
|
-
if vnicDev || memoryMB || numCPUs
|
|
69
|
-
configSpec = VimHash.new('VirtualMachineConfigSpec') do |vmcs|
|
|
70
|
-
vmcs.memoryMB = memoryMB if memoryMB
|
|
71
|
-
vmcs.numCPUs = numCPUs if numCPUs
|
|
72
|
-
if vnicDev
|
|
73
|
-
vmcs.deviceChange = VimArray.new('ArrayOfVirtualDeviceConfigSpec') do |vdcsa|
|
|
74
|
-
vdcsa << VimHash.new('VirtualDeviceConfigSpec') do |vdcs|
|
|
75
|
-
vdcs.operation = VirtualDeviceConfigSpecOperation::Edit
|
|
76
|
-
#
|
|
77
|
-
# deepClone should be made client-side when using DRB.
|
|
78
|
-
#
|
|
79
|
-
vdcs.device = vim.deepClone(vnicDev)
|
|
80
|
-
|
|
81
|
-
#
|
|
82
|
-
# Change the port group of the target VM.
|
|
83
|
-
#
|
|
84
|
-
vdcs.device.deviceInfo.summary = NEW_PORTGROUP
|
|
85
|
-
vdcs.device.backing.deviceName = NEW_PORTGROUP
|
|
86
|
-
|
|
87
|
-
#
|
|
88
|
-
# Manually assign MAC address to target VM.
|
|
89
|
-
#
|
|
90
|
-
vdcs.device.macAddress = '00:50:56:8a:47:ff'
|
|
91
|
-
vdcs.device.addressType = 'Manual'
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
else
|
|
95
|
-
puts "Not changing port group."
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
#
|
|
101
|
-
# Find a VIM inventory folder to put the VM in.
|
|
102
|
-
#
|
|
103
|
-
# vim.dumpObj(vim.foldersByMor)
|
|
104
|
-
# vmfa = vim.foldersByFilter("childType" => "VirtualMachine", "name" => "vm")
|
|
105
|
-
vmfa = vim.foldersByFilter("name" => "vm")
|
|
106
|
-
raise "VM inventory folder not found" if vmfa.empty?
|
|
107
|
-
vmf = vmfa[0]
|
|
108
|
-
|
|
109
|
-
# miqVmf = vim.getVimFolderByMor(vmf["MOR"])
|
|
110
|
-
# puts "\tFound inventory folder: #{miqVmf.name} (#{miqVmf.fMor})"
|
|
111
|
-
|
|
112
|
-
puts
|
|
113
|
-
puts "Cloning..."
|
|
114
|
-
miqVm.cloneVM(TARGET_VM, vmf, nil, nil, nil, false, false, nil, configSpec)
|
|
115
|
-
puts "done."
|
|
116
|
-
|
|
117
|
-
exit
|
|
118
|
-
|
|
119
|
-
#
|
|
120
|
-
# Get the target VM.
|
|
121
|
-
#
|
|
122
|
-
tvm = vim.virtualMachinesByFilter("config.name" => TARGET_VM)
|
|
123
|
-
if tvm.empty?
|
|
124
|
-
puts "VM: #{TARGET_VM} not found"
|
|
125
|
-
exit
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
if (vmp = tvm[0]['summary']['config']['vmPathName'])
|
|
129
|
-
puts "#{TARGET_VM} vmPathName: #{vmp}"
|
|
130
|
-
else
|
|
131
|
-
puts "#{TARGET_VM} vmPathName is not set"
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
if (vmlp = tvm[0]['summary']['config']['vmLocalPathName'])
|
|
135
|
-
puts "#{TARGET_VM} vmLocalPathName: #{vmlp}"
|
|
136
|
-
else
|
|
137
|
-
puts "#{TARGET_VM} vmLocalPathName is not set"
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
exit if !vmp || !vmlp
|
|
141
|
-
|
|
142
|
-
puts "#{TARGET_VM} not hashed by #{vmp}" unless vim.virtualMachines[vmp]
|
|
143
|
-
puts "#{TARGET_VM} not hashed by #{vmlp}" unless vim.virtualMachines[vmlp]
|
|
144
|
-
|
|
145
|
-
rescue => err
|
|
146
|
-
puts err.to_s
|
|
147
|
-
puts err.backtrace.join("\n")
|
|
148
|
-
ensure
|
|
149
|
-
puts
|
|
150
|
-
puts "Exiting..."
|
|
151
|
-
miqVm.release if miqVm
|
|
152
|
-
vim.disconnect if vim
|
|
153
|
-
end
|