Orchestrator 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

privateStorageDrsConfigure(objVcStoragePod:VcStoragePod,objVcStorageDrsConfigSpec:VcStorageDrsConfigSpec):void{

letobjobjVcSdkConnection:VcSdkConnection=objVcStoragePod.sdkConnection;

letobjVcStorageResourceManager:VcStorageResourceManager=objobjVcSdkConnection.storageResourceManager;

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

this.WaitForVcTaskEnd(objVcTask,1);
}

Enable Function:

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

letobjVcClusterAntiAffinityRuleSpec:VcClusterAntiAffinityRuleSpec=newVcClusterAntiAffinityRuleSpec();
objVcClusterAntiAffinityRuleSpec.vm=arrVcVirtualMachine;
objVcClusterAntiAffinityRuleSpec.name=strVcClusterAntiAffinityRuleSpecName;
objVcClusterAntiAffinityRuleSpec.userCreated=true;
objVcClusterAntiAffinityRuleSpec.enabled=true;

letobjVcClusterRuleSpec:VcClusterRuleSpec=newVcClusterRuleSpec();
objVcClusterRuleSpec.operation=VcArrayUpdateOperation.add;
objVcClusterRuleSpec.info=objVcClusterAntiAffinityRuleSpec;

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

letobjVcStorageDrsPodConfigSpec:VcStorageDrsPodConfigSpec=newVcStorageDrsPodConfigSpec();
objVcStorageDrsPodConfigSpec.rule=arrVcClusterRuleSpec;

letobjVcStorageDrsConfigSpec:VcStorageDrsConfigSpec=newVcStorageDrsConfigSpec();
objVcStorageDrsConfigSpec.podConfigSpec=objVcStorageDrsPodConfigSpec;

this.StorageDrsConfigure(objVcStoragePod,objVcStorageDrsConfigSpec);
}

Disable Function:

publicStorageDrsAntiAffinityDisable(objVcStoragePod:VcStoragePod,intVcClusterRuleSpecKey:number):void{

letobjVcClusterRuleSpec:VcClusterRuleSpec=newVcClusterRuleSpec();
objVcClusterRuleSpec.removeKey_IntValue=intVcClusterRuleSpecKey;
objVcClusterRuleSpec.operation=VcArrayUpdateOperation.remove;

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

letobjVcStorageDrsPodConfigSpec:VcStorageDrsPodConfigSpec=newVcStorageDrsPodConfigSpec();
objVcStorageDrsPodConfigSpec.rule=arrVcClusterRuleSpec;

varobjVcStorageDrsConfigSpec:VcStorageDrsConfigSpec=newVcStorageDrsConfigSpec();
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