Function: vCenter Host System Configure Vmk Interface

by Simon Sparks · 23 March 2026

To use this function add it to the class library file named PluginVCHostSystemService.ts

GitHub Repository: https://github.com/SimonSparksUK/Orchestrator

Filename: PluginVCHostSystemService.ts

Description: Orchestrator Function to Configure vCenter Host System Vmk Interface

Function ConfigureVmkInterface

public ConfigureVmkInterface(objVcClusterComputeResource: VcClusterComputeResource, strVmkNicType: "vsan" | "vMotion" | "vSphereProvisioning" | "faultToleranceLogging" | "vsanWitness" | "vSphereReplication" | "vSphereReplicationNFC" | "vSphereBackupNFC" | "nvmeTcp" | "nvmeRdma", strVmkNic: string = "vmk0", strAction: "Add" | "Remove", intMTU: number = 9000): void {

    let arrVcHostSystem: VcHostSystem[] = objVcClusterComputeResource.host;

    let objVcHostVirtualNicSpec: VcHostVirtualNicSpec = new VcHostVirtualNicSpec();
    objVcHostVirtualNicSpec.mtu = intMTU;

    arrVcHostSystem.forEach((objVcHostSystem: VcHostSystem): void => {

        let objVcHostConfigManager: VcHostConfigManager = objVcHostSystem.configManager;

        let objVcHostNetworkSystem: VcHostNetworkSystem = objVcHostConfigManager.networkSystem;
        objVcHostNetworkSystem.updateVirtualNic(strVmkNic, objVcHostVirtualNicSpec);

        let objVcHostVirtualNicManager: VcHostVirtualNicManager = objVcHostConfigManager.virtualNicManager;

        if (strAction === "Add") {
            objVcHostVirtualNicManager.selectVnicForNicType(strVmkNicType, strVmkNic);
        } else if (strAction === "Remove") {
            objVcHostVirtualNicManager.deselectVnicForNicType(strVmkNicType, strVmkNic);
        }

        if (strVmkNicType === "vsan") {

            let arrVcVsanHostConfigInfoNetworkInfoPortConfig: VcVsanHostConfigInfoNetworkInfoPortConfig[];

            if (strAction === "Add") {

                let objVcVsanHostConfigInfoNetworkInfoPortConfig: VcVsanHostConfigInfoNetworkInfoPortConfig = new VcVsanHostConfigInfoNetworkInfoPortConfig();
                objVcVsanHostConfigInfoNetworkInfoPortConfig.device = strVmkNic;

                arrVcVsanHostConfigInfoNetworkInfoPortConfig.push(objVcVsanHostConfigInfoNetworkInfoPortConfig);

            } else if (strAction === "Remove") {

                arrVcVsanHostConfigInfoNetworkInfoPortConfig = [];

            }

            let objVcVsanHostConfigInfoNetworkInfo: VcVsanHostConfigInfoNetworkInfo = new VcVsanHostConfigInfoNetworkInfo();
            objVcVsanHostConfigInfoNetworkInfo.port = arrVcVsanHostConfigInfoNetworkInfoPortConfig;

            let objVcVsanHostConfigInfo: VcVsanHostConfigInfo = new VcVsanHostConfigInfo();
            objVcVsanHostConfigInfo.networkInfo = objVcVsanHostConfigInfoNetworkInfo;

            let objVcHostVsanSystem: VcHostVsanSystem = objVcHostConfigManager.vsanSystem;
            objVcHostVsanSystem.updateVsan_Task(objVcVsanHostConfigInfo);
        }
    });
}

Discover more from Cloud Build Tools

Subscribe to get the latest posts sent to your email.

You may also like