To use this function add it to the class library file named PluginVCVirtualMachineService.ts
GitHub Repository: https://github.com/SimonSparksUK/Orchestrator
Filename: PluginVCVirtualMachineService.ts
Description: Orchestrator Function to execute a Cross Cluster and Network vCenter vMotion operation.
Private Function: CrossClusterAndNetworkVMotion
public CrossClusterAndNetworkVMotion(objVcVirtualMachine: VcVirtualMachine, objVcClusterComputeResourceDestination: VcClusterComputeResource, objVcDatastoreDestination: VcDatastore, objVcFolderDestination: VcFolder, arrVcDistributedVirtualPortgroupDestination: VcDistributedVirtualPortgroup[]): boolean {
let arrVcVirtualEthernetCardDistributedVirtualPortBackingInfo: VcVirtualEthernetCardDistributedVirtualPortBackingInfo[] = arrVcDistributedVirtualPortgroupDestination.map((objVcDistributedVirtualPortgroupDestination: VcDistributedVirtualPortgroup): VcVirtualEthernetCardDistributedVirtualPortBackingInfo => {
let objVcDVPortgroupConfigInfo: VcDVPortgroupConfigInfo = objVcDistributedVirtualPortgroupDestination.config;
let objVcDistributedVirtualSwitch: VcDistributedVirtualSwitch = objVcDVPortgroupConfigInfo.distributedVirtualSwitch;
let objVcDistributedVirtualSwitchPortConnection: VcDistributedVirtualSwitchPortConnection = new VcDistributedVirtualSwitchPortConnection();
objVcDistributedVirtualSwitchPortConnection.switchUuid = objVcDistributedVirtualSwitch.uuid;
objVcDistributedVirtualSwitchPortConnection.portgroupKey = objVcDistributedVirtualPortgroupDestination.moref.value;
let objVcVirtualEthernetCardDistributedVirtualPortBackingInfo: VcVirtualEthernetCardDistributedVirtualPortBackingInfo = new VcVirtualEthernetCardDistributedVirtualPortBackingInfo();
objVcVirtualEthernetCardDistributedVirtualPortBackingInfo.port = objVcDistributedVirtualSwitchPortConnection;
return objVcVirtualEthernetCardDistributedVirtualPortBackingInfo;
});
let arrVcVirtualNetworkAdapter: (VcVirtualE1000 | VcVirtualE1000e | VcVirtualPCNet32 | VcVirtualVmxnet | VcVirtualVmxnet2 | VcVirtualVmxnet3 | VcVirtualSriovEthernetCard)[] = this.GetAllVcVirtualNetworkCards(objVcVirtualMachine);
let arrVcVirtualDeviceConfigSpec: VcVirtualDeviceConfigSpec[] = arrVcVirtualNetworkAdapter.map((objVcVirtualNetworkAdapter: (VcVirtualE1000 | VcVirtualE1000e | VcVirtualPCNet32 | VcVirtualVmxnet | VcVirtualVmxnet2 | VcVirtualVmxnet3 | VcVirtualSriovEthernetCard)): VcVirtualDeviceConfigSpec => {
objVcVirtualNetworkAdapter.backing = arrVcVirtualEthernetCardDistributedVirtualPortBackingInfo["ID??"]; // TO DO - Figure Out The Network Allocation
let objVcVirtualDeviceConfigSpec: VcVirtualDeviceConfigSpec = this.VcVirtualDeviceConfigSpecCreate(objVcVirtualNetworkAdapter, VcVirtualDeviceConfigSpecOperation.edit);
return objVcVirtualDeviceConfigSpec;
});
let objVcResourcePoolDestination: VcResourcePool = objVcClusterComputeResourceDestination.resourcePool;
let arrVcHostSystemDestination: VcHostSystem[] = objVcClusterComputeResourceDestination.host;
let objVcHostSystemDestination: VcHostSystem = arrVcHostSystemDestination[Math.floor(Math.random() * arrVcHostSystemDestination.length)];
let blnResult: boolean = this.Relocate(objVcVirtualMachine, objVcDatastoreDestination, objVcResourcePoolDestination, objVcHostSystemDestination, objVcFolderDestination, arrVcVirtualDeviceConfigSpec, null);
return blnResult;
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
