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

com.pulumi.alicloud.expressconnect.TrafficQosRuleArgs Maven / Gradle / Ivy

There is a newer version: 3.63.0-alpha.1727424957
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.pulumi.alicloud.expressconnect;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Integer;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final TrafficQosRuleArgs Empty = new TrafficQosRuleArgs();

    /**
     * The traffic of the QoS rule matches the Destination IPv4 network segment.
     * > **NOTE:**  If this parameter is not supported, enter **SrcIPv6Cidr** or **DstIPv6Cidr * *.
     * 
     */
    @Import(name="dstCidr")
    private @Nullable Output dstCidr;

    /**
     * @return The traffic of the QoS rule matches the Destination IPv4 network segment.
     * > **NOTE:**  If this parameter is not supported, enter **SrcIPv6Cidr** or **DstIPv6Cidr * *.
     * 
     */
    public Optional> dstCidr() {
        return Optional.ofNullable(this.dstCidr);
    }

    /**
     * The QoS rule traffic matches the Destination IPv6 network segment.
     * > **NOTE:**  If this parameter is not supported, enter **SrcCidr** or **DstCidr * *.
     * 
     */
    @Import(name="dstIpv6Cidr")
    private @Nullable Output dstIpv6Cidr;

    /**
     * @return The QoS rule traffic matches the Destination IPv6 network segment.
     * > **NOTE:**  If this parameter is not supported, enter **SrcCidr** or **DstCidr * *.
     * 
     */
    public Optional> dstIpv6Cidr() {
        return Optional.ofNullable(this.dstIpv6Cidr);
    }

    /**
     * QoS rule traffic matches the destination port number range. Value range: **0** to **65535**. If not, the value is - 1. Currently, only a single port number is supported, and the start and end of the port number must be the same. The corresponding destination port number range is fixed for different protocol types. The values are as follows:
     * - **ALL**:-1/-1, not editable.
     * - **ICMP(IPv4)**:-1/-1, non-editable.
     * - **ICMPv6(IPv6)**:-1/-1, non-editable.
     * - **TCP**:-1/-1, editable.
     * - **UDP**:-1/-1, editable.
     * - **GRE**:-1/-1, not editable.
     * - **SSH**:22/22, not editable.
     * - **Telnet**:23/23, not editable.
     * - **HTTP**:80/80, non-editable.
     * - **HTTPS**:443/443, which cannot be edited.
     * - **MS SQL**:1443/1443, which cannot be edited.
     * - **Oracle**:1521/1521, non-editable.
     * - **MySql**:3306/3306, non-editable.
     * - **RDP**:3389/3389, non-editable.
     * - **PostgreSQL**:5432/5432, non-editable.
     * - **Redis**:6379/6379, non-editable.
     * 
     */
    @Import(name="dstPortRange")
    private @Nullable Output dstPortRange;

    /**
     * @return QoS rule traffic matches the destination port number range. Value range: **0** to **65535**. If not, the value is - 1. Currently, only a single port number is supported, and the start and end of the port number must be the same. The corresponding destination port number range is fixed for different protocol types. The values are as follows:
     * - **ALL**:-1/-1, not editable.
     * - **ICMP(IPv4)**:-1/-1, non-editable.
     * - **ICMPv6(IPv6)**:-1/-1, non-editable.
     * - **TCP**:-1/-1, editable.
     * - **UDP**:-1/-1, editable.
     * - **GRE**:-1/-1, not editable.
     * - **SSH**:22/22, not editable.
     * - **Telnet**:23/23, not editable.
     * - **HTTP**:80/80, non-editable.
     * - **HTTPS**:443/443, which cannot be edited.
     * - **MS SQL**:1443/1443, which cannot be edited.
     * - **Oracle**:1521/1521, non-editable.
     * - **MySql**:3306/3306, non-editable.
     * - **RDP**:3389/3389, non-editable.
     * - **PostgreSQL**:5432/5432, non-editable.
     * - **Redis**:6379/6379, non-editable.
     * 
     */
    public Optional> dstPortRange() {
        return Optional.ofNullable(this.dstPortRange);
    }

    /**
     * The DSCP value of the traffic matched by the QoS rule. Value range: **0** to **63**. If not, the value is - 1.
     * 
     */
    @Import(name="matchDscp")
    private @Nullable Output matchDscp;

    /**
     * @return The DSCP value of the traffic matched by the QoS rule. Value range: **0** to **63**. If not, the value is - 1.
     * 
     */
    public Optional> matchDscp() {
        return Optional.ofNullable(this.matchDscp);
    }

    /**
     * QoS rule priority. Value range: **1** to **9000**. The larger the number, the higher the priority. The priority of a QoS rule cannot be repeated in the same QoS policy.
     * 
     */
    @Import(name="priority", required=true)
    private Output priority;

    /**
     * @return QoS rule priority. Value range: **1** to **9000**. The larger the number, the higher the priority. The priority of a QoS rule cannot be repeated in the same QoS policy.
     * 
     */
    public Output priority() {
        return this.priority;
    }

    /**
     * QoS rule protocol type, value:
     * - **ALL**
     * - **ICMP(IPv4)**
     * - **ICMPv6(IPv6)* *
     * - **TCP**
     * - **UDP**
     * - **GRE**
     * - **SSH**
     * - **Telnet**
     * - **HTTP**
     * - **HTTPS**
     * - **MS SQL**
     * - **Oracle**
     * - **MySql**
     * - **RDP**
     * - **PostgreSQL**
     * - **Redis**.
     * 
     */
    @Import(name="protocol", required=true)
    private Output protocol;

    /**
     * @return QoS rule protocol type, value:
     * - **ALL**
     * - **ICMP(IPv4)**
     * - **ICMPv6(IPv6)* *
     * - **TCP**
     * - **UDP**
     * - **GRE**
     * - **SSH**
     * - **Telnet**
     * - **HTTP**
     * - **HTTPS**
     * - **MS SQL**
     * - **Oracle**
     * - **MySql**
     * - **RDP**
     * - **PostgreSQL**
     * - **Redis**.
     * 
     */
    public Output protocol() {
        return this.protocol;
    }

    /**
     * The QoS policy ID.
     * 
     */
    @Import(name="qosId", required=true)
    private Output qosId;

    /**
     * @return The QoS policy ID.
     * 
     */
    public Output qosId() {
        return this.qosId;
    }

    /**
     * The QoS queue ID.
     * 
     */
    @Import(name="queueId", required=true)
    private Output queueId;

    /**
     * @return The QoS queue ID.
     * 
     */
    public Output queueId() {
        return this.queueId;
    }

    /**
     * Modify The DSCP value in the flow. Value range: **0** to **63**. If the value is not modified, the value is - 1.
     * 
     */
    @Import(name="remarkingDscp")
    private @Nullable Output remarkingDscp;

    /**
     * @return Modify The DSCP value in the flow. Value range: **0** to **63**. If the value is not modified, the value is - 1.
     * 
     */
    public Optional> remarkingDscp() {
        return Optional.ofNullable(this.remarkingDscp);
    }

    /**
     * The description of the QoS rule.  The length is 0 to 256 characters and cannot start with 'http:// 'or 'https.
     * 
     */
    @Import(name="ruleDescription")
    private @Nullable Output ruleDescription;

    /**
     * @return The description of the QoS rule.  The length is 0 to 256 characters and cannot start with 'http:// 'or 'https.
     * 
     */
    public Optional> ruleDescription() {
        return Optional.ofNullable(this.ruleDescription);
    }

    /**
     * The name of the QoS rule.  The length is 0 to 128 characters and cannot start with 'http:// 'or 'https.
     * 
     */
    @Import(name="ruleName")
    private @Nullable Output ruleName;

    /**
     * @return The name of the QoS rule.  The length is 0 to 128 characters and cannot start with 'http:// 'or 'https.
     * 
     */
    public Optional> ruleName() {
        return Optional.ofNullable(this.ruleName);
    }

    /**
     * The QoS rule traffic matches the source IPv4 CIDR block.
     * > **NOTE:**  If this parameter is not supported, enter **SrcIPv6Cidr** or **DstIPv6Cidr * *.
     * 
     */
    @Import(name="srcCidr")
    private @Nullable Output srcCidr;

    /**
     * @return The QoS rule traffic matches the source IPv4 CIDR block.
     * > **NOTE:**  If this parameter is not supported, enter **SrcIPv6Cidr** or **DstIPv6Cidr * *.
     * 
     */
    public Optional> srcCidr() {
        return Optional.ofNullable(this.srcCidr);
    }

    /**
     * The QoS rule traffic matches the source IPv6 network segment.
     * > **NOTE:**  If this parameter is not supported, enter **SrcCidr** or **DstCidr * *.
     * 
     */
    @Import(name="srcIpv6Cidr")
    private @Nullable Output srcIpv6Cidr;

    /**
     * @return The QoS rule traffic matches the source IPv6 network segment.
     * > **NOTE:**  If this parameter is not supported, enter **SrcCidr** or **DstCidr * *.
     * 
     */
    public Optional> srcIpv6Cidr() {
        return Optional.ofNullable(this.srcIpv6Cidr);
    }

    /**
     * The source port number of the QoS rule traffic matching. The value range is **0** to **65535**. If the traffic does not match, the value is - 1. Currently, only a single port number is supported, and the start and end of the port number must be the same.
     * 
     */
    @Import(name="srcPortRange")
    private @Nullable Output srcPortRange;

    /**
     * @return The source port number of the QoS rule traffic matching. The value range is **0** to **65535**. If the traffic does not match, the value is - 1. Currently, only a single port number is supported, and the start and end of the port number must be the same.
     * 
     */
    public Optional> srcPortRange() {
        return Optional.ofNullable(this.srcPortRange);
    }

    private TrafficQosRuleArgs() {}

    private TrafficQosRuleArgs(TrafficQosRuleArgs $) {
        this.dstCidr = $.dstCidr;
        this.dstIpv6Cidr = $.dstIpv6Cidr;
        this.dstPortRange = $.dstPortRange;
        this.matchDscp = $.matchDscp;
        this.priority = $.priority;
        this.protocol = $.protocol;
        this.qosId = $.qosId;
        this.queueId = $.queueId;
        this.remarkingDscp = $.remarkingDscp;
        this.ruleDescription = $.ruleDescription;
        this.ruleName = $.ruleName;
        this.srcCidr = $.srcCidr;
        this.srcIpv6Cidr = $.srcIpv6Cidr;
        this.srcPortRange = $.srcPortRange;
    }

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

    public static final class Builder {
        private TrafficQosRuleArgs $;

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

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

        /**
         * @param dstCidr The traffic of the QoS rule matches the Destination IPv4 network segment.
         * > **NOTE:**  If this parameter is not supported, enter **SrcIPv6Cidr** or **DstIPv6Cidr * *.
         * 
         * @return builder
         * 
         */
        public Builder dstCidr(@Nullable Output dstCidr) {
            $.dstCidr = dstCidr;
            return this;
        }

        /**
         * @param dstCidr The traffic of the QoS rule matches the Destination IPv4 network segment.
         * > **NOTE:**  If this parameter is not supported, enter **SrcIPv6Cidr** or **DstIPv6Cidr * *.
         * 
         * @return builder
         * 
         */
        public Builder dstCidr(String dstCidr) {
            return dstCidr(Output.of(dstCidr));
        }

        /**
         * @param dstIpv6Cidr The QoS rule traffic matches the Destination IPv6 network segment.
         * > **NOTE:**  If this parameter is not supported, enter **SrcCidr** or **DstCidr * *.
         * 
         * @return builder
         * 
         */
        public Builder dstIpv6Cidr(@Nullable Output dstIpv6Cidr) {
            $.dstIpv6Cidr = dstIpv6Cidr;
            return this;
        }

        /**
         * @param dstIpv6Cidr The QoS rule traffic matches the Destination IPv6 network segment.
         * > **NOTE:**  If this parameter is not supported, enter **SrcCidr** or **DstCidr * *.
         * 
         * @return builder
         * 
         */
        public Builder dstIpv6Cidr(String dstIpv6Cidr) {
            return dstIpv6Cidr(Output.of(dstIpv6Cidr));
        }

        /**
         * @param dstPortRange QoS rule traffic matches the destination port number range. Value range: **0** to **65535**. If not, the value is - 1. Currently, only a single port number is supported, and the start and end of the port number must be the same. The corresponding destination port number range is fixed for different protocol types. The values are as follows:
         * - **ALL**:-1/-1, not editable.
         * - **ICMP(IPv4)**:-1/-1, non-editable.
         * - **ICMPv6(IPv6)**:-1/-1, non-editable.
         * - **TCP**:-1/-1, editable.
         * - **UDP**:-1/-1, editable.
         * - **GRE**:-1/-1, not editable.
         * - **SSH**:22/22, not editable.
         * - **Telnet**:23/23, not editable.
         * - **HTTP**:80/80, non-editable.
         * - **HTTPS**:443/443, which cannot be edited.
         * - **MS SQL**:1443/1443, which cannot be edited.
         * - **Oracle**:1521/1521, non-editable.
         * - **MySql**:3306/3306, non-editable.
         * - **RDP**:3389/3389, non-editable.
         * - **PostgreSQL**:5432/5432, non-editable.
         * - **Redis**:6379/6379, non-editable.
         * 
         * @return builder
         * 
         */
        public Builder dstPortRange(@Nullable Output dstPortRange) {
            $.dstPortRange = dstPortRange;
            return this;
        }

        /**
         * @param dstPortRange QoS rule traffic matches the destination port number range. Value range: **0** to **65535**. If not, the value is - 1. Currently, only a single port number is supported, and the start and end of the port number must be the same. The corresponding destination port number range is fixed for different protocol types. The values are as follows:
         * - **ALL**:-1/-1, not editable.
         * - **ICMP(IPv4)**:-1/-1, non-editable.
         * - **ICMPv6(IPv6)**:-1/-1, non-editable.
         * - **TCP**:-1/-1, editable.
         * - **UDP**:-1/-1, editable.
         * - **GRE**:-1/-1, not editable.
         * - **SSH**:22/22, not editable.
         * - **Telnet**:23/23, not editable.
         * - **HTTP**:80/80, non-editable.
         * - **HTTPS**:443/443, which cannot be edited.
         * - **MS SQL**:1443/1443, which cannot be edited.
         * - **Oracle**:1521/1521, non-editable.
         * - **MySql**:3306/3306, non-editable.
         * - **RDP**:3389/3389, non-editable.
         * - **PostgreSQL**:5432/5432, non-editable.
         * - **Redis**:6379/6379, non-editable.
         * 
         * @return builder
         * 
         */
        public Builder dstPortRange(String dstPortRange) {
            return dstPortRange(Output.of(dstPortRange));
        }

        /**
         * @param matchDscp The DSCP value of the traffic matched by the QoS rule. Value range: **0** to **63**. If not, the value is - 1.
         * 
         * @return builder
         * 
         */
        public Builder matchDscp(@Nullable Output matchDscp) {
            $.matchDscp = matchDscp;
            return this;
        }

        /**
         * @param matchDscp The DSCP value of the traffic matched by the QoS rule. Value range: **0** to **63**. If not, the value is - 1.
         * 
         * @return builder
         * 
         */
        public Builder matchDscp(Integer matchDscp) {
            return matchDscp(Output.of(matchDscp));
        }

        /**
         * @param priority QoS rule priority. Value range: **1** to **9000**. The larger the number, the higher the priority. The priority of a QoS rule cannot be repeated in the same QoS policy.
         * 
         * @return builder
         * 
         */
        public Builder priority(Output priority) {
            $.priority = priority;
            return this;
        }

        /**
         * @param priority QoS rule priority. Value range: **1** to **9000**. The larger the number, the higher the priority. The priority of a QoS rule cannot be repeated in the same QoS policy.
         * 
         * @return builder
         * 
         */
        public Builder priority(Integer priority) {
            return priority(Output.of(priority));
        }

        /**
         * @param protocol QoS rule protocol type, value:
         * - **ALL**
         * - **ICMP(IPv4)**
         * - **ICMPv6(IPv6)* *
         * - **TCP**
         * - **UDP**
         * - **GRE**
         * - **SSH**
         * - **Telnet**
         * - **HTTP**
         * - **HTTPS**
         * - **MS SQL**
         * - **Oracle**
         * - **MySql**
         * - **RDP**
         * - **PostgreSQL**
         * - **Redis**.
         * 
         * @return builder
         * 
         */
        public Builder protocol(Output protocol) {
            $.protocol = protocol;
            return this;
        }

        /**
         * @param protocol QoS rule protocol type, value:
         * - **ALL**
         * - **ICMP(IPv4)**
         * - **ICMPv6(IPv6)* *
         * - **TCP**
         * - **UDP**
         * - **GRE**
         * - **SSH**
         * - **Telnet**
         * - **HTTP**
         * - **HTTPS**
         * - **MS SQL**
         * - **Oracle**
         * - **MySql**
         * - **RDP**
         * - **PostgreSQL**
         * - **Redis**.
         * 
         * @return builder
         * 
         */
        public Builder protocol(String protocol) {
            return protocol(Output.of(protocol));
        }

        /**
         * @param qosId The QoS policy ID.
         * 
         * @return builder
         * 
         */
        public Builder qosId(Output qosId) {
            $.qosId = qosId;
            return this;
        }

        /**
         * @param qosId The QoS policy ID.
         * 
         * @return builder
         * 
         */
        public Builder qosId(String qosId) {
            return qosId(Output.of(qosId));
        }

        /**
         * @param queueId The QoS queue ID.
         * 
         * @return builder
         * 
         */
        public Builder queueId(Output queueId) {
            $.queueId = queueId;
            return this;
        }

        /**
         * @param queueId The QoS queue ID.
         * 
         * @return builder
         * 
         */
        public Builder queueId(String queueId) {
            return queueId(Output.of(queueId));
        }

        /**
         * @param remarkingDscp Modify The DSCP value in the flow. Value range: **0** to **63**. If the value is not modified, the value is - 1.
         * 
         * @return builder
         * 
         */
        public Builder remarkingDscp(@Nullable Output remarkingDscp) {
            $.remarkingDscp = remarkingDscp;
            return this;
        }

        /**
         * @param remarkingDscp Modify The DSCP value in the flow. Value range: **0** to **63**. If the value is not modified, the value is - 1.
         * 
         * @return builder
         * 
         */
        public Builder remarkingDscp(Integer remarkingDscp) {
            return remarkingDscp(Output.of(remarkingDscp));
        }

        /**
         * @param ruleDescription The description of the QoS rule.  The length is 0 to 256 characters and cannot start with 'http:// 'or 'https.
         * 
         * @return builder
         * 
         */
        public Builder ruleDescription(@Nullable Output ruleDescription) {
            $.ruleDescription = ruleDescription;
            return this;
        }

        /**
         * @param ruleDescription The description of the QoS rule.  The length is 0 to 256 characters and cannot start with 'http:// 'or 'https.
         * 
         * @return builder
         * 
         */
        public Builder ruleDescription(String ruleDescription) {
            return ruleDescription(Output.of(ruleDescription));
        }

        /**
         * @param ruleName The name of the QoS rule.  The length is 0 to 128 characters and cannot start with 'http:// 'or 'https.
         * 
         * @return builder
         * 
         */
        public Builder ruleName(@Nullable Output ruleName) {
            $.ruleName = ruleName;
            return this;
        }

        /**
         * @param ruleName The name of the QoS rule.  The length is 0 to 128 characters and cannot start with 'http:// 'or 'https.
         * 
         * @return builder
         * 
         */
        public Builder ruleName(String ruleName) {
            return ruleName(Output.of(ruleName));
        }

        /**
         * @param srcCidr The QoS rule traffic matches the source IPv4 CIDR block.
         * > **NOTE:**  If this parameter is not supported, enter **SrcIPv6Cidr** or **DstIPv6Cidr * *.
         * 
         * @return builder
         * 
         */
        public Builder srcCidr(@Nullable Output srcCidr) {
            $.srcCidr = srcCidr;
            return this;
        }

        /**
         * @param srcCidr The QoS rule traffic matches the source IPv4 CIDR block.
         * > **NOTE:**  If this parameter is not supported, enter **SrcIPv6Cidr** or **DstIPv6Cidr * *.
         * 
         * @return builder
         * 
         */
        public Builder srcCidr(String srcCidr) {
            return srcCidr(Output.of(srcCidr));
        }

        /**
         * @param srcIpv6Cidr The QoS rule traffic matches the source IPv6 network segment.
         * > **NOTE:**  If this parameter is not supported, enter **SrcCidr** or **DstCidr * *.
         * 
         * @return builder
         * 
         */
        public Builder srcIpv6Cidr(@Nullable Output srcIpv6Cidr) {
            $.srcIpv6Cidr = srcIpv6Cidr;
            return this;
        }

        /**
         * @param srcIpv6Cidr The QoS rule traffic matches the source IPv6 network segment.
         * > **NOTE:**  If this parameter is not supported, enter **SrcCidr** or **DstCidr * *.
         * 
         * @return builder
         * 
         */
        public Builder srcIpv6Cidr(String srcIpv6Cidr) {
            return srcIpv6Cidr(Output.of(srcIpv6Cidr));
        }

        /**
         * @param srcPortRange The source port number of the QoS rule traffic matching. The value range is **0** to **65535**. If the traffic does not match, the value is - 1. Currently, only a single port number is supported, and the start and end of the port number must be the same.
         * 
         * @return builder
         * 
         */
        public Builder srcPortRange(@Nullable Output srcPortRange) {
            $.srcPortRange = srcPortRange;
            return this;
        }

        /**
         * @param srcPortRange The source port number of the QoS rule traffic matching. The value range is **0** to **65535**. If the traffic does not match, the value is - 1. Currently, only a single port number is supported, and the start and end of the port number must be the same.
         * 
         * @return builder
         * 
         */
        public Builder srcPortRange(String srcPortRange) {
            return srcPortRange(Output.of(srcPortRange));
        }

        public TrafficQosRuleArgs build() {
            if ($.priority == null) {
                throw new MissingRequiredPropertyException("TrafficQosRuleArgs", "priority");
            }
            if ($.protocol == null) {
                throw new MissingRequiredPropertyException("TrafficQosRuleArgs", "protocol");
            }
            if ($.qosId == null) {
                throw new MissingRequiredPropertyException("TrafficQosRuleArgs", "qosId");
            }
            if ($.queueId == null) {
                throw new MissingRequiredPropertyException("TrafficQosRuleArgs", "queueId");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy