Function: vCenter Virtual Machine Execute a vMotion with Change of Network

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 vMotion operation including a change of Network.

Private Function: ComputeVMotionWithNetworkChange

public ComputeVMotionWithNetworkChange(objVcVirtualMachine: VcVirtualMachine, objVcHostSystem: VcHostSystem, objVcResourcePool: VcResourcePool, objVcDistributedVirtualPortgroup: VcDistributedVirtualPortgroup): void {

    let objVcDVPortgroupConfigInfo: VcDVPortgroupConfigInfo = objVcDistributedVirtualPortgroup.config;

    let objVcDistributedVirtualSwitch: VcDistributedVirtualSwitch = objVcDVPortgroupConfigInfo.distributedVirtualSwitch;

    let objVcDistributedVirtualSwitchPortConnection: VcDistributedVirtualSwitchPortConnection = new VcDistributedVirtualSwitchPortConnection();
    objVcDistributedVirtualSwitchPortConnection.switchUuid = objVcDistributedVirtualSwitch.uuid;
    objVcDistributedVirtualSwitchPortConnection.portgroupKey = objVcDistributedVirtualPortgroup.key;

    let objVcVirtualEthernetCardDistributedVirtualPortBackingInfo: VcVirtualEthernetCardDistributedVirtualPortBackingInfo = new VcVirtualEthernetCardDistributedVirtualPortBackingInfo();
    objVcVirtualEthernetCardDistributedVirtualPortBackingInfo.port = objVcDistributedVirtualSwitchPortConnection;

    let arrVcVirtualNetwork: (VcVirtualE1000 | VcVirtualE1000e | VcVirtualPCNet32 | VcVirtualVmxnet | VcVirtualVmxnet2 | VcVirtualVmxnet3 | VcVirtualSriovEthernetCard)[] = this.GetAllVcVirtualNetworkCards(objVcVirtualMachine);

    let arrVcVirtualDeviceConfigSpec: VcVirtualDeviceConfigSpec[] = arrVcVirtualNetwork.map((objVcVirtualNetworkAdapter: (VcVirtualE1000 | VcVirtualE1000e | VcVirtualPCNet32 | VcVirtualVmxnet | VcVirtualVmxnet2 | VcVirtualVmxnet3 | VcVirtualSriovEthernetCard)): VcVirtualDeviceConfigSpec => {

        objVcVirtualNetworkAdapter.backing = objVcVirtualEthernetCardDistributedVirtualPortBackingInfo;

        let objVcVirtualDeviceConfigSpec: VcVirtualDeviceConfigSpec = new VcVirtualDeviceConfigSpec();
        objVcVirtualDeviceConfigSpec.operation = VcVirtualDeviceConfigSpecOperation.edit;
        objVcVirtualDeviceConfigSpec.device = objVcVirtualNetworkAdapter;

        return objVcVirtualDeviceConfigSpec;
    });

    let objVcVirtualMachineRelocateSpec: VcVirtualMachineRelocateSpec = new VcVirtualMachineRelocateSpec();
    objVcVirtualMachineRelocateSpec.host = objVcHostSystem;
    objVcVirtualMachineRelocateSpec.pool = objVcResourcePool;
    objVcVirtualMachineRelocateSpec.deviceChange = arrVcVirtualDeviceConfigSpec;

    let objVcTask: VcTask = objVcVirtualMachine.relocateVM_Task(objVcVirtualMachineRelocateSpec, VcVirtualMachineMovePriority["highPriority"]);

    this.WaitForVcTaskEnd(objVcTask, 1);
}

Discover more from Cloud Build Tools

Subscribe to get the latest posts sent to your email.

You may also like