Function: vCenter Virtual Machine Storage DRS Anti Affinity Toggle

by Simon Sparks · 10 December 2025

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

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

Filename: vCenterServerService.ts

Function VcStoragePodStorageDrsOverrideToggle

Description: Orchestrator Function to Configure Storage DRS Anti Affinity for an Array of vCenter Virtual Machines

private StorageDrsConfigure(objVcStoragePod: VcStoragePod, objVcStorageDrsConfigSpec: VcStorageDrsConfigSpec): void {

    let objobjVcSdkConnection: VcSdkConnection = objVcStoragePod.sdkConnection;

    let objVcStorageResourceManager: VcStorageResourceManager = objobjVcSdkConnection.storageResourceManager;

    let objVcTask: VcTask = objVcStorageResourceManager.configureStorageDrsForPod_Task(objVcStoragePod, objVcStorageDrsConfigSpec, true);

    this.WaitForVcTaskEnd(objVcTask, 1);
}

Enable Function:

public StorageDrsAntiAffinityEnable(objVcStoragePod: VcStoragePod, strVcClusterAntiAffinityRuleSpecName: string, arrVcVirtualMachine: VcVirtualMachine[]): void {

    let objVcClusterAntiAffinityRuleSpec: VcClusterAntiAffinityRuleSpec = new VcClusterAntiAffinityRuleSpec();
    objVcClusterAntiAffinityRuleSpec.vm = arrVcVirtualMachine;
    objVcClusterAntiAffinityRuleSpec.name = strVcClusterAntiAffinityRuleSpecName;
    objVcClusterAntiAffinityRuleSpec.userCreated = true;
    objVcClusterAntiAffinityRuleSpec.enabled = true;

    let objVcClusterRuleSpec: VcClusterRuleSpec = new VcClusterRuleSpec();
    objVcClusterRuleSpec.operation = VcArrayUpdateOperation.add;
    objVcClusterRuleSpec.info = objVcClusterAntiAffinityRuleSpec;

    let arrVcClusterRuleSpec: VcClusterRuleSpec[] = [];
    arrVcClusterRuleSpec.push(objVcClusterRuleSpec);

    let objVcStorageDrsPodConfigSpec: VcStorageDrsPodConfigSpec = new VcStorageDrsPodConfigSpec();
    objVcStorageDrsPodConfigSpec.rule = arrVcClusterRuleSpec;

    let objVcStorageDrsConfigSpec: VcStorageDrsConfigSpec = new VcStorageDrsConfigSpec();
    objVcStorageDrsConfigSpec.podConfigSpec = objVcStorageDrsPodConfigSpec;

    this.StorageDrsConfigure(objVcStoragePod, objVcStorageDrsConfigSpec);
}

Disable Function:

public StorageDrsAntiAffinityDisable(objVcStoragePod: VcStoragePod, intVcClusterRuleSpecKey: number): void {

    let objVcClusterRuleSpec: VcClusterRuleSpec = new VcClusterRuleSpec();
    objVcClusterRuleSpec.removeKey_IntValue = intVcClusterRuleSpecKey;
    objVcClusterRuleSpec.operation = VcArrayUpdateOperation.remove;

    let arrVcClusterRuleSpec: VcClusterRuleSpec[] = [];
    arrVcClusterRuleSpec.push(objVcClusterRuleSpec);

    let objVcStorageDrsPodConfigSpec: VcStorageDrsPodConfigSpec = new VcStorageDrsPodConfigSpec();
    objVcStorageDrsPodConfigSpec.rule = arrVcClusterRuleSpec;

    var objVcStorageDrsConfigSpec: VcStorageDrsConfigSpec = new VcStorageDrsConfigSpec();
    objVcStorageDrsConfigSpec.podConfigSpec = objVcStorageDrsPodConfigSpec;

    this.StorageDrsConfigure(objVcStoragePod, objVcStorageDrsConfigSpec);
}

Discover more from Cloud Build Tools

Subscribe to get the latest posts sent to your email.

You may also like