To use this function add it to the class library file named vCenterServerService.ts
GitHub Repository: https://github.com/SimonSparksUK/Orchestrator
Filename: vCenterServerService.ts
Description: Orchestrator Function to Create a Distributed Virtual Portgroups
Function VcDistributedVirtualPortgroupCreate
publicVcDistributedVirtualPortgroupCreate(objVcVmwareDistributedVirtualSwitch:VcVmwareDistributedVirtualSwitch):void{
letarrUplinkPortName:string[]= [];
arrUplinkPortName.push("dvUplink-A");
arrUplinkPortName.push("dvUplink-B");
letarrPortGroup:{ strPortgroupName:string, intVLANNumber:number, arrPortGroupUplink:any[], strLoadBalancingMethod:string}[]= [];
arrPortGroup.push({strPortgroupName:"pgVLAN-10-Management",intVLANNumber:10,strLoadBalancingMethod:"loadbalance_loadbased",arrPortGroupUplink: ["dvUplink-A","dvUplink-B"]});
arrPortGroup.push({strPortgroupName:"pgVLAN-20-Provisioning",intVLANNumber:20,strLoadBalancingMethod:"loadbalance_loadbased",arrPortGroupUplink: ["dvUplink-A","dvUplink-B"]});
arrPortGroup.push({strPortgroupName:"pgVLAN-30-vMotion-A",intVLANNumber:30,strLoadBalancingMethod:"loadbalance_loadbased",arrPortGroupUplink: ["dvUplink-A"]});
arrPortGroup.push({strPortgroupName:"pgVLAN-30-vMotion-B",intVLANNumber:30,strLoadBalancingMethod:"loadbalance_loadbased",arrPortGroupUplink: ["dvUplink-B"]});
letarrVcDistributedVirtualPortgroup:VcDistributedVirtualPortgroup[]=objVcVmwareDistributedVirtualSwitch.portgroup;
arrVcDistributedVirtualPortgroup.forEach((objVcDistributedVirtualPortgroup:VcDistributedVirtualPortgroup):void=>{
letstrVcDistributedVirtualPortgroupName:string=objVcDistributedVirtualPortgroup.name;
this.objLogger.info("===== Port Group Name ="+strVcDistributedVirtualPortgroupName);
this.objLogger.info("===== Re-Naming dvSwitch Uplink Port Group");
if (strVcDistributedVirtualPortgroupName.search("dvSwitch-DVUplinks-")>-1){
letobjVcTask:VcTask=objVcDistributedVirtualPortgroup.rename_Task("dvSwitch-vSphere-Services-Uplinks")
this.WaitForVcTaskEnd(objVcTask,1);
}
});
letobjVcBoolPolicyFALSE:VcBoolPolicy=newVcBoolPolicy();
objVcBoolPolicyFALSE.inherited=false;
objVcBoolPolicyFALSE.value=false;
letobjVcBoolPolicyTRUE:VcBoolPolicy=newVcBoolPolicy();
objVcBoolPolicyTRUE.inherited=false;
objVcBoolPolicyTRUE.value=true;
letobjVcLongPolicy:VcLongPolicy=newVcLongPolicy();
objVcLongPolicy.inherited=true;
letobjVcBoolPolicyInherited:VcBoolPolicy=newVcBoolPolicy();
objVcBoolPolicyInherited.inherited=true;
letarrVcDVPortgroupConfigSpec:VcDVPortgroupConfigSpec[]=arrPortGroup.map((objPortGroup)=>{
letstrPortGroupName:string=objPortGroup.strPortgroupName;
letintPortGroupVLAN:number=objPortGroup.intVLANNumber;
letarrPortGroupUplink:any[]=objPortGroup.arrPortGroupUplink;
letstrPortGroupTeamingPolicy:string=objPortGroup.strLoadBalancingMethod;
letobjVcVmwareDistributedVirtualSwitchVlanIdSpec:VcVmwareDistributedVirtualSwitchVlanIdSpec=newVcVmwareDistributedVirtualSwitchVlanIdSpec();
objVcVmwareDistributedVirtualSwitchVlanIdSpec.inherited=false;
objVcVmwareDistributedVirtualSwitchVlanIdSpec.vlanId=intPortGroupVLAN;
letobjVcDVSTrafficShapingPolicyIN:VcDVSTrafficShapingPolicy=newVcDVSTrafficShapingPolicy();
objVcDVSTrafficShapingPolicyIN.inherited=false;
objVcDVSTrafficShapingPolicyIN.enabled=objVcBoolPolicyFALSE;
objVcDVSTrafficShapingPolicyIN.averageBandwidth=objVcLongPolicy;// (ingressShapingAvg * 1000); // default value = 100000000 (bits per sec - so this value/1000 is what is shown as Kbits/sec in vCenter UI)
objVcDVSTrafficShapingPolicyIN.peakBandwidth=objVcLongPolicy;// (ingressShapingPeak * 1000); // default value same as averageBandwidth.value
objVcDVSTrafficShapingPolicyIN.burstSize=objVcLongPolicy;// (ingressShapingBurst * 1024); // default value = 104857600 (102400 Kbytes as shown in vCenter UI)
letobjVcDVSTrafficShapingPolicyOUT:VcDVSTrafficShapingPolicy=newVcDVSTrafficShapingPolicy();
objVcDVSTrafficShapingPolicyOUT.inherited=false;
objVcDVSTrafficShapingPolicyOUT.enabled=objVcBoolPolicyFALSE;
objVcDVSTrafficShapingPolicyOUT.averageBandwidth=objVcLongPolicy;// (egressShapingAvg * 1000); // default value = 100000000 (bits per sec - so this value/1000 is what is shown as Kbits/sec in vCenter UI)
objVcDVSTrafficShapingPolicyOUT.peakBandwidth=objVcLongPolicy;// (egressShapingPeak * 1000); // default value same as averageBandwidth.value
objVcDVSTrafficShapingPolicyOUT.burstSize=objVcLongPolicy;// (egressShapingBurst * 1024); // default value = 104857600 (102400 Kbytes as shown in vCenter UI)
letobjVcDVSFailureCriteria:VcDVSFailureCriteria=newVcDVSFailureCriteria();
objVcDVSFailureCriteria.inherited=true;
letobjVcVMwareUplinkPortOrderPolicy:VcVMwareUplinkPortOrderPolicy=newVcVMwareUplinkPortOrderPolicy();
objVcVMwareUplinkPortOrderPolicy.inherited=false;
objVcVMwareUplinkPortOrderPolicy.activeUplinkPort=arrPortGroupUplink;
objVcVMwareUplinkPortOrderPolicy.standbyUplinkPort= [];
letobjVcBoolPolicyRollingOrder:VcBoolPolicy=newVcBoolPolicy();
objVcBoolPolicyRollingOrder.inherited=false;
objVcBoolPolicyRollingOrder.value=false;
letobjVcBoolPolicyNotifySwitches:VcBoolPolicy=newVcBoolPolicy();
objVcBoolPolicyNotifySwitches.inherited=false;
objVcBoolPolicyNotifySwitches.value=true;
letobjVcStringPolicyPolicy:VcStringPolicy=newVcStringPolicy();
objVcStringPolicyPolicy.inherited=false;
objVcStringPolicyPolicy.value=strPortGroupTeamingPolicy;
letobjVcVmwareUplinkPortTeamingPolicy:VcVmwareUplinkPortTeamingPolicy=newVcVmwareUplinkPortTeamingPolicy();
objVcVmwareUplinkPortTeamingPolicy.inherited=false;
objVcVmwareUplinkPortTeamingPolicy.policy=objVcStringPolicyPolicy;
objVcVmwareUplinkPortTeamingPolicy.notifySwitches=objVcBoolPolicyNotifySwitches;
objVcVmwareUplinkPortTeamingPolicy.rollingOrder=objVcBoolPolicyRollingOrder;
objVcVmwareUplinkPortTeamingPolicy.failureCriteria=objVcDVSFailureCriteria;
objVcVmwareUplinkPortTeamingPolicy.uplinkPortOrder=objVcVMwareUplinkPortOrderPolicy;
letobjVcVMwareDVSPortgroupPolicy:VcVMwareDVSPortgroupPolicy=newVcVMwareDVSPortgroupPolicy();
objVcVMwareDVSPortgroupPolicy.portConfigResetAtDisconnect=true;
objVcVMwareDVSPortgroupPolicy.blockOverrideAllowed=true;
objVcVMwareDVSPortgroupPolicy.shapingOverrideAllowed=false;
objVcVMwareDVSPortgroupPolicy.vendorConfigOverrideAllowed=false;
objVcVMwareDVSPortgroupPolicy.livePortMovingAllowed=false;
objVcVMwareDVSPortgroupPolicy.vlanOverrideAllowed=false;
objVcVMwareDVSPortgroupPolicy.uplinkTeamingOverrideAllowed=false;
objVcVMwareDVSPortgroupPolicy.securityPolicyOverrideAllowed=false;
letobjVcDVSSecurityPolicy:VcDVSSecurityPolicy=newVcDVSSecurityPolicy();
objVcDVSSecurityPolicy.inherited=true;
objVcDVSSecurityPolicy.allowPromiscuous=objVcBoolPolicyInherited;
objVcDVSSecurityPolicy.forgedTransmits=objVcBoolPolicyTRUE;
objVcDVSSecurityPolicy.macChanges=objVcBoolPolicyTRUE;
letobjVcStringPolicyNetworkResourcePoolKey:VcStringPolicy=newVcStringPolicy();
objVcStringPolicyNetworkResourcePoolKey.inherited=false;
objVcStringPolicyNetworkResourcePoolKey.value="-1";
letobjVcIntPolicyQosTag:VcIntPolicy=newVcIntPolicy();
objVcIntPolicyQosTag.inherited=true;
objVcIntPolicyQosTag.value=0;
letobjVcVMwareDVSPortSetting:VcVMwareDVSPortSetting=newVcVMwareDVSPortSetting();
objVcVMwareDVSPortSetting.vlan=objVcVmwareDistributedVirtualSwitchVlanIdSpec;
objVcVMwareDVSPortSetting.blocked=objVcBoolPolicyFALSE;
objVcVMwareDVSPortSetting.inShapingPolicy=objVcDVSTrafficShapingPolicyIN;
objVcVMwareDVSPortSetting.outShapingPolicy=objVcDVSTrafficShapingPolicyOUT;
objVcVMwareDVSPortSetting.ipfixEnabled=objVcBoolPolicyInherited;
objVcVMwareDVSPortSetting.networkResourcePoolKey=objVcStringPolicyNetworkResourcePoolKey;
objVcVMwareDVSPortSetting.qosTag=objVcIntPolicyQosTag;
objVcVMwareDVSPortSetting.securityPolicy=objVcDVSSecurityPolicy;
objVcVMwareDVSPortSetting.txUplink=objVcBoolPolicyInherited;
objVcVMwareDVSPortSetting.uplinkTeamingPolicy=objVcVmwareUplinkPortTeamingPolicy;
objVcVMwareDVSPortSetting.vmDirectPathGen2Allowed=objVcBoolPolicyInherited;
letobjVcDVPortgroupConfigSpec:VcDVPortgroupConfigSpec=newVcDVPortgroupConfigSpec();
objVcDVPortgroupConfigSpec.name=strPortGroupName;
objVcDVPortgroupConfigSpec.description=strPortGroupName;
objVcDVPortgroupConfigSpec.numPorts=16;
objVcDVPortgroupConfigSpec.type="earlyBinding";
objVcDVPortgroupConfigSpec.autoExpand=true;
objVcDVPortgroupConfigSpec.configVersion="5.1.0";
objVcDVPortgroupConfigSpec.policy=objVcVMwareDVSPortgroupPolicy;
objVcDVPortgroupConfigSpec.portNameFormat=null;
objVcDVPortgroupConfigSpec.defaultPortConfig=objVcVMwareDVSPortSetting;
returnobjVcDVPortgroupConfigSpec;
});
letobjVcTask:VcTask=objVcVmwareDistributedVirtualSwitch.addDVPortgroup_Task(arrVcDVPortgroupConfigSpec);
this.WaitForVcTaskEnd(objVcTask,1);
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
