UNPKG

@pulumi/vsphere

Version:

A Pulumi package for creating vsphere resources

373 lines • 21.4 kB
"use strict"; // *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** Object.defineProperty(exports, "__esModule", { value: true }); exports.DistributedVirtualSwitch = void 0; const pulumi = require("@pulumi/pulumi"); const utilities = require("./utilities"); /** * The `vsphere.DistributedVirtualSwitch` resource can be used to manage vSphere * Distributed Switches (VDS). * * An essential component of a distributed, scalable vSphere infrastructure, the * VDS provides centralized management and monitoring of the networking * configuration for all the hosts that are associated with the switch. * In addition to adding distributed port groups * (see the `vsphere.DistributedPortGroup` resource) * that can be used as networks for virtual machines, a VDS can be configured to * perform advanced high availability, traffic shaping, network monitoring, etc. * * For an overview on vSphere networking concepts, see * [this page][ref-vsphere-net-concepts]. * * For more information on the VDS, see [this page][ref-vsphere-vds]. * * [ref-vsphere-net-concepts]: https://techdocs.broadcom.com/us/en/vmware-cis/vsphere/vsphere/8-0/vsphere-networking-8-0/basic-networking-with-vnetwork-distributed-switches/dvport-groups.html * [ref-vsphere-vds]: https://techdocs.broadcom.com/us/en/vmware-cis/vsphere/vsphere/8-0/vsphere-networking-8-0/basic-networking-with-vnetwork-distributed-switches.html * * > **NOTE:** This resource requires vCenter and is not available on * direct ESXi host connections. * * ## Example Usage * * The following example below demonstrates a "standard" example of configuring a * VDS in a 3-node vSphere datacenter named `dc1`, across 4 NICs with two being * used as active, and two being used as passive. Note that the NIC failover order * propagates to any port groups configured on this VDS and can be overridden. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as vsphere from "@pulumi/vsphere"; * * const config = new pulumi.Config(); * const hosts = config.getObject<any>("hosts") || [ * "esxi-01.example.com", * "esxi-02.example.com", * "esxi-03.example.com", * ]; * const networkInterfaces = config.getObject<any>("networkInterfaces") || [ * "vmnic0", * "vmnic1", * "vmnic2", * "vmnic3", * ]; * const datacenter = vsphere.getDatacenter({ * name: "dc-01", * }); * const host = (new Array(hosts.length)).map((_, i) => i).map(__index => (vsphere.getHost({ * name: hosts[__index], * datacenterId: _arg0_.id, * }))); * const vds = new vsphere.DistributedVirtualSwitch("vds", { * name: "vds-01", * datacenterId: datacenter.then(datacenter => datacenter.id), * uplinks: [ * "uplink1", * "uplink2", * "uplink3", * "uplink4", * ], * activeUplinks: [ * "uplink1", * "uplink2", * ], * standbyUplinks: [ * "uplink3", * "uplink4", * ], * hosts: [ * { * hostSystemId: host[0].then(host => host.id), * devices: [networkInterfaces], * }, * { * hostSystemId: host[1].then(host => host.id), * devices: [networkInterfaces], * }, * { * hostSystemId: host[2].then(host => host.id), * devices: [networkInterfaces], * }, * ], * }); * ``` * * ### Uplink name and count control * * The following abridged example below demonstrates how you can manage the number * of uplinks, and the name of the uplinks via the `uplinks` parameter. * * Note that if you change the uplink naming and count after creating the VDS, you * may need to explicitly specify `activeUplinks` and `standbyUplinks` as these * values are saved to state after creation, regardless of being * specified in config, and will drift if not modified, causing errors. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as vsphere from "@pulumi/vsphere"; * * const vds = new vsphere.DistributedVirtualSwitch("vds", { * name: "vds-01", * datacenterId: datacenter.id, * uplinks: [ * "uplink1", * "uplink2", * ], * activeUplinks: ["uplink1"], * standbyUplinks: ["uplink2"], * }); * ``` * * > **NOTE:** The default uplink names when a VDS is created are `uplink1` * through to `uplink4`, however this default is not guaranteed to be stable and * you are encouraged to set your own. * * ## Import * * An existing VDS can be imported into this resource via the path * * to the VDS, via the following command: * * [docs-import]: https://developer.hashicorp.com/terraform/cli/import * * ```sh * $ pulumi import vsphere:index/distributedVirtualSwitch:DistributedVirtualSwitch vds /dc-01/network/vds-01 * ``` * * The above would import the VDS named `vds-01` that is located in the `dc-01` * * datacenter. */ class DistributedVirtualSwitch extends pulumi.CustomResource { /** * Get an existing DistributedVirtualSwitch resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name, id, state, opts) { return new DistributedVirtualSwitch(name, state, { ...opts, id: id }); } /** * Returns true if the given object is an instance of DistributedVirtualSwitch. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj) { if (obj === undefined || obj === null) { return false; } return obj['__pulumiType'] === DistributedVirtualSwitch.__pulumiType; } constructor(name, argsOrState, opts) { let resourceInputs = {}; opts = opts || {}; if (opts.id) { const state = argsOrState; resourceInputs["activeUplinks"] = state?.activeUplinks; resourceInputs["allowForgedTransmits"] = state?.allowForgedTransmits; resourceInputs["allowMacChanges"] = state?.allowMacChanges; resourceInputs["allowPromiscuous"] = state?.allowPromiscuous; resourceInputs["backupnfcMaximumMbit"] = state?.backupnfcMaximumMbit; resourceInputs["backupnfcReservationMbit"] = state?.backupnfcReservationMbit; resourceInputs["backupnfcShareCount"] = state?.backupnfcShareCount; resourceInputs["backupnfcShareLevel"] = state?.backupnfcShareLevel; resourceInputs["blockAllPorts"] = state?.blockAllPorts; resourceInputs["checkBeacon"] = state?.checkBeacon; resourceInputs["configVersion"] = state?.configVersion; resourceInputs["contactDetail"] = state?.contactDetail; resourceInputs["contactName"] = state?.contactName; resourceInputs["customAttributes"] = state?.customAttributes; resourceInputs["datacenterId"] = state?.datacenterId; resourceInputs["description"] = state?.description; resourceInputs["directpathGen2Allowed"] = state?.directpathGen2Allowed; resourceInputs["egressShapingAverageBandwidth"] = state?.egressShapingAverageBandwidth; resourceInputs["egressShapingBurstSize"] = state?.egressShapingBurstSize; resourceInputs["egressShapingEnabled"] = state?.egressShapingEnabled; resourceInputs["egressShapingPeakBandwidth"] = state?.egressShapingPeakBandwidth; resourceInputs["failback"] = state?.failback; resourceInputs["faulttoleranceMaximumMbit"] = state?.faulttoleranceMaximumMbit; resourceInputs["faulttoleranceReservationMbit"] = state?.faulttoleranceReservationMbit; resourceInputs["faulttoleranceShareCount"] = state?.faulttoleranceShareCount; resourceInputs["faulttoleranceShareLevel"] = state?.faulttoleranceShareLevel; resourceInputs["folder"] = state?.folder; resourceInputs["hbrMaximumMbit"] = state?.hbrMaximumMbit; resourceInputs["hbrReservationMbit"] = state?.hbrReservationMbit; resourceInputs["hbrShareCount"] = state?.hbrShareCount; resourceInputs["hbrShareLevel"] = state?.hbrShareLevel; resourceInputs["hosts"] = state?.hosts; resourceInputs["ignoreOtherPvlanMappings"] = state?.ignoreOtherPvlanMappings; resourceInputs["ingressShapingAverageBandwidth"] = state?.ingressShapingAverageBandwidth; resourceInputs["ingressShapingBurstSize"] = state?.ingressShapingBurstSize; resourceInputs["ingressShapingEnabled"] = state?.ingressShapingEnabled; resourceInputs["ingressShapingPeakBandwidth"] = state?.ingressShapingPeakBandwidth; resourceInputs["ipv4Address"] = state?.ipv4Address; resourceInputs["iscsiMaximumMbit"] = state?.iscsiMaximumMbit; resourceInputs["iscsiReservationMbit"] = state?.iscsiReservationMbit; resourceInputs["iscsiShareCount"] = state?.iscsiShareCount; resourceInputs["iscsiShareLevel"] = state?.iscsiShareLevel; resourceInputs["lacpApiVersion"] = state?.lacpApiVersion; resourceInputs["lacpEnabled"] = state?.lacpEnabled; resourceInputs["lacpMode"] = state?.lacpMode; resourceInputs["linkDiscoveryOperation"] = state?.linkDiscoveryOperation; resourceInputs["linkDiscoveryProtocol"] = state?.linkDiscoveryProtocol; resourceInputs["managementMaximumMbit"] = state?.managementMaximumMbit; resourceInputs["managementReservationMbit"] = state?.managementReservationMbit; resourceInputs["managementShareCount"] = state?.managementShareCount; resourceInputs["managementShareLevel"] = state?.managementShareLevel; resourceInputs["maxMtu"] = state?.maxMtu; resourceInputs["multicastFilteringMode"] = state?.multicastFilteringMode; resourceInputs["name"] = state?.name; resourceInputs["netflowActiveFlowTimeout"] = state?.netflowActiveFlowTimeout; resourceInputs["netflowCollectorIpAddress"] = state?.netflowCollectorIpAddress; resourceInputs["netflowCollectorPort"] = state?.netflowCollectorPort; resourceInputs["netflowEnabled"] = state?.netflowEnabled; resourceInputs["netflowIdleFlowTimeout"] = state?.netflowIdleFlowTimeout; resourceInputs["netflowInternalFlowsOnly"] = state?.netflowInternalFlowsOnly; resourceInputs["netflowObservationDomainId"] = state?.netflowObservationDomainId; resourceInputs["netflowSamplingRate"] = state?.netflowSamplingRate; resourceInputs["networkResourceControlEnabled"] = state?.networkResourceControlEnabled; resourceInputs["networkResourceControlVersion"] = state?.networkResourceControlVersion; resourceInputs["nfsMaximumMbit"] = state?.nfsMaximumMbit; resourceInputs["nfsReservationMbit"] = state?.nfsReservationMbit; resourceInputs["nfsShareCount"] = state?.nfsShareCount; resourceInputs["nfsShareLevel"] = state?.nfsShareLevel; resourceInputs["notifySwitches"] = state?.notifySwitches; resourceInputs["portPrivateSecondaryVlanId"] = state?.portPrivateSecondaryVlanId; resourceInputs["pvlanMappings"] = state?.pvlanMappings; resourceInputs["standbyUplinks"] = state?.standbyUplinks; resourceInputs["tags"] = state?.tags; resourceInputs["teamingPolicy"] = state?.teamingPolicy; resourceInputs["txUplink"] = state?.txUplink; resourceInputs["uplinks"] = state?.uplinks; resourceInputs["vdpMaximumMbit"] = state?.vdpMaximumMbit; resourceInputs["vdpReservationMbit"] = state?.vdpReservationMbit; resourceInputs["vdpShareCount"] = state?.vdpShareCount; resourceInputs["vdpShareLevel"] = state?.vdpShareLevel; resourceInputs["version"] = state?.version; resourceInputs["virtualmachineMaximumMbit"] = state?.virtualmachineMaximumMbit; resourceInputs["virtualmachineReservationMbit"] = state?.virtualmachineReservationMbit; resourceInputs["virtualmachineShareCount"] = state?.virtualmachineShareCount; resourceInputs["virtualmachineShareLevel"] = state?.virtualmachineShareLevel; resourceInputs["vlanId"] = state?.vlanId; resourceInputs["vlanRanges"] = state?.vlanRanges; resourceInputs["vmotionMaximumMbit"] = state?.vmotionMaximumMbit; resourceInputs["vmotionReservationMbit"] = state?.vmotionReservationMbit; resourceInputs["vmotionShareCount"] = state?.vmotionShareCount; resourceInputs["vmotionShareLevel"] = state?.vmotionShareLevel; resourceInputs["vsanMaximumMbit"] = state?.vsanMaximumMbit; resourceInputs["vsanReservationMbit"] = state?.vsanReservationMbit; resourceInputs["vsanShareCount"] = state?.vsanShareCount; resourceInputs["vsanShareLevel"] = state?.vsanShareLevel; } else { const args = argsOrState; if (args?.datacenterId === undefined && !opts.urn) { throw new Error("Missing required property 'datacenterId'"); } resourceInputs["activeUplinks"] = args?.activeUplinks; resourceInputs["allowForgedTransmits"] = args?.allowForgedTransmits; resourceInputs["allowMacChanges"] = args?.allowMacChanges; resourceInputs["allowPromiscuous"] = args?.allowPromiscuous; resourceInputs["backupnfcMaximumMbit"] = args?.backupnfcMaximumMbit; resourceInputs["backupnfcReservationMbit"] = args?.backupnfcReservationMbit; resourceInputs["backupnfcShareCount"] = args?.backupnfcShareCount; resourceInputs["backupnfcShareLevel"] = args?.backupnfcShareLevel; resourceInputs["blockAllPorts"] = args?.blockAllPorts; resourceInputs["checkBeacon"] = args?.checkBeacon; resourceInputs["contactDetail"] = args?.contactDetail; resourceInputs["contactName"] = args?.contactName; resourceInputs["customAttributes"] = args?.customAttributes; resourceInputs["datacenterId"] = args?.datacenterId; resourceInputs["description"] = args?.description; resourceInputs["directpathGen2Allowed"] = args?.directpathGen2Allowed; resourceInputs["egressShapingAverageBandwidth"] = args?.egressShapingAverageBandwidth; resourceInputs["egressShapingBurstSize"] = args?.egressShapingBurstSize; resourceInputs["egressShapingEnabled"] = args?.egressShapingEnabled; resourceInputs["egressShapingPeakBandwidth"] = args?.egressShapingPeakBandwidth; resourceInputs["failback"] = args?.failback; resourceInputs["faulttoleranceMaximumMbit"] = args?.faulttoleranceMaximumMbit; resourceInputs["faulttoleranceReservationMbit"] = args?.faulttoleranceReservationMbit; resourceInputs["faulttoleranceShareCount"] = args?.faulttoleranceShareCount; resourceInputs["faulttoleranceShareLevel"] = args?.faulttoleranceShareLevel; resourceInputs["folder"] = args?.folder; resourceInputs["hbrMaximumMbit"] = args?.hbrMaximumMbit; resourceInputs["hbrReservationMbit"] = args?.hbrReservationMbit; resourceInputs["hbrShareCount"] = args?.hbrShareCount; resourceInputs["hbrShareLevel"] = args?.hbrShareLevel; resourceInputs["hosts"] = args?.hosts; resourceInputs["ignoreOtherPvlanMappings"] = args?.ignoreOtherPvlanMappings; resourceInputs["ingressShapingAverageBandwidth"] = args?.ingressShapingAverageBandwidth; resourceInputs["ingressShapingBurstSize"] = args?.ingressShapingBurstSize; resourceInputs["ingressShapingEnabled"] = args?.ingressShapingEnabled; resourceInputs["ingressShapingPeakBandwidth"] = args?.ingressShapingPeakBandwidth; resourceInputs["ipv4Address"] = args?.ipv4Address; resourceInputs["iscsiMaximumMbit"] = args?.iscsiMaximumMbit; resourceInputs["iscsiReservationMbit"] = args?.iscsiReservationMbit; resourceInputs["iscsiShareCount"] = args?.iscsiShareCount; resourceInputs["iscsiShareLevel"] = args?.iscsiShareLevel; resourceInputs["lacpApiVersion"] = args?.lacpApiVersion; resourceInputs["lacpEnabled"] = args?.lacpEnabled; resourceInputs["lacpMode"] = args?.lacpMode; resourceInputs["linkDiscoveryOperation"] = args?.linkDiscoveryOperation; resourceInputs["linkDiscoveryProtocol"] = args?.linkDiscoveryProtocol; resourceInputs["managementMaximumMbit"] = args?.managementMaximumMbit; resourceInputs["managementReservationMbit"] = args?.managementReservationMbit; resourceInputs["managementShareCount"] = args?.managementShareCount; resourceInputs["managementShareLevel"] = args?.managementShareLevel; resourceInputs["maxMtu"] = args?.maxMtu; resourceInputs["multicastFilteringMode"] = args?.multicastFilteringMode; resourceInputs["name"] = args?.name; resourceInputs["netflowActiveFlowTimeout"] = args?.netflowActiveFlowTimeout; resourceInputs["netflowCollectorIpAddress"] = args?.netflowCollectorIpAddress; resourceInputs["netflowCollectorPort"] = args?.netflowCollectorPort; resourceInputs["netflowEnabled"] = args?.netflowEnabled; resourceInputs["netflowIdleFlowTimeout"] = args?.netflowIdleFlowTimeout; resourceInputs["netflowInternalFlowsOnly"] = args?.netflowInternalFlowsOnly; resourceInputs["netflowObservationDomainId"] = args?.netflowObservationDomainId; resourceInputs["netflowSamplingRate"] = args?.netflowSamplingRate; resourceInputs["networkResourceControlEnabled"] = args?.networkResourceControlEnabled; resourceInputs["networkResourceControlVersion"] = args?.networkResourceControlVersion; resourceInputs["nfsMaximumMbit"] = args?.nfsMaximumMbit; resourceInputs["nfsReservationMbit"] = args?.nfsReservationMbit; resourceInputs["nfsShareCount"] = args?.nfsShareCount; resourceInputs["nfsShareLevel"] = args?.nfsShareLevel; resourceInputs["notifySwitches"] = args?.notifySwitches; resourceInputs["portPrivateSecondaryVlanId"] = args?.portPrivateSecondaryVlanId; resourceInputs["pvlanMappings"] = args?.pvlanMappings; resourceInputs["standbyUplinks"] = args?.standbyUplinks; resourceInputs["tags"] = args?.tags; resourceInputs["teamingPolicy"] = args?.teamingPolicy; resourceInputs["txUplink"] = args?.txUplink; resourceInputs["uplinks"] = args?.uplinks; resourceInputs["vdpMaximumMbit"] = args?.vdpMaximumMbit; resourceInputs["vdpReservationMbit"] = args?.vdpReservationMbit; resourceInputs["vdpShareCount"] = args?.vdpShareCount; resourceInputs["vdpShareLevel"] = args?.vdpShareLevel; resourceInputs["version"] = args?.version; resourceInputs["virtualmachineMaximumMbit"] = args?.virtualmachineMaximumMbit; resourceInputs["virtualmachineReservationMbit"] = args?.virtualmachineReservationMbit; resourceInputs["virtualmachineShareCount"] = args?.virtualmachineShareCount; resourceInputs["virtualmachineShareLevel"] = args?.virtualmachineShareLevel; resourceInputs["vlanId"] = args?.vlanId; resourceInputs["vlanRanges"] = args?.vlanRanges; resourceInputs["vmotionMaximumMbit"] = args?.vmotionMaximumMbit; resourceInputs["vmotionReservationMbit"] = args?.vmotionReservationMbit; resourceInputs["vmotionShareCount"] = args?.vmotionShareCount; resourceInputs["vmotionShareLevel"] = args?.vmotionShareLevel; resourceInputs["vsanMaximumMbit"] = args?.vsanMaximumMbit; resourceInputs["vsanReservationMbit"] = args?.vsanReservationMbit; resourceInputs["vsanShareCount"] = args?.vsanShareCount; resourceInputs["vsanShareLevel"] = args?.vsanShareLevel; resourceInputs["configVersion"] = undefined /*out*/; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); super(DistributedVirtualSwitch.__pulumiType, name, resourceInputs, opts); } } exports.DistributedVirtualSwitch = DistributedVirtualSwitch; /** @internal */ DistributedVirtualSwitch.__pulumiType = 'vsphere:index/distributedVirtualSwitch:DistributedVirtualSwitch'; //# sourceMappingURL=distributedVirtualSwitch.js.map