All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.equinix.pulumi.networkedge.DeviceArgs Maven / Gradle / Ivy

There is a newer version: 0.19.0
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.equinix.pulumi.networkedge;

import com.equinix.pulumi.networkedge.enums.ThroughputUnit;
import com.equinix.pulumi.networkedge.inputs.DeviceClusterDetailsArgs;
import com.equinix.pulumi.networkedge.inputs.DeviceSecondaryDeviceArgs;
import com.equinix.pulumi.networkedge.inputs.DeviceSshKeyArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class DeviceArgs extends com.pulumi.resources.ResourceArgs {

    public static final DeviceArgs Empty = new DeviceArgs();

    /**
     * Billing account number for a device.
     * 
     */
    @Import(name="accountNumber", required=true)
    private Output accountNumber;

    /**
     * @return Billing account number for a device.
     * 
     */
    public Output accountNumber() {
        return this.accountNumber;
    }

    /**
     * Identifier of a WAN interface ACL template that will be applied on the device.
     * 
     */
    @Import(name="aclTemplateId")
    private @Nullable Output aclTemplateId;

    /**
     * @return Identifier of a WAN interface ACL template that will be applied on the device.
     * 
     */
    public Optional> aclTemplateId() {
        return Optional.ofNullable(this.aclTemplateId);
    }

    /**
     * Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
     * 
     */
    @Import(name="additionalBandwidth")
    private @Nullable Output additionalBandwidth;

    /**
     * @return Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
     * 
     */
    public Optional> additionalBandwidth() {
        return Optional.ofNullable(this.additionalBandwidth);
    }

    /**
     * Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default).
     * 
     */
    @Import(name="byol")
    private @Nullable Output byol;

    /**
     * @return Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default).
     * 
     */
    public Optional> byol() {
        return Optional.ofNullable(this.byol);
    }

    /**
     * Identifier of a cloud init file that will be applied on the device.
     * 
     */
    @Import(name="cloudInitFileId")
    private @Nullable Output cloudInitFileId;

    /**
     * @return Identifier of a cloud init file that will be applied on the device.
     * 
     */
    public Optional> cloudInitFileId() {
        return Optional.ofNullable(this.cloudInitFileId);
    }

    /**
     * An object that has the cluster details. See Cluster Details below for more details.
     * 
     */
    @Import(name="clusterDetails")
    private @Nullable Output clusterDetails;

    /**
     * @return An object that has the cluster details. See Cluster Details below for more details.
     * 
     */
    public Optional> clusterDetails() {
        return Optional.ofNullable(this.clusterDetails);
    }

    /**
     * Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
     * 
     */
    @Import(name="connectivity")
    private @Nullable Output connectivity;

    /**
     * @return Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
     * 
     */
    public Optional> connectivity() {
        return Optional.ofNullable(this.connectivity);
    }

    /**
     * Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)
     * 
     */
    @Import(name="coreCount", required=true)
    private Output coreCount;

    /**
     * @return Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)
     * 
     */
    public Output coreCount() {
        return this.coreCount;
    }

    /**
     * Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
     * 
     */
    @Import(name="diverseDeviceId")
    private @Nullable Output diverseDeviceId;

    /**
     * @return Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
     * 
     */
    public Optional> diverseDeviceId() {
        return Optional.ofNullable(this.diverseDeviceId);
    }

    /**
     * Device hostname prefix.
     * 
     */
    @Import(name="hostname")
    private @Nullable Output hostname;

    /**
     * @return Device hostname prefix.
     * 
     */
    public Optional> hostname() {
        return Optional.ofNullable(this.hostname);
    }

    /**
     * Number of network interfaces on a device. If not specified, default number for a given device type will be used.
     * 
     */
    @Import(name="interfaceCount")
    private @Nullable Output interfaceCount;

    /**
     * @return Number of network interfaces on a device. If not specified, default number for a given device type will be used.
     * 
     */
    public Optional> interfaceCount() {
        return Optional.ofNullable(this.interfaceCount);
    }

    /**
     * Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
     * 
     */
    @Import(name="licenseFile")
    private @Nullable Output licenseFile;

    /**
     * @return Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
     * 
     */
    public Optional> licenseFile() {
        return Optional.ofNullable(this.licenseFile);
    }

    /**
     * Identifier of a license file that will be applied on the device.
     * 
     */
    @Import(name="licenseFileId")
    private @Nullable Output licenseFileId;

    /**
     * @return Identifier of a license file that will be applied on the device.
     * 
     */
    public Optional> licenseFileId() {
        return Optional.ofNullable(this.licenseFileId);
    }

    /**
     * License Token applicable for some device types in BYOL licensing mode.
     * 
     */
    @Import(name="licenseToken")
    private @Nullable Output licenseToken;

    /**
     * @return License Token applicable for some device types in BYOL licensing mode.
     * 
     */
    public Optional> licenseToken() {
        return Optional.ofNullable(this.licenseToken);
    }

    /**
     * Device location metro code.
     * 
     */
    @Import(name="metroCode", required=true)
    private Output metroCode;

    /**
     * @return Device location metro code.
     * 
     */
    public Output metroCode() {
        return this.metroCode;
    }

    /**
     * Identifier of an MGMT interface ACL template that will be applied on the device.
     * 
     */
    @Import(name="mgmtAclTemplateUuid")
    private @Nullable Output mgmtAclTemplateUuid;

    /**
     * @return Identifier of an MGMT interface ACL template that will be applied on the device.
     * 
     */
    public Optional> mgmtAclTemplateUuid() {
        return Optional.ofNullable(this.mgmtAclTemplateUuid);
    }

    /**
     * Device name.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return Device name.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * List of email addresses that will receive device status notifications.
     * 
     */
    @Import(name="notifications", required=true)
    private Output> notifications;

    /**
     * @return List of email addresses that will receive device status notifications.
     * 
     */
    public Output> notifications() {
        return this.notifications;
    }

    /**
     * Name/number used to identify device order on the invoice.
     * 
     */
    @Import(name="orderReference")
    private @Nullable Output orderReference;

    /**
     * @return Name/number used to identify device order on the invoice.
     * 
     */
    public Optional> orderReference() {
        return Optional.ofNullable(this.orderReference);
    }

    /**
     * Device software package code.
     * 
     */
    @Import(name="packageCode", required=true)
    private Output packageCode;

    /**
     * @return Device software package code.
     * 
     */
    public Output packageCode() {
        return this.packageCode;
    }

    /**
     * Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
     * 
     */
    @Import(name="projectId")
    private @Nullable Output projectId;

    /**
     * @return Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
     * 
     */
    public Optional> projectId() {
        return Optional.ofNullable(this.projectId);
    }

    /**
     * Purchase order number associated with a device order.
     * 
     */
    @Import(name="purchaseOrderNumber")
    private @Nullable Output purchaseOrderNumber;

    /**
     * @return Purchase order number associated with a device order.
     * 
     */
    public Optional> purchaseOrderNumber() {
        return Optional.ofNullable(this.purchaseOrderNumber);
    }

    /**
     * Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
     * 
     */
    @Import(name="secondaryDevice")
    private @Nullable Output secondaryDevice;

    /**
     * @return Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
     * 
     */
    public Optional> secondaryDevice() {
        return Optional.ofNullable(this.secondaryDevice);
    }

    /**
     * Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default).
     * 
     */
    @Import(name="selfManaged")
    private @Nullable Output selfManaged;

    /**
     * @return Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default).
     * 
     */
    public Optional> selfManaged() {
        return Optional.ofNullable(this.selfManaged);
    }

    /**
     * Definition of SSH key that will be provisioned on a device
     * 
     */
    @Import(name="sshKey")
    private @Nullable Output sshKey;

    /**
     * @return Definition of SSH key that will be provisioned on a device
     * 
     */
    public Optional> sshKey() {
        return Optional.ofNullable(this.sshKey);
    }

    /**
     * Device term length.
     * 
     */
    @Import(name="termLength", required=true)
    private Output termLength;

    /**
     * @return Device term length.
     * 
     */
    public Output termLength() {
        return this.termLength;
    }

    /**
     * Device license throughput.
     * 
     */
    @Import(name="throughput")
    private @Nullable Output throughput;

    /**
     * @return Device license throughput.
     * 
     */
    public Optional> throughput() {
        return Optional.ofNullable(this.throughput);
    }

    /**
     * License throughput unit. One of `Mbps` or `Gbps`.
     * 
     */
    @Import(name="throughputUnit")
    private @Nullable Output> throughputUnit;

    /**
     * @return License throughput unit. One of `Mbps` or `Gbps`.
     * 
     */
    public Optional>> throughputUnit() {
        return Optional.ofNullable(this.throughputUnit);
    }

    /**
     * Device type code.
     * 
     */
    @Import(name="typeCode", required=true)
    private Output typeCode;

    /**
     * @return Device type code.
     * 
     */
    public Output typeCode() {
        return this.typeCode;
    }

    /**
     * Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)
     * * `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
     * 
     */
    @Import(name="vendorConfiguration")
    private @Nullable Output> vendorConfiguration;

    /**
     * @return Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)
     * * `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
     * 
     */
    public Optional>> vendorConfiguration() {
        return Optional.ofNullable(this.vendorConfiguration);
    }

    /**
     * Device software software version.
     * 
     */
    @Import(name="version", required=true)
    private Output version;

    /**
     * @return Device software software version.
     * 
     */
    public Output version() {
        return this.version;
    }

    /**
     * device interface id picked for WAN
     * 
     */
    @Import(name="wanInterfaceId")
    private @Nullable Output wanInterfaceId;

    /**
     * @return device interface id picked for WAN
     * 
     */
    public Optional> wanInterfaceId() {
        return Optional.ofNullable(this.wanInterfaceId);
    }

    private DeviceArgs() {}

    private DeviceArgs(DeviceArgs $) {
        this.accountNumber = $.accountNumber;
        this.aclTemplateId = $.aclTemplateId;
        this.additionalBandwidth = $.additionalBandwidth;
        this.byol = $.byol;
        this.cloudInitFileId = $.cloudInitFileId;
        this.clusterDetails = $.clusterDetails;
        this.connectivity = $.connectivity;
        this.coreCount = $.coreCount;
        this.diverseDeviceId = $.diverseDeviceId;
        this.hostname = $.hostname;
        this.interfaceCount = $.interfaceCount;
        this.licenseFile = $.licenseFile;
        this.licenseFileId = $.licenseFileId;
        this.licenseToken = $.licenseToken;
        this.metroCode = $.metroCode;
        this.mgmtAclTemplateUuid = $.mgmtAclTemplateUuid;
        this.name = $.name;
        this.notifications = $.notifications;
        this.orderReference = $.orderReference;
        this.packageCode = $.packageCode;
        this.projectId = $.projectId;
        this.purchaseOrderNumber = $.purchaseOrderNumber;
        this.secondaryDevice = $.secondaryDevice;
        this.selfManaged = $.selfManaged;
        this.sshKey = $.sshKey;
        this.termLength = $.termLength;
        this.throughput = $.throughput;
        this.throughputUnit = $.throughputUnit;
        this.typeCode = $.typeCode;
        this.vendorConfiguration = $.vendorConfiguration;
        this.version = $.version;
        this.wanInterfaceId = $.wanInterfaceId;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(DeviceArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private DeviceArgs $;

        public Builder() {
            $ = new DeviceArgs();
        }

        public Builder(DeviceArgs defaults) {
            $ = new DeviceArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param accountNumber Billing account number for a device.
         * 
         * @return builder
         * 
         */
        public Builder accountNumber(Output accountNumber) {
            $.accountNumber = accountNumber;
            return this;
        }

        /**
         * @param accountNumber Billing account number for a device.
         * 
         * @return builder
         * 
         */
        public Builder accountNumber(String accountNumber) {
            return accountNumber(Output.of(accountNumber));
        }

        /**
         * @param aclTemplateId Identifier of a WAN interface ACL template that will be applied on the device.
         * 
         * @return builder
         * 
         */
        public Builder aclTemplateId(@Nullable Output aclTemplateId) {
            $.aclTemplateId = aclTemplateId;
            return this;
        }

        /**
         * @param aclTemplateId Identifier of a WAN interface ACL template that will be applied on the device.
         * 
         * @return builder
         * 
         */
        public Builder aclTemplateId(String aclTemplateId) {
            return aclTemplateId(Output.of(aclTemplateId));
        }

        /**
         * @param additionalBandwidth Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
         * 
         * @return builder
         * 
         */
        public Builder additionalBandwidth(@Nullable Output additionalBandwidth) {
            $.additionalBandwidth = additionalBandwidth;
            return this;
        }

        /**
         * @param additionalBandwidth Additional Internet bandwidth, in Mbps, that will be allocated to the device (in addition to default 15Mbps).
         * 
         * @return builder
         * 
         */
        public Builder additionalBandwidth(Integer additionalBandwidth) {
            return additionalBandwidth(Output.of(additionalBandwidth));
        }

        /**
         * @param byol Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default).
         * 
         * @return builder
         * 
         */
        public Builder byol(@Nullable Output byol) {
            $.byol = byol;
            return this;
        }

        /**
         * @param byol Boolean value that determines device licensing mode, i.e., `bring your own license` or `subscription` (default).
         * 
         * @return builder
         * 
         */
        public Builder byol(Boolean byol) {
            return byol(Output.of(byol));
        }

        /**
         * @param cloudInitFileId Identifier of a cloud init file that will be applied on the device.
         * 
         * @return builder
         * 
         */
        public Builder cloudInitFileId(@Nullable Output cloudInitFileId) {
            $.cloudInitFileId = cloudInitFileId;
            return this;
        }

        /**
         * @param cloudInitFileId Identifier of a cloud init file that will be applied on the device.
         * 
         * @return builder
         * 
         */
        public Builder cloudInitFileId(String cloudInitFileId) {
            return cloudInitFileId(Output.of(cloudInitFileId));
        }

        /**
         * @param clusterDetails An object that has the cluster details. See Cluster Details below for more details.
         * 
         * @return builder
         * 
         */
        public Builder clusterDetails(@Nullable Output clusterDetails) {
            $.clusterDetails = clusterDetails;
            return this;
        }

        /**
         * @param clusterDetails An object that has the cluster details. See Cluster Details below for more details.
         * 
         * @return builder
         * 
         */
        public Builder clusterDetails(DeviceClusterDetailsArgs clusterDetails) {
            return clusterDetails(Output.of(clusterDetails));
        }

        /**
         * @param connectivity Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
         * 
         * @return builder
         * 
         */
        public Builder connectivity(@Nullable Output connectivity) {
            $.connectivity = connectivity;
            return this;
        }

        /**
         * @param connectivity Device accessibility (INTERNET-ACCESS or PRIVATE or INTERNET-ACCESS-WITH-PRVT-MGMT). If not specified, default will be INTERNET-ACCESS
         * 
         * @return builder
         * 
         */
        public Builder connectivity(String connectivity) {
            return connectivity(Output.of(connectivity));
        }

        /**
         * @param coreCount Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)
         * 
         * @return builder
         * 
         */
        public Builder coreCount(Output coreCount) {
            $.coreCount = coreCount;
            return this;
        }

        /**
         * @param coreCount Number of CPU cores used by device. (**NOTE: Use this field to resize your device. When resizing your HA devices, primary device will be upgraded first. If the upgrade failed, device will be automatically rolled back to the previous state with original core number.**)
         * 
         * @return builder
         * 
         */
        public Builder coreCount(Integer coreCount) {
            return coreCount(Output.of(coreCount));
        }

        /**
         * @param diverseDeviceId Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
         * 
         * @return builder
         * 
         */
        public Builder diverseDeviceId(@Nullable Output diverseDeviceId) {
            $.diverseDeviceId = diverseDeviceId;
            return this;
        }

        /**
         * @param diverseDeviceId Unique ID of an existing device. Use this field to let Equinix know if you want your new device to be in a different location from any existing virtual device. This field is only meaningful for single devices.
         * 
         * @return builder
         * 
         */
        public Builder diverseDeviceId(String diverseDeviceId) {
            return diverseDeviceId(Output.of(diverseDeviceId));
        }

        /**
         * @param hostname Device hostname prefix.
         * 
         * @return builder
         * 
         */
        public Builder hostname(@Nullable Output hostname) {
            $.hostname = hostname;
            return this;
        }

        /**
         * @param hostname Device hostname prefix.
         * 
         * @return builder
         * 
         */
        public Builder hostname(String hostname) {
            return hostname(Output.of(hostname));
        }

        /**
         * @param interfaceCount Number of network interfaces on a device. If not specified, default number for a given device type will be used.
         * 
         * @return builder
         * 
         */
        public Builder interfaceCount(@Nullable Output interfaceCount) {
            $.interfaceCount = interfaceCount;
            return this;
        }

        /**
         * @param interfaceCount Number of network interfaces on a device. If not specified, default number for a given device type will be used.
         * 
         * @return builder
         * 
         */
        public Builder interfaceCount(Integer interfaceCount) {
            return interfaceCount(Output.of(interfaceCount));
        }

        /**
         * @param licenseFile Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
         * 
         * @return builder
         * 
         */
        public Builder licenseFile(@Nullable Output licenseFile) {
            $.licenseFile = licenseFile;
            return this;
        }

        /**
         * @param licenseFile Path to the license file that will be uploaded and applied on a device. Applicable for some device types in BYOL licensing mode.
         * 
         * @return builder
         * 
         */
        public Builder licenseFile(String licenseFile) {
            return licenseFile(Output.of(licenseFile));
        }

        /**
         * @param licenseFileId Identifier of a license file that will be applied on the device.
         * 
         * @return builder
         * 
         */
        public Builder licenseFileId(@Nullable Output licenseFileId) {
            $.licenseFileId = licenseFileId;
            return this;
        }

        /**
         * @param licenseFileId Identifier of a license file that will be applied on the device.
         * 
         * @return builder
         * 
         */
        public Builder licenseFileId(String licenseFileId) {
            return licenseFileId(Output.of(licenseFileId));
        }

        /**
         * @param licenseToken License Token applicable for some device types in BYOL licensing mode.
         * 
         * @return builder
         * 
         */
        public Builder licenseToken(@Nullable Output licenseToken) {
            $.licenseToken = licenseToken;
            return this;
        }

        /**
         * @param licenseToken License Token applicable for some device types in BYOL licensing mode.
         * 
         * @return builder
         * 
         */
        public Builder licenseToken(String licenseToken) {
            return licenseToken(Output.of(licenseToken));
        }

        /**
         * @param metroCode Device location metro code.
         * 
         * @return builder
         * 
         */
        public Builder metroCode(Output metroCode) {
            $.metroCode = metroCode;
            return this;
        }

        /**
         * @param metroCode Device location metro code.
         * 
         * @return builder
         * 
         */
        public Builder metroCode(String metroCode) {
            return metroCode(Output.of(metroCode));
        }

        /**
         * @param mgmtAclTemplateUuid Identifier of an MGMT interface ACL template that will be applied on the device.
         * 
         * @return builder
         * 
         */
        public Builder mgmtAclTemplateUuid(@Nullable Output mgmtAclTemplateUuid) {
            $.mgmtAclTemplateUuid = mgmtAclTemplateUuid;
            return this;
        }

        /**
         * @param mgmtAclTemplateUuid Identifier of an MGMT interface ACL template that will be applied on the device.
         * 
         * @return builder
         * 
         */
        public Builder mgmtAclTemplateUuid(String mgmtAclTemplateUuid) {
            return mgmtAclTemplateUuid(Output.of(mgmtAclTemplateUuid));
        }

        /**
         * @param name Device name.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name Device name.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param notifications List of email addresses that will receive device status notifications.
         * 
         * @return builder
         * 
         */
        public Builder notifications(Output> notifications) {
            $.notifications = notifications;
            return this;
        }

        /**
         * @param notifications List of email addresses that will receive device status notifications.
         * 
         * @return builder
         * 
         */
        public Builder notifications(List notifications) {
            return notifications(Output.of(notifications));
        }

        /**
         * @param notifications List of email addresses that will receive device status notifications.
         * 
         * @return builder
         * 
         */
        public Builder notifications(String... notifications) {
            return notifications(List.of(notifications));
        }

        /**
         * @param orderReference Name/number used to identify device order on the invoice.
         * 
         * @return builder
         * 
         */
        public Builder orderReference(@Nullable Output orderReference) {
            $.orderReference = orderReference;
            return this;
        }

        /**
         * @param orderReference Name/number used to identify device order on the invoice.
         * 
         * @return builder
         * 
         */
        public Builder orderReference(String orderReference) {
            return orderReference(Output.of(orderReference));
        }

        /**
         * @param packageCode Device software package code.
         * 
         * @return builder
         * 
         */
        public Builder packageCode(Output packageCode) {
            $.packageCode = packageCode;
            return this;
        }

        /**
         * @param packageCode Device software package code.
         * 
         * @return builder
         * 
         */
        public Builder packageCode(String packageCode) {
            return packageCode(Output.of(packageCode));
        }

        /**
         * @param projectId Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
         * 
         * @return builder
         * 
         */
        public Builder projectId(@Nullable Output projectId) {
            $.projectId = projectId;
            return this;
        }

        /**
         * @param projectId Unique Identifier for the project resource where the device is scoped to.If you leave it out, the device will be created under the default project id of your organization.
         * 
         * @return builder
         * 
         */
        public Builder projectId(String projectId) {
            return projectId(Output.of(projectId));
        }

        /**
         * @param purchaseOrderNumber Purchase order number associated with a device order.
         * 
         * @return builder
         * 
         */
        public Builder purchaseOrderNumber(@Nullable Output purchaseOrderNumber) {
            $.purchaseOrderNumber = purchaseOrderNumber;
            return this;
        }

        /**
         * @param purchaseOrderNumber Purchase order number associated with a device order.
         * 
         * @return builder
         * 
         */
        public Builder purchaseOrderNumber(String purchaseOrderNumber) {
            return purchaseOrderNumber(Output.of(purchaseOrderNumber));
        }

        /**
         * @param secondaryDevice Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
         * 
         * @return builder
         * 
         */
        public Builder secondaryDevice(@Nullable Output secondaryDevice) {
            $.secondaryDevice = secondaryDevice;
            return this;
        }

        /**
         * @param secondaryDevice Definition of secondary device for redundant device configurations. See Secondary Device below for more details.
         * 
         * @return builder
         * 
         */
        public Builder secondaryDevice(DeviceSecondaryDeviceArgs secondaryDevice) {
            return secondaryDevice(Output.of(secondaryDevice));
        }

        /**
         * @param selfManaged Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default).
         * 
         * @return builder
         * 
         */
        public Builder selfManaged(@Nullable Output selfManaged) {
            $.selfManaged = selfManaged;
            return this;
        }

        /**
         * @param selfManaged Boolean value that determines device management mode, i.e., `self-managed` or `Equinix-managed` (default).
         * 
         * @return builder
         * 
         */
        public Builder selfManaged(Boolean selfManaged) {
            return selfManaged(Output.of(selfManaged));
        }

        /**
         * @param sshKey Definition of SSH key that will be provisioned on a device
         * 
         * @return builder
         * 
         */
        public Builder sshKey(@Nullable Output sshKey) {
            $.sshKey = sshKey;
            return this;
        }

        /**
         * @param sshKey Definition of SSH key that will be provisioned on a device
         * 
         * @return builder
         * 
         */
        public Builder sshKey(DeviceSshKeyArgs sshKey) {
            return sshKey(Output.of(sshKey));
        }

        /**
         * @param termLength Device term length.
         * 
         * @return builder
         * 
         */
        public Builder termLength(Output termLength) {
            $.termLength = termLength;
            return this;
        }

        /**
         * @param termLength Device term length.
         * 
         * @return builder
         * 
         */
        public Builder termLength(Integer termLength) {
            return termLength(Output.of(termLength));
        }

        /**
         * @param throughput Device license throughput.
         * 
         * @return builder
         * 
         */
        public Builder throughput(@Nullable Output throughput) {
            $.throughput = throughput;
            return this;
        }

        /**
         * @param throughput Device license throughput.
         * 
         * @return builder
         * 
         */
        public Builder throughput(Integer throughput) {
            return throughput(Output.of(throughput));
        }

        /**
         * @param throughputUnit License throughput unit. One of `Mbps` or `Gbps`.
         * 
         * @return builder
         * 
         */
        public Builder throughputUnit(@Nullable Output> throughputUnit) {
            $.throughputUnit = throughputUnit;
            return this;
        }

        /**
         * @param throughputUnit License throughput unit. One of `Mbps` or `Gbps`.
         * 
         * @return builder
         * 
         */
        public Builder throughputUnit(Either throughputUnit) {
            return throughputUnit(Output.of(throughputUnit));
        }

        /**
         * @param throughputUnit License throughput unit. One of `Mbps` or `Gbps`.
         * 
         * @return builder
         * 
         */
        public Builder throughputUnit(String throughputUnit) {
            return throughputUnit(Either.ofLeft(throughputUnit));
        }

        /**
         * @param throughputUnit License throughput unit. One of `Mbps` or `Gbps`.
         * 
         * @return builder
         * 
         */
        public Builder throughputUnit(ThroughputUnit throughputUnit) {
            return throughputUnit(Either.ofRight(throughputUnit));
        }

        /**
         * @param typeCode Device type code.
         * 
         * @return builder
         * 
         */
        public Builder typeCode(Output typeCode) {
            $.typeCode = typeCode;
            return this;
        }

        /**
         * @param typeCode Device type code.
         * 
         * @return builder
         * 
         */
        public Builder typeCode(String typeCode) {
            return typeCode(Output.of(typeCode));
        }

        /**
         * @param vendorConfiguration Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)
         * * `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
         * 
         * @return builder
         * 
         */
        public Builder vendorConfiguration(@Nullable Output> vendorConfiguration) {
            $.vendorConfiguration = vendorConfiguration;
            return this;
        }

        /**
         * @param vendorConfiguration Map of vendor specific configuration parameters for a device (controller1, activationKey, managementType, siteId, systemIpAddress, privateAddress, privateCidrMask, privateGateway, licenseKey, licenseId, panoramaAuthKey, panoramaIpAddress)
         * * `ssh-key` - (Optional) Definition of SSH key that will be provisioned on a device (max one key). See SSH Key below for more details.
         * 
         * @return builder
         * 
         */
        public Builder vendorConfiguration(Map vendorConfiguration) {
            return vendorConfiguration(Output.of(vendorConfiguration));
        }

        /**
         * @param version Device software software version.
         * 
         * @return builder
         * 
         */
        public Builder version(Output version) {
            $.version = version;
            return this;
        }

        /**
         * @param version Device software software version.
         * 
         * @return builder
         * 
         */
        public Builder version(String version) {
            return version(Output.of(version));
        }

        /**
         * @param wanInterfaceId device interface id picked for WAN
         * 
         * @return builder
         * 
         */
        public Builder wanInterfaceId(@Nullable Output wanInterfaceId) {
            $.wanInterfaceId = wanInterfaceId;
            return this;
        }

        /**
         * @param wanInterfaceId device interface id picked for WAN
         * 
         * @return builder
         * 
         */
        public Builder wanInterfaceId(String wanInterfaceId) {
            return wanInterfaceId(Output.of(wanInterfaceId));
        }

        public DeviceArgs build() {
            if ($.accountNumber == null) {
                throw new MissingRequiredPropertyException("DeviceArgs", "accountNumber");
            }
            if ($.coreCount == null) {
                throw new MissingRequiredPropertyException("DeviceArgs", "coreCount");
            }
            if ($.metroCode == null) {
                throw new MissingRequiredPropertyException("DeviceArgs", "metroCode");
            }
            if ($.notifications == null) {
                throw new MissingRequiredPropertyException("DeviceArgs", "notifications");
            }
            if ($.packageCode == null) {
                throw new MissingRequiredPropertyException("DeviceArgs", "packageCode");
            }
            if ($.termLength == null) {
                throw new MissingRequiredPropertyException("DeviceArgs", "termLength");
            }
            if ($.typeCode == null) {
                throw new MissingRequiredPropertyException("DeviceArgs", "typeCode");
            }
            if ($.version == null) {
                throw new MissingRequiredPropertyException("DeviceArgs", "version");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy