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
publicCrossVCenterVMotion(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();
letobjVcSdkConnection:VcSdkConnection=objVcClusterComputeResourceDestination.sdkConnection;
letobjVcServiceLocatorNamePassword:VcServiceLocatorNamePassword=newVcServiceLocatorNamePassword();
objVcServiceLocatorNamePassword.username=strUsername;
objVcServiceLocatorNamePassword.password=strPassword;
letobjVcServiceLocatorDestination:VcServiceLocator=newVcServiceLocator();
objVcServiceLocatorDestination.credential=objVcServiceLocatorNamePassword;
objVcServiceLocatorDestination.instanceUuid=objVcSdkConnection.instanceUuid;
objVcServiceLocatorDestination.sslThumbprint=strThumbprintDestination;
objVcServiceLocatorDestination.url=objVcSdkConnection.name;
letarrVcHostSystem:VcHostSystem[]=objVcClusterComputeResourceDestination.host;
letarrVcVirtualEthernetCardDistributedVirtualPortBackingInfo:VcVirtualEthernetCardDistributedVirtualPortBackingInfo[]=arrVcDistributedVirtualPortgroup.map((objVcDistributedVirtualPortgroup:VcDistributedVirtualPortgroup):VcVirtualEthernetCardDistributedVirtualPortBackingInfo=>{
letobjVcDVPortgroupConfigInfo:VcDVPortgroupConfigInfo=objVcDistributedVirtualPortgroup.config;
letobjVcDistributedVirtualSwitch:VcDistributedVirtualSwitch=objVcDVPortgroupConfigInfo.distributedVirtualSwitch;
letobjVcDistributedVirtualSwitchPortConnection:VcDistributedVirtualSwitchPortConnection=newVcDistributedVirtualSwitchPortConnection();
objVcDistributedVirtualSwitchPortConnection.switchUuid=objVcDistributedVirtualSwitch.uuid;
objVcDistributedVirtualSwitchPortConnection.portgroupKey=objVcDistributedVirtualPortgroup.moref.value;
letobjVcVirtualEthernetCardDistributedVirtualPortBackingInfo:VcVirtualEthernetCardDistributedVirtualPortBackingInfo=newVcVirtualEthernetCardDistributedVirtualPortBackingInfo();
objVcVirtualEthernetCardDistributedVirtualPortBackingInfo.port=objVcDistributedVirtualSwitchPortConnection;
returnobjVcVirtualEthernetCardDistributedVirtualPortBackingInfo;
});
letarrVcVirtualNetworkAdapter: (VcVirtualE1000|VcVirtualE1000e|VcVirtualPCNet32|VcVirtualVmxnet|VcVirtualVmxnet2|VcVirtualVmxnet3|VcVirtualSriovEthernetCard)[]=this.GetAllVcVirtualNetworkCards(objVcVirtualMachine);
letarrVcVirtualDeviceConfigSpec:VcVirtualDeviceConfigSpec[]=arrVcVirtualNetworkAdapter.map((objVcVirtualNetworkAdapter: (VcVirtualE1000|VcVirtualE1000e|VcVirtualPCNet32|VcVirtualVmxnet|VcVirtualVmxnet2|VcVirtualVmxnet3|VcVirtualSriovEthernetCard)):VcVirtualDeviceConfigSpec=>{
objVcVirtualNetworkAdapter.backing=arrVcVirtualEthernetCardDistributedVirtualPortBackingInfo["ID??"];// TO DO - Figure Out The Network Allocation
letobjVcVirtualDeviceConfigSpec:VcVirtualDeviceConfigSpec=this.VcVirtualDeviceConfigSpecCreate(objVcVirtualNetworkAdapter,VcVirtualDeviceConfigSpecOperation.edit);
returnobjVcVirtualDeviceConfigSpec;
});
letobjVcResourcePoolDestination:VcResourcePool=objVcClusterComputeResourceDestination.resourcePool;
letobjVcHostSystemDestination:VcHostSystem=arrVcHostSystem[Math.floor(Math.random()*arrVcHostSystem.length)];
letblnResult:boolean=this.Relocate(objVcVirtualMachine,objVcDatastoreDestination,objVcResourcePoolDestination,objVcHostSystemDestination,objVcFolderDestination,arrVcVirtualDeviceConfigSpec,objVcServiceLocatorDestination);
returnblnResult;
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
