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

com.pulumi.alicloud.vpc.RouterInterfaceArgs 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.vpc;

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 RouterInterfaceArgs extends com.pulumi.resources.ResourceArgs {

    public static final RouterInterfaceArgs Empty = new RouterInterfaceArgs();

    /**
     * Description of the router interface. It can be 2-256 characters long or left blank. It cannot start with http:// and https://.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return Description of the router interface. It can be 2-256 characters long or left blank. It cannot start with http:// and https://.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * Used as the Packet Source IP of health check for disaster recovery or ECMP. It is only valid when `router_type` is `VBR`. The IP must be an unused IP in the local VPC. It and `health_check_target_ip` must be specified at the same time.
     * 
     */
    @Import(name="healthCheckSourceIp")
    private @Nullable Output healthCheckSourceIp;

    /**
     * @return Used as the Packet Source IP of health check for disaster recovery or ECMP. It is only valid when `router_type` is `VBR`. The IP must be an unused IP in the local VPC. It and `health_check_target_ip` must be specified at the same time.
     * 
     */
    public Optional> healthCheckSourceIp() {
        return Optional.ofNullable(this.healthCheckSourceIp);
    }

    /**
     * Used as the Packet Target IP of health check for disaster recovery or ECMP. It is only valid when `router_type` is `VBR`. The IP must be an unused IP in the local VPC. It and `health_check_source_ip` must be specified at the same time.
     * 
     */
    @Import(name="healthCheckTargetIp")
    private @Nullable Output healthCheckTargetIp;

    /**
     * @return Used as the Packet Target IP of health check for disaster recovery or ECMP. It is only valid when `router_type` is `VBR`. The IP must be an unused IP in the local VPC. It and `health_check_source_ip` must be specified at the same time.
     * 
     */
    public Optional> healthCheckTargetIp() {
        return Optional.ofNullable(this.healthCheckTargetIp);
    }

    /**
     * The billing method of the router interface. Valid values are "PrePaid" and "PostPaid". Default to "PostPaid". Router Interface doesn't support "PrePaid" when region and opposite_region are the same.
     * 
     */
    @Import(name="instanceChargeType")
    private @Nullable Output instanceChargeType;

    /**
     * @return The billing method of the router interface. Valid values are "PrePaid" and "PostPaid". Default to "PostPaid". Router Interface doesn't support "PrePaid" when region and opposite_region are the same.
     * 
     */
    public Optional> instanceChargeType() {
        return Optional.ofNullable(this.instanceChargeType);
    }

    /**
     * Name of the router interface. Length must be 2-80 characters long. Only Chinese characters, English letters, numbers, period (.), underline (_), or dash (-) are permitted.
     * If it is not specified, the default value is interface ID. The name cannot start with http:// and https://.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return Name of the router interface. Length must be 2-80 characters long. Only Chinese characters, English letters, numbers, period (.), underline (_), or dash (-) are permitted.
     * If it is not specified, the default value is interface ID. The name cannot start with http:// and https://.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * It has been deprecated from version 1.11.0.
     * 
     * @deprecated
     * Attribute 'opposite_access_point_id' has been deprecated from version 1.11.0.
     * 
     */
    @Deprecated /* Attribute 'opposite_access_point_id' has been deprecated from version 1.11.0. */
    @Import(name="oppositeAccessPointId")
    private @Nullable Output oppositeAccessPointId;

    /**
     * @return It has been deprecated from version 1.11.0.
     * 
     * @deprecated
     * Attribute 'opposite_access_point_id' has been deprecated from version 1.11.0.
     * 
     */
    @Deprecated /* Attribute 'opposite_access_point_id' has been deprecated from version 1.11.0. */
    public Optional> oppositeAccessPointId() {
        return Optional.ofNullable(this.oppositeAccessPointId);
    }

    /**
     * The Region of peer side.
     * 
     */
    @Import(name="oppositeRegion", required=true)
    private Output oppositeRegion;

    /**
     * @return The Region of peer side.
     * 
     */
    public Output oppositeRegion() {
        return this.oppositeRegion;
    }

    /**
     * The duration that you will buy the resource, in month. It is valid when `instance_charge_type` is `PrePaid`. Valid values: [1-9, 12, 24, 36]. At present, the provider does not support modify "period" and you can do that via web console.
     * > **NOTE:** The attribute `period` is only used to create Subscription instance or modify the PayAsYouGo instance to Subscription. Once effect, it will not be modified that means running `pulumi up` will not effect the resource.
     * 
     */
    @Import(name="period")
    private @Nullable Output period;

    /**
     * @return The duration that you will buy the resource, in month. It is valid when `instance_charge_type` is `PrePaid`. Valid values: [1-9, 12, 24, 36]. At present, the provider does not support modify "period" and you can do that via web console.
     * > **NOTE:** The attribute `period` is only used to create Subscription instance or modify the PayAsYouGo instance to Subscription. Once effect, it will not be modified that means running `pulumi up` will not effect the resource.
     * 
     */
    public Optional> period() {
        return Optional.ofNullable(this.period);
    }

    /**
     * The role the router interface plays. Optional value: `InitiatingSide`, `AcceptingSide`.
     * 
     */
    @Import(name="role", required=true)
    private Output role;

    /**
     * @return The role the router interface plays. Optional value: `InitiatingSide`, `AcceptingSide`.
     * 
     */
    public Output role() {
        return this.role;
    }

    /**
     * The Router ID.
     * 
     */
    @Import(name="routerId", required=true)
    private Output routerId;

    /**
     * @return The Router ID.
     * 
     */
    public Output routerId() {
        return this.routerId;
    }

    /**
     * Router Type. Optional value: VRouter, VBR. Accepting side router interface type only be VRouter.
     * 
     */
    @Import(name="routerType", required=true)
    private Output routerType;

    /**
     * @return Router Type. Optional value: VRouter, VBR. Accepting side router interface type only be VRouter.
     * 
     */
    public Output routerType() {
        return this.routerType;
    }

    /**
     * Specification of router interfaces. It is valid when `role` is `InitiatingSide`. Accepting side's role is default to set as 'Negative'. For more about the specification, refer to [Router interface specification](https://www.alibabacloud.com/help/doc-detail/36037.htm).
     * 
     */
    @Import(name="specification")
    private @Nullable Output specification;

    /**
     * @return Specification of router interfaces. It is valid when `role` is `InitiatingSide`. Accepting side's role is default to set as 'Negative'. For more about the specification, refer to [Router interface specification](https://www.alibabacloud.com/help/doc-detail/36037.htm).
     * 
     */
    public Optional> specification() {
        return Optional.ofNullable(this.specification);
    }

    private RouterInterfaceArgs() {}

    private RouterInterfaceArgs(RouterInterfaceArgs $) {
        this.description = $.description;
        this.healthCheckSourceIp = $.healthCheckSourceIp;
        this.healthCheckTargetIp = $.healthCheckTargetIp;
        this.instanceChargeType = $.instanceChargeType;
        this.name = $.name;
        this.oppositeAccessPointId = $.oppositeAccessPointId;
        this.oppositeRegion = $.oppositeRegion;
        this.period = $.period;
        this.role = $.role;
        this.routerId = $.routerId;
        this.routerType = $.routerType;
        this.specification = $.specification;
    }

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

    public static final class Builder {
        private RouterInterfaceArgs $;

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

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

        /**
         * @param description Description of the router interface. It can be 2-256 characters long or left blank. It cannot start with http:// and https://.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description Description of the router interface. It can be 2-256 characters long or left blank. It cannot start with http:// and https://.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param healthCheckSourceIp Used as the Packet Source IP of health check for disaster recovery or ECMP. It is only valid when `router_type` is `VBR`. The IP must be an unused IP in the local VPC. It and `health_check_target_ip` must be specified at the same time.
         * 
         * @return builder
         * 
         */
        public Builder healthCheckSourceIp(@Nullable Output healthCheckSourceIp) {
            $.healthCheckSourceIp = healthCheckSourceIp;
            return this;
        }

        /**
         * @param healthCheckSourceIp Used as the Packet Source IP of health check for disaster recovery or ECMP. It is only valid when `router_type` is `VBR`. The IP must be an unused IP in the local VPC. It and `health_check_target_ip` must be specified at the same time.
         * 
         * @return builder
         * 
         */
        public Builder healthCheckSourceIp(String healthCheckSourceIp) {
            return healthCheckSourceIp(Output.of(healthCheckSourceIp));
        }

        /**
         * @param healthCheckTargetIp Used as the Packet Target IP of health check for disaster recovery or ECMP. It is only valid when `router_type` is `VBR`. The IP must be an unused IP in the local VPC. It and `health_check_source_ip` must be specified at the same time.
         * 
         * @return builder
         * 
         */
        public Builder healthCheckTargetIp(@Nullable Output healthCheckTargetIp) {
            $.healthCheckTargetIp = healthCheckTargetIp;
            return this;
        }

        /**
         * @param healthCheckTargetIp Used as the Packet Target IP of health check for disaster recovery or ECMP. It is only valid when `router_type` is `VBR`. The IP must be an unused IP in the local VPC. It and `health_check_source_ip` must be specified at the same time.
         * 
         * @return builder
         * 
         */
        public Builder healthCheckTargetIp(String healthCheckTargetIp) {
            return healthCheckTargetIp(Output.of(healthCheckTargetIp));
        }

        /**
         * @param instanceChargeType The billing method of the router interface. Valid values are "PrePaid" and "PostPaid". Default to "PostPaid". Router Interface doesn't support "PrePaid" when region and opposite_region are the same.
         * 
         * @return builder
         * 
         */
        public Builder instanceChargeType(@Nullable Output instanceChargeType) {
            $.instanceChargeType = instanceChargeType;
            return this;
        }

        /**
         * @param instanceChargeType The billing method of the router interface. Valid values are "PrePaid" and "PostPaid". Default to "PostPaid". Router Interface doesn't support "PrePaid" when region and opposite_region are the same.
         * 
         * @return builder
         * 
         */
        public Builder instanceChargeType(String instanceChargeType) {
            return instanceChargeType(Output.of(instanceChargeType));
        }

        /**
         * @param name Name of the router interface. Length must be 2-80 characters long. Only Chinese characters, English letters, numbers, period (.), underline (_), or dash (-) are permitted.
         * If it is not specified, the default value is interface ID. The name cannot start with http:// and https://.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name Name of the router interface. Length must be 2-80 characters long. Only Chinese characters, English letters, numbers, period (.), underline (_), or dash (-) are permitted.
         * If it is not specified, the default value is interface ID. The name cannot start with http:// and https://.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param oppositeAccessPointId It has been deprecated from version 1.11.0.
         * 
         * @return builder
         * 
         * @deprecated
         * Attribute 'opposite_access_point_id' has been deprecated from version 1.11.0.
         * 
         */
        @Deprecated /* Attribute 'opposite_access_point_id' has been deprecated from version 1.11.0. */
        public Builder oppositeAccessPointId(@Nullable Output oppositeAccessPointId) {
            $.oppositeAccessPointId = oppositeAccessPointId;
            return this;
        }

        /**
         * @param oppositeAccessPointId It has been deprecated from version 1.11.0.
         * 
         * @return builder
         * 
         * @deprecated
         * Attribute 'opposite_access_point_id' has been deprecated from version 1.11.0.
         * 
         */
        @Deprecated /* Attribute 'opposite_access_point_id' has been deprecated from version 1.11.0. */
        public Builder oppositeAccessPointId(String oppositeAccessPointId) {
            return oppositeAccessPointId(Output.of(oppositeAccessPointId));
        }

        /**
         * @param oppositeRegion The Region of peer side.
         * 
         * @return builder
         * 
         */
        public Builder oppositeRegion(Output oppositeRegion) {
            $.oppositeRegion = oppositeRegion;
            return this;
        }

        /**
         * @param oppositeRegion The Region of peer side.
         * 
         * @return builder
         * 
         */
        public Builder oppositeRegion(String oppositeRegion) {
            return oppositeRegion(Output.of(oppositeRegion));
        }

        /**
         * @param period The duration that you will buy the resource, in month. It is valid when `instance_charge_type` is `PrePaid`. Valid values: [1-9, 12, 24, 36]. At present, the provider does not support modify "period" and you can do that via web console.
         * > **NOTE:** The attribute `period` is only used to create Subscription instance or modify the PayAsYouGo instance to Subscription. Once effect, it will not be modified that means running `pulumi up` will not effect the resource.
         * 
         * @return builder
         * 
         */
        public Builder period(@Nullable Output period) {
            $.period = period;
            return this;
        }

        /**
         * @param period The duration that you will buy the resource, in month. It is valid when `instance_charge_type` is `PrePaid`. Valid values: [1-9, 12, 24, 36]. At present, the provider does not support modify "period" and you can do that via web console.
         * > **NOTE:** The attribute `period` is only used to create Subscription instance or modify the PayAsYouGo instance to Subscription. Once effect, it will not be modified that means running `pulumi up` will not effect the resource.
         * 
         * @return builder
         * 
         */
        public Builder period(Integer period) {
            return period(Output.of(period));
        }

        /**
         * @param role The role the router interface plays. Optional value: `InitiatingSide`, `AcceptingSide`.
         * 
         * @return builder
         * 
         */
        public Builder role(Output role) {
            $.role = role;
            return this;
        }

        /**
         * @param role The role the router interface plays. Optional value: `InitiatingSide`, `AcceptingSide`.
         * 
         * @return builder
         * 
         */
        public Builder role(String role) {
            return role(Output.of(role));
        }

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

        /**
         * @param routerId The Router ID.
         * 
         * @return builder
         * 
         */
        public Builder routerId(String routerId) {
            return routerId(Output.of(routerId));
        }

        /**
         * @param routerType Router Type. Optional value: VRouter, VBR. Accepting side router interface type only be VRouter.
         * 
         * @return builder
         * 
         */
        public Builder routerType(Output routerType) {
            $.routerType = routerType;
            return this;
        }

        /**
         * @param routerType Router Type. Optional value: VRouter, VBR. Accepting side router interface type only be VRouter.
         * 
         * @return builder
         * 
         */
        public Builder routerType(String routerType) {
            return routerType(Output.of(routerType));
        }

        /**
         * @param specification Specification of router interfaces. It is valid when `role` is `InitiatingSide`. Accepting side's role is default to set as 'Negative'. For more about the specification, refer to [Router interface specification](https://www.alibabacloud.com/help/doc-detail/36037.htm).
         * 
         * @return builder
         * 
         */
        public Builder specification(@Nullable Output specification) {
            $.specification = specification;
            return this;
        }

        /**
         * @param specification Specification of router interfaces. It is valid when `role` is `InitiatingSide`. Accepting side's role is default to set as 'Negative'. For more about the specification, refer to [Router interface specification](https://www.alibabacloud.com/help/doc-detail/36037.htm).
         * 
         * @return builder
         * 
         */
        public Builder specification(String specification) {
            return specification(Output.of(specification));
        }

        public RouterInterfaceArgs build() {
            if ($.oppositeRegion == null) {
                throw new MissingRequiredPropertyException("RouterInterfaceArgs", "oppositeRegion");
            }
            if ($.role == null) {
                throw new MissingRequiredPropertyException("RouterInterfaceArgs", "role");
            }
            if ($.routerId == null) {
                throw new MissingRequiredPropertyException("RouterInterfaceArgs", "routerId");
            }
            if ($.routerType == null) {
                throw new MissingRequiredPropertyException("RouterInterfaceArgs", "routerType");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy