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 vCenter vMotion operation.
Private Function: CrossVCenterVMotion
public CrossVCenterVMotion(objVcVirtualMachine: VcVirtualMachine, strThumbprintDestination: string, objVcClusterComputeResourceDestination: VcClusterComputeResource, objVcDatastoreDestination: VcDatastore, objVcFolderDestination: VcFolder, arrVcDistributedVirtualPortgroup: VcDistributedVirtualPortgroup[], strUsername: string, strPassword:string): boolean {
strThumbprintDestination = strThumbprintDestination.replace(/|\u200E/gi, "");
if (strThumbprintDestination.indexOf(" ") > -1) {
strThumbprintDestination = strThumbprintDestination.replace(/ /g, ":");
}
strThumbprintDestination = strThumbprintDestination.trim();
let objVcSdkConnection: VcSdkConnection = objVcClusterComputeResourceDestination.sdkConnection;
let objVcServiceLocatorNamePassword: VcServiceLocatorNamePassword = new VcServiceLocatorNamePassword();
objVcServiceLocatorNamePassword.username = strUsername;
objVcServiceLocatorNamePassword.password = strPassword;
let objVcServiceLocatorDestination: VcServiceLocator = new VcServiceLocator();
objVcServiceLocatorDestination.credential = objVcServiceLocatorNamePassword;
objVcServiceLocatorDestination.instanceUuid = objVcSdkConnection.instanceUuid;
objVcServiceLocatorDestination.sslThumbprint = strThumbprintDestination;
objVcServiceLocatorDestination.url = objVcSdkConnection.name;
let arrVcHostSystem: VcHostSystem[] = objVcClusterComputeResourceDestination.host;
let arrVcVirtualEthernetCardDistributedVirtualPortBackingInfo: VcVirtualEthernetCardDistributedVirtualPortBackingInfo[] = arrVcDistributedVirtualPortgroup.map((objVcDistributedVirtualPortgroup: VcDistributedVirtualPortgroup): VcVirtualEthernetCardDistributedVirtualPortBackingInfo => {
let objVcDVPortgroupConfigInfo: VcDVPortgroupConfigInfo = objVcDistributedVirtualPortgroup.config;
let objVcDistributedVirtualSwitch: VcDistributedVirtualSwitch = objVcDVPortgroupConfigInfo.distributedVirtualSwitch;
let objVcDistributedVirtualSwitchPortConnection: VcDistributedVirtualSwitchPortConnection = new VcDistributedVirtualSwitchPortConnection();
objVcDistributedVirtualSwitchPortConnection.switchUuid = objVcDistributedVirtualSwitch.uuid;
objVcDistributedVirtualSwitchPortConnection.portgroupKey = objVcDistributedVirtualPortgroup.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 objVcHostSystemDestination: VcHostSystem = arrVcHostSystem[Math.floor(Math.random() * arrVcHostSystem.length)];
let blnResult: boolean = this.Relocate(objVcVirtualMachine, objVcDatastoreDestination, objVcResourcePoolDestination, objVcHostSystemDestination, objVcFolderDestination, arrVcVirtualDeviceConfigSpec, objVcServiceLocatorDestination);
return blnResult;
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
