To use this function add it to the class library file named PluginVCDistributedVirtualPortgroupService.ts
GitHub Repository: https://github.com/SimonSparksUK/Orchestrator
Filename: PluginVCDistributedVirtualPortgroupService.ts
Description: Orchestrator Function to Create a Distributed Virtual Switch – Part 1
Function VcVmwareDistributedVirtualSwitchCreate
public VcVmwareDistributedVirtualSwitchCreate(objVcNetworkFolder: VcNetworkFolder): VcVmwareDistributedVirtualSwitch {
let arrUplinkPortName: string[] = [];
arrUplinkPortName.push("dvUplink-A");
arrUplinkPortName.push("dvUplink-B");
let arrPortGroup: { 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"] });
let objVcDVSNameArrayUplinkPortPolicy: VcDVSNameArrayUplinkPortPolicy = new VcDVSNameArrayUplinkPortPolicy();
objVcDVSNameArrayUplinkPortPolicy.uplinkPortName = arrUplinkPortName;
let objVcDVSContactInfo: VcDVSContactInfo = new VcDVSContactInfo();
objVcDVSContactInfo.name = "Administrator";
objVcDVSContactInfo.contact = "Administrator";
let objVcDVSPolicy: VcDVSPolicy = new VcDVSPolicy();
objVcDVSPolicy.autoPreInstallAllowed = true;
objVcDVSPolicy.autoUpgradeAllowed = true;
objVcDVSPolicy.partialUpgradeAllowed = true;
let objVcBoolPolicy: VcBoolPolicy = new VcBoolPolicy();
objVcBoolPolicy.inherited = false;
objVcBoolPolicy.value = false;
let objVcStringPolicy: VcStringPolicy = new VcStringPolicy();
objVcStringPolicy.inherited = false;
objVcStringPolicy.value = "-1";
let arrVcNumericRangeVLANs: VcNumericRange[] = [];
arrPortGroup.forEach((objPortGroup) => {
let intPortGroupVLAN: number = objPortGroup.intVLANNumber;
let objVcNumericRangeCheck: VcNumericRange = arrVcNumericRangeVLANs.find((objVcNumericRange: VcNumericRange): boolean => {
return objVcNumericRange.start === intPortGroupVLAN || objVcNumericRange.end === intPortGroupVLAN;
});
if (!objVcNumericRangeCheck) {
let objVcNumericRange: VcNumericRange = new VcNumericRange();
objVcNumericRange.start = intPortGroupVLAN;
objVcNumericRange.end = intPortGroupVLAN;
this.objLogger.info("Adding VLAN " + intPortGroupVLAN + " to the Trunk Allowed VLANs");
arrVcNumericRangeVLANs.push(objVcNumericRange);
}
});
let objVcVmwareDistributedVirtualSwitchTrunkVlanSpec: VcVmwareDistributedVirtualSwitchTrunkVlanSpec = new VcVmwareDistributedVirtualSwitchTrunkVlanSpec();
objVcVmwareDistributedVirtualSwitchTrunkVlanSpec.inherited = false;
objVcVmwareDistributedVirtualSwitchTrunkVlanSpec.vlanId = arrVcNumericRangeVLANs;
let objVcVMwareDVSPortSetting: VcVMwareDVSPortSetting = new VcVMwareDVSPortSetting();
objVcVMwareDVSPortSetting.vlan = objVcVmwareDistributedVirtualSwitchTrunkVlanSpec;
objVcVMwareDVSPortSetting.blocked = objVcBoolPolicy;
objVcVMwareDVSPortSetting.vmDirectPathGen2Allowed = objVcBoolPolicy;
objVcVMwareDVSPortSetting.networkResourcePoolKey = objVcStringPolicy;
let objVcLinkDiscoveryProtocolConfig: VcLinkDiscoveryProtocolConfig = new VcLinkDiscoveryProtocolConfig();
objVcLinkDiscoveryProtocolConfig.protocol = "cdp";
objVcLinkDiscoveryProtocolConfig.operation = "both";
let arrVcDistributedVirtualSwitchHostMemberConfigSpec: VcDistributedVirtualSwitchHostMemberConfigSpec[] = [];
let arrVcSdkConnection: VcSdkConnection[] = VcPlugin.allSdkConnections;
arrVcSdkConnection.forEach((objVcSdkConnection: VcSdkConnection): void => {
let arrVcHostSystem: VcHostSystem[] = objVcSdkConnection.allHostSystems;
arrVcHostSystem.forEach((objVcHostSystem: VcHostSystem): void => {
let objVcDistributedVirtualSwitchHostMemberConfigSpec: VcDistributedVirtualSwitchHostMemberConfigSpec = new VcDistributedVirtualSwitchHostMemberConfigSpec();
objVcDistributedVirtualSwitchHostMemberConfigSpec.operation = "add";
objVcDistributedVirtualSwitchHostMemberConfigSpec.host = objVcHostSystem;
arrVcDistributedVirtualSwitchHostMemberConfigSpec.push(objVcDistributedVirtualSwitchHostMemberConfigSpec);
});
});
let objVcVMwareDVSConfigSpec: VcVMwareDVSConfigSpec = new VcVMwareDVSConfigSpec();
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
let objVcDistributedVirtualSwitchProductSpec: VcDistributedVirtualSwitchProductSpec = new VcDistributedVirtualSwitchProductSpec();
objVcDistributedVirtualSwitchProductSpec.name = "DVS";
objVcDistributedVirtualSwitchProductSpec.vendor = "VMware";
objVcDistributedVirtualSwitchProductSpec.version = "5.1.0";
let objVcDistributedVirtualSwitchHostProductSpec: VcDistributedVirtualSwitchHostProductSpec = new VcDistributedVirtualSwitchHostProductSpec();
objVcDistributedVirtualSwitchHostProductSpec.productLineId = "";
objVcDistributedVirtualSwitchHostProductSpec.version = "";
let arrVcDistributedVirtualSwitchHostProductSpec: VcDistributedVirtualSwitchHostProductSpec[] = [];
arrVcDistributedVirtualSwitchHostProductSpec.push(objVcDistributedVirtualSwitchHostProductSpec);
let objVcDVSCapability: VcDVSCapability = new VcDVSCapability();
objVcDVSCapability.compatibleHostComponentProductInfo = arrVcDistributedVirtualSwitchHostProductSpec;
objVcDVSCapability.dvPortGroupOperationSupported = true;
objVcDVSCapability.dvPortOperationSupported = true;
objVcDVSCapability.dvsOperationSupported = true;
let objVcDVSCreateSpec: VcDVSCreateSpec = new VcDVSCreateSpec();
objVcDVSCreateSpec.configSpec = objVcVMwareDVSConfigSpec;
objVcDVSCreateSpec.productInfo = objVcDistributedVirtualSwitchProductSpec;
objVcDVSCreateSpec.capability = objVcDVSCapability;
let objVcTask: VcTask = objVcNetworkFolder.createDVS_Task(objVcDVSCreateSpec);
let objVcVmwareDistributedVirtualSwitch: VcVmwareDistributedVirtualSwitch = this.WaitForVcTaskEnd(objVcTask, 1);
return objVcVmwareDistributedVirtualSwitch;
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
