Orchestrator Function: vCenter Virtual Machine Execute a Cross vCenter vMotion

by Simon Sparks · 21 February 2026

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.

You may also like