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
publicCrossClusterAndNetworkVMotion(objVcVirtualMachine:VcVirtualMachine,objVcClusterComputeResourceDestination:VcClusterComputeResource,objVcDatastoreDestination:VcDatastore,objVcFolderDestination:VcFolder,arrVcDistributedVirtualPortgroupDestination:VcDistributedVirtualPortgroup[]):boolean{
letarrVcVirtualEthernetCardDistributedVirtualPortBackingInfo:VcVirtualEthernetCardDistributedVirtualPortBackingInfo[]=arrVcDistributedVirtualPortgroupDestination.map((objVcDistributedVirtualPortgroupDestination:VcDistributedVirtualPortgroup):VcVirtualEthernetCardDistributedVirtualPortBackingInfo=>{
letobjVcDVPortgroupConfigInfo:VcDVPortgroupConfigInfo=objVcDistributedVirtualPortgroupDestination.config;
letobjVcDistributedVirtualSwitch:VcDistributedVirtualSwitch=objVcDVPortgroupConfigInfo.distributedVirtualSwitch;
letobjVcDistributedVirtualSwitchPortConnection:VcDistributedVirtualSwitchPortConnection=newVcDistributedVirtualSwitchPortConnection();
objVcDistributedVirtualSwitchPortConnection.switchUuid=objVcDistributedVirtualSwitch.uuid;
objVcDistributedVirtualSwitchPortConnection.portgroupKey=objVcDistributedVirtualPortgroupDestination.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;
letarrVcHostSystemDestination:VcHostSystem[]=objVcClusterComputeResourceDestination.host;
letobjVcHostSystemDestination:VcHostSystem=arrVcHostSystemDestination[Math.floor(Math.random()*arrVcHostSystemDestination.length)];
letblnResult:boolean=this.Relocate(objVcVirtualMachine,objVcDatastoreDestination,objVcResourcePoolDestination,objVcHostSystemDestination,objVcFolderDestination,arrVcVirtualDeviceConfigSpec,null);
returnblnResult;
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
