Orchestrator Function: vCenter Virtual Machine Execute a Cross Cluster and Network 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 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.

You may also like