To use this function add it to the class library file named OrchestratorService.ts
GitHub Repository: https://github.com/SimonSparksUK/Orchestrator
Filename: OrchestratorService.ts
Description: Orchestrator Function to Create a Distributed Virtual Switch – Part 1
Function serverFindAllForType
publicVcVmwareDistributedVirtualSwitchCreate(objVcNetworkFolder:VcNetworkFolder):VcVmwareDistributedVirtualSwitch{
letarrUplinkPortName:string[]= [];
arrUplinkPortName.push("dvUplink-A");
arrUplinkPortName.push("dvUplink-B");
letarrPortGroup:{ strPortgroupName:string, intVLANNumber:number, arr:any[], strLoadBalancingMethod:string}[]= [];
arrPortGroup.push({strPortgroupName:"pgVLAN-10-Management",intVLANNumber:10,strLoadBalancingMethod:"loadbalance_loadbased",arr: ["dvUplink-A","dvUplink-B"]});
arrPortGroup.push({strPortgroupName:"pgVLAN-20-Provisioning",intVLANNumber:20,strLoadBalancingMethod:"loadbalance_loadbased",arr: ["dvUplink-A","dvUplink-B"]});
arrPortGroup.push({strPortgroupName:"pgVLAN-30-vMotion-A",intVLANNumber:30,strLoadBalancingMethod:"loadbalance_loadbased",arr: ["dvUplink-A"]});
arrPortGroup.push({strPortgroupName:"pgVLAN-30-vMotion-B",intVLANNumber:30,strLoadBalancingMethod:"loadbalance_loadbased",arr: ["dvUplink-B"]});
letobjVcDVSNameArrayUplinkPortPolicy:VcDVSNameArrayUplinkPortPolicy=newVcDVSNameArrayUplinkPortPolicy();
objVcDVSNameArrayUplinkPortPolicy.uplinkPortName=arrUplinkPortName;
letobjVcDVSContactInfo:VcDVSContactInfo=newVcDVSContactInfo();
objVcDVSContactInfo.name="Administrator";
objVcDVSContactInfo.contact="Administrator";
letobjVcDVSPolicy:VcDVSPolicy=newVcDVSPolicy();
objVcDVSPolicy.autoPreInstallAllowed=true;
objVcDVSPolicy.autoUpgradeAllowed=true;
objVcDVSPolicy.partialUpgradeAllowed=true;
letobjVcBoolPolicy:VcBoolPolicy=newVcBoolPolicy();
objVcBoolPolicy.inherited=false;
objVcBoolPolicy.value=false;
letobjVcStringPolicy:VcStringPolicy=newVcStringPolicy();
objVcStringPolicy.inherited=false;
objVcStringPolicy.value="-1";
letarrVcNumericRangeVLANs:VcNumericRange[]= [];
arrPortGroup.forEach((objPortGroup)=>{
letintPortGroupVLAN:number=objPortGroup.intVLANNumber;
letobjVcNumericRangeCheck:VcNumericRange=arrVcNumericRangeVLANs.find((objVcNumericRange:VcNumericRange):boolean=>{
returnobjVcNumericRange.start===intPortGroupVLAN||objVcNumericRange.end===intPortGroupVLAN;
});
if (!objVcNumericRangeCheck){
letobjVcNumericRange:VcNumericRange=newVcNumericRange();
objVcNumericRange.start=intPortGroupVLAN;
objVcNumericRange.end=intPortGroupVLAN;
this.objLogger.info("Adding VLAN"+intPortGroupVLAN+" to the Trunk Allowed VLANs");
arrVcNumericRangeVLANs.push(objVcNumericRange);
}
});
letobjVcVmwareDistributedVirtualSwitchTrunkVlanSpec:VcVmwareDistributedVirtualSwitchTrunkVlanSpec=newVcVmwareDistributedVirtualSwitchTrunkVlanSpec();
objVcVmwareDistributedVirtualSwitchTrunkVlanSpec.inherited=false;
objVcVmwareDistributedVirtualSwitchTrunkVlanSpec.vlanId=arrVcNumericRangeVLANs;
letobjVcVMwareDVSPortSetting:VcVMwareDVSPortSetting=newVcVMwareDVSPortSetting();
objVcVMwareDVSPortSetting.vlan=objVcVmwareDistributedVirtualSwitchTrunkVlanSpec;
objVcVMwareDVSPortSetting.blocked=objVcBoolPolicy;
objVcVMwareDVSPortSetting.vmDirectPathGen2Allowed=objVcBoolPolicy;
objVcVMwareDVSPortSetting.networkResourcePoolKey=objVcStringPolicy;
letobjVcLinkDiscoveryProtocolConfig:VcLinkDiscoveryProtocolConfig=newVcLinkDiscoveryProtocolConfig();
objVcLinkDiscoveryProtocolConfig.protocol="cdp";
objVcLinkDiscoveryProtocolConfig.operation="both";
letarrVcDistributedVirtualSwitchHostMemberConfigSpec:VcDistributedVirtualSwitchHostMemberConfigSpec[]= [];
letarrVcSdkConnection:VcSdkConnection[]=VcPlugin.allSdkConnections;
arrVcSdkConnection.forEach((objVcSdkConnection:VcSdkConnection):void=>{
letarrVcHostSystem:VcHostSystem[]=objVcSdkConnection.allHostSystems;
arrVcHostSystem.forEach((objVcHostSystem:VcHostSystem):void=>{
letobjVcDistributedVirtualSwitchHostMemberConfigSpec:VcDistributedVirtualSwitchHostMemberConfigSpec=newVcDistributedVirtualSwitchHostMemberConfigSpec();
objVcDistributedVirtualSwitchHostMemberConfigSpec.operation="add";
objVcDistributedVirtualSwitchHostMemberConfigSpec.host=objVcHostSystem;
arrVcDistributedVirtualSwitchHostMemberConfigSpec.push(objVcDistributedVirtualSwitchHostMemberConfigSpec);
});
});
letobjVcVMwareDVSConfigSpec:VcVMwareDVSConfigSpec=newVcVMwareDVSConfigSpec();
objVcVMwareDVSConfigSpec.name="dvSwitch-vSphere-Services";
objVcVMwareDVSConfigSpec.description="dvSwitch-vSphere-Services";
objVcVMwareDVSConfigSpec.uplinkPortPolicy=objVcDVSNameArrayUplinkPortPolicy;
objVcVMwareDVSConfigSpec.configVersion="5.1.0";
objVcVMwareDVSConfigSpec.contact=objVcDVSContactInfo;
objVcVMwareDVSConfigSpec.defaultProxySwitchMaxNumPorts=1024;
objVcVMwareDVSConfigSpec.policy=objVcDVSPolicy;
objVcVMwareDVSConfigSpec.defaultPortConfig=objVcVMwareDVSPortSetting;
objVcVMwareDVSConfigSpec.maxMtu=9000;
objVcVMwareDVSConfigSpec.linkDiscoveryProtocolConfig=objVcLinkDiscoveryProtocolConfig;
objVcVMwareDVSConfigSpec.host=arrVcDistributedVirtualSwitchHostMemberConfigSpec;
//TO DO - SS - Check this
letobjVcDistributedVirtualSwitchProductSpec:VcDistributedVirtualSwitchProductSpec=newVcDistributedVirtualSwitchProductSpec();
objVcDistributedVirtualSwitchProductSpec.name="DVS";
objVcDistributedVirtualSwitchProductSpec.vendor="VMware";
objVcDistributedVirtualSwitchProductSpec.version="5.1.0";
letobjVcDistributedVirtualSwitchHostProductSpec:VcDistributedVirtualSwitchHostProductSpec=newVcDistributedVirtualSwitchHostProductSpec();
objVcDistributedVirtualSwitchHostProductSpec.productLineId="";
objVcDistributedVirtualSwitchHostProductSpec.version="";
letarrVcDistributedVirtualSwitchHostProductSpec:VcDistributedVirtualSwitchHostProductSpec[]= [];
arrVcDistributedVirtualSwitchHostProductSpec.push(objVcDistributedVirtualSwitchHostProductSpec);
letobjVcDVSCapability:VcDVSCapability=newVcDVSCapability();
objVcDVSCapability.compatibleHostComponentProductInfo=arrVcDistributedVirtualSwitchHostProductSpec;
objVcDVSCapability.dvPortGroupOperationSupported=true;
objVcDVSCapability.dvPortOperationSupported=true;
objVcDVSCapability.dvsOperationSupported=true;
letobjVcDVSCreateSpec:VcDVSCreateSpec=newVcDVSCreateSpec();
objVcDVSCreateSpec.configSpec=objVcVMwareDVSConfigSpec;
objVcDVSCreateSpec.productInfo=objVcDistributedVirtualSwitchProductSpec;
objVcDVSCreateSpec.capability=objVcDVSCapability;
letobjVcTask:VcTask=objVcNetworkFolder.createDVS_Task(objVcDVSCreateSpec);
letobjVcVmwareDistributedVirtualSwitch:VcVmwareDistributedVirtualSwitch=this.WaitForVcTaskEnd(objVcTask,1);
returnobjVcVmwareDistributedVirtualSwitch;
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
