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

com.pulumi.alicloud.cen.RouteMapArgs 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.cen;

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.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final RouteMapArgs Empty = new RouteMapArgs();

    /**
     * A match statement. It indicates the mode in which the AS path attribute is matched. Valid values: ["Include", "Complete"].
     * 
     */
    @Import(name="asPathMatchMode")
    private @Nullable Output asPathMatchMode;

    /**
     * @return A match statement. It indicates the mode in which the AS path attribute is matched. Valid values: ["Include", "Complete"].
     * 
     */
    public Optional> asPathMatchMode() {
        return Optional.ofNullable(this.asPathMatchMode);
    }

    /**
     * The ID of the CEN instance.
     * 
     */
    @Import(name="cenId", required=true)
    private Output cenId;

    /**
     * @return The ID of the CEN instance.
     * 
     */
    public Output cenId() {
        return this.cenId;
    }

    /**
     * The ID of the region to which the CEN instance belongs.
     * 
     */
    @Import(name="cenRegionId", required=true)
    private Output cenRegionId;

    /**
     * @return The ID of the region to which the CEN instance belongs.
     * 
     */
    public Output cenRegionId() {
        return this.cenRegionId;
    }

    /**
     * A match statement. It indicates the mode in which the prefix attribute is matched. Valid values: ["Include", "Complete"].
     * 
     */
    @Import(name="cidrMatchMode")
    private @Nullable Output cidrMatchMode;

    /**
     * @return A match statement. It indicates the mode in which the prefix attribute is matched. Valid values: ["Include", "Complete"].
     * 
     */
    public Optional> cidrMatchMode() {
        return Optional.ofNullable(this.cidrMatchMode);
    }

    /**
     * A match statement. It indicates the mode in which the community attribute is matched. Valid values: ["Include", "Complete"].
     * 
     */
    @Import(name="communityMatchMode")
    private @Nullable Output communityMatchMode;

    /**
     * @return A match statement. It indicates the mode in which the community attribute is matched. Valid values: ["Include", "Complete"].
     * 
     */
    public Optional> communityMatchMode() {
        return Optional.ofNullable(this.communityMatchMode);
    }

    /**
     * An action statement. It indicates the mode in which the community attribute is operated. Valid values: ["Additive", "Replace"].
     * 
     */
    @Import(name="communityOperateMode")
    private @Nullable Output communityOperateMode;

    /**
     * @return An action statement. It indicates the mode in which the community attribute is operated. Valid values: ["Additive", "Replace"].
     * 
     */
    public Optional> communityOperateMode() {
        return Optional.ofNullable(this.communityOperateMode);
    }

    /**
     * The description of the route map.
     * 
     */
    @Import(name="description")
    private @Nullable Output description;

    /**
     * @return The description of the route map.
     * 
     */
    public Optional> description() {
        return Optional.ofNullable(this.description);
    }

    /**
     * A match statement that indicates the list of destination instance types. Valid values: ["VPC", "VBR", "CCN", "VPN"].
     * 
     */
    @Import(name="destinationChildInstanceTypes")
    private @Nullable Output> destinationChildInstanceTypes;

    /**
     * @return A match statement that indicates the list of destination instance types. Valid values: ["VPC", "VBR", "CCN", "VPN"].
     * 
     */
    public Optional>> destinationChildInstanceTypes() {
        return Optional.ofNullable(this.destinationChildInstanceTypes);
    }

    /**
     * A match statement that indicates the prefix list. The prefix is in the CIDR format. You can enter a maximum of 32 CIDR blocks.
     * 
     */
    @Import(name="destinationCidrBlocks")
    private @Nullable Output> destinationCidrBlocks;

    /**
     * @return A match statement that indicates the prefix list. The prefix is in the CIDR format. You can enter a maximum of 32 CIDR blocks.
     * 
     */
    public Optional>> destinationCidrBlocks() {
        return Optional.ofNullable(this.destinationCidrBlocks);
    }

    /**
     * A match statement that indicates the list of IDs of the destination instances.
     * 
     */
    @Import(name="destinationInstanceIds")
    private @Nullable Output> destinationInstanceIds;

    /**
     * @return A match statement that indicates the list of IDs of the destination instances.
     * 
     */
    public Optional>> destinationInstanceIds() {
        return Optional.ofNullable(this.destinationInstanceIds);
    }

    /**
     * Indicates whether to enable the reverse match method for the DestinationInstanceIds match condition. Valid values: ["false", "true"]. Default to "false".
     * 
     */
    @Import(name="destinationInstanceIdsReverseMatch")
    private @Nullable Output destinationInstanceIdsReverseMatch;

    /**
     * @return Indicates whether to enable the reverse match method for the DestinationInstanceIds match condition. Valid values: ["false", "true"]. Default to "false".
     * 
     */
    public Optional> destinationInstanceIdsReverseMatch() {
        return Optional.ofNullable(this.destinationInstanceIdsReverseMatch);
    }

    /**
     * A match statement that indicates the list of IDs of the destination route tables. You can enter a maximum of 32 route table IDs.
     * 
     */
    @Import(name="destinationRouteTableIds")
    private @Nullable Output> destinationRouteTableIds;

    /**
     * @return A match statement that indicates the list of IDs of the destination route tables. You can enter a maximum of 32 route table IDs.
     * 
     */
    public Optional>> destinationRouteTableIds() {
        return Optional.ofNullable(this.destinationRouteTableIds);
    }

    /**
     * The action that is performed to a route if the route matches all the match conditions. Valid values: ["Permit", "Deny"].
     * 
     */
    @Import(name="mapResult", required=true)
    private Output mapResult;

    /**
     * @return The action that is performed to a route if the route matches all the match conditions. Valid values: ["Permit", "Deny"].
     * 
     */
    public Output mapResult() {
        return this.mapResult;
    }

    /**
     * A match statement that indicates the AS path list. The AS path is a well-known mandatory attribute, which describes the numbers of the ASs that a BGP route passes through during transmission.
     * 
     */
    @Import(name="matchAsns")
    private @Nullable Output> matchAsns;

    /**
     * @return A match statement that indicates the AS path list. The AS path is a well-known mandatory attribute, which describes the numbers of the ASs that a BGP route passes through during transmission.
     * 
     */
    public Optional>> matchAsns() {
        return Optional.ofNullable(this.matchAsns);
    }

    /**
     * A match statement that indicates the community set. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
     * 
     */
    @Import(name="matchCommunitySets")
    private @Nullable Output> matchCommunitySets;

    /**
     * @return A match statement that indicates the community set. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
     * 
     */
    public Optional>> matchCommunitySets() {
        return Optional.ofNullable(this.matchCommunitySets);
    }

    /**
     * The priority of the next route map that is associated with the current route map. Value range: 1 to 100.
     * 
     */
    @Import(name="nextPriority")
    private @Nullable Output nextPriority;

    /**
     * @return The priority of the next route map that is associated with the current route map. Value range: 1 to 100.
     * 
     */
    public Optional> nextPriority() {
        return Optional.ofNullable(this.nextPriority);
    }

    /**
     * An action statement that operates the community attribute. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
     * 
     */
    @Import(name="operateCommunitySets")
    private @Nullable Output> operateCommunitySets;

    /**
     * @return An action statement that operates the community attribute. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
     * 
     */
    public Optional>> operateCommunitySets() {
        return Optional.ofNullable(this.operateCommunitySets);
    }

    /**
     * An action statement that modifies the priority of the route. Value range: 1 to 100. The default priority of a route is 50. A lower value indicates a higher preference.
     * 
     */
    @Import(name="preference")
    private @Nullable Output preference;

    /**
     * @return An action statement that modifies the priority of the route. Value range: 1 to 100. The default priority of a route is 50. A lower value indicates a higher preference.
     * 
     */
    public Optional> preference() {
        return Optional.ofNullable(this.preference);
    }

    /**
     * An action statement that indicates an AS path is prepended when the regional gateway receives or advertises a route.
     * 
     */
    @Import(name="prependAsPaths")
    private @Nullable Output> prependAsPaths;

    /**
     * @return An action statement that indicates an AS path is prepended when the regional gateway receives or advertises a route.
     * 
     */
    public Optional>> prependAsPaths() {
        return Optional.ofNullable(this.prependAsPaths);
    }

    /**
     * The priority of the route map. Value range: 1 to 100. A lower value indicates a higher priority.
     * 
     */
    @Import(name="priority", required=true)
    private Output priority;

    /**
     * @return The priority of the route map. Value range: 1 to 100. A lower value indicates a higher priority.
     * 
     */
    public Output priority() {
        return this.priority;
    }

    /**
     * A match statement that indicates the list of route types. Valid values: ["System", "Custom", "BGP"].
     * 
     */
    @Import(name="routeTypes")
    private @Nullable Output> routeTypes;

    /**
     * @return A match statement that indicates the list of route types. Valid values: ["System", "Custom", "BGP"].
     * 
     */
    public Optional>> routeTypes() {
        return Optional.ofNullable(this.routeTypes);
    }

    /**
     * A match statement that indicates the list of source instance types. Valid values: ["VPC", "VBR", "CCN"].
     * 
     */
    @Import(name="sourceChildInstanceTypes")
    private @Nullable Output> sourceChildInstanceTypes;

    /**
     * @return A match statement that indicates the list of source instance types. Valid values: ["VPC", "VBR", "CCN"].
     * 
     */
    public Optional>> sourceChildInstanceTypes() {
        return Optional.ofNullable(this.sourceChildInstanceTypes);
    }

    /**
     * A match statement that indicates the list of IDs of the source instances.
     * 
     */
    @Import(name="sourceInstanceIds")
    private @Nullable Output> sourceInstanceIds;

    /**
     * @return A match statement that indicates the list of IDs of the source instances.
     * 
     */
    public Optional>> sourceInstanceIds() {
        return Optional.ofNullable(this.sourceInstanceIds);
    }

    /**
     * Indicates whether to enable the reverse match method for the SourceInstanceIds match condition. Valid values: ["false", "true"]. Default to "false".
     * 
     */
    @Import(name="sourceInstanceIdsReverseMatch")
    private @Nullable Output sourceInstanceIdsReverseMatch;

    /**
     * @return Indicates whether to enable the reverse match method for the SourceInstanceIds match condition. Valid values: ["false", "true"]. Default to "false".
     * 
     */
    public Optional> sourceInstanceIdsReverseMatch() {
        return Optional.ofNullable(this.sourceInstanceIdsReverseMatch);
    }

    /**
     * A match statement that indicates the list of IDs of the source regions. You can enter a maximum of 32 region IDs.
     * 
     */
    @Import(name="sourceRegionIds")
    private @Nullable Output> sourceRegionIds;

    /**
     * @return A match statement that indicates the list of IDs of the source regions. You can enter a maximum of 32 region IDs.
     * 
     */
    public Optional>> sourceRegionIds() {
        return Optional.ofNullable(this.sourceRegionIds);
    }

    /**
     * A match statement that indicates the list of IDs of the source route tables. You can enter a maximum of 32 route table IDs.
     * 
     */
    @Import(name="sourceRouteTableIds")
    private @Nullable Output> sourceRouteTableIds;

    /**
     * @return A match statement that indicates the list of IDs of the source route tables. You can enter a maximum of 32 route table IDs.
     * 
     */
    public Optional>> sourceRouteTableIds() {
        return Optional.ofNullable(this.sourceRouteTableIds);
    }

    /**
     * The routing table ID of the forwarding router. If you do not enter the routing table ID, the routing policy is automatically associated with the default routing table of the forwarding router.
     * 
     */
    @Import(name="transitRouterRouteTableId")
    private @Nullable Output transitRouterRouteTableId;

    /**
     * @return The routing table ID of the forwarding router. If you do not enter the routing table ID, the routing policy is automatically associated with the default routing table of the forwarding router.
     * 
     */
    public Optional> transitRouterRouteTableId() {
        return Optional.ofNullable(this.transitRouterRouteTableId);
    }

    /**
     * The direction in which the route map is applied. Valid values: ["RegionIn", "RegionOut"].
     * 
     */
    @Import(name="transmitDirection", required=true)
    private Output transmitDirection;

    /**
     * @return The direction in which the route map is applied. Valid values: ["RegionIn", "RegionOut"].
     * 
     */
    public Output transmitDirection() {
        return this.transmitDirection;
    }

    private RouteMapArgs() {}

    private RouteMapArgs(RouteMapArgs $) {
        this.asPathMatchMode = $.asPathMatchMode;
        this.cenId = $.cenId;
        this.cenRegionId = $.cenRegionId;
        this.cidrMatchMode = $.cidrMatchMode;
        this.communityMatchMode = $.communityMatchMode;
        this.communityOperateMode = $.communityOperateMode;
        this.description = $.description;
        this.destinationChildInstanceTypes = $.destinationChildInstanceTypes;
        this.destinationCidrBlocks = $.destinationCidrBlocks;
        this.destinationInstanceIds = $.destinationInstanceIds;
        this.destinationInstanceIdsReverseMatch = $.destinationInstanceIdsReverseMatch;
        this.destinationRouteTableIds = $.destinationRouteTableIds;
        this.mapResult = $.mapResult;
        this.matchAsns = $.matchAsns;
        this.matchCommunitySets = $.matchCommunitySets;
        this.nextPriority = $.nextPriority;
        this.operateCommunitySets = $.operateCommunitySets;
        this.preference = $.preference;
        this.prependAsPaths = $.prependAsPaths;
        this.priority = $.priority;
        this.routeTypes = $.routeTypes;
        this.sourceChildInstanceTypes = $.sourceChildInstanceTypes;
        this.sourceInstanceIds = $.sourceInstanceIds;
        this.sourceInstanceIdsReverseMatch = $.sourceInstanceIdsReverseMatch;
        this.sourceRegionIds = $.sourceRegionIds;
        this.sourceRouteTableIds = $.sourceRouteTableIds;
        this.transitRouterRouteTableId = $.transitRouterRouteTableId;
        this.transmitDirection = $.transmitDirection;
    }

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

    public static final class Builder {
        private RouteMapArgs $;

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

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

        /**
         * @param asPathMatchMode A match statement. It indicates the mode in which the AS path attribute is matched. Valid values: ["Include", "Complete"].
         * 
         * @return builder
         * 
         */
        public Builder asPathMatchMode(@Nullable Output asPathMatchMode) {
            $.asPathMatchMode = asPathMatchMode;
            return this;
        }

        /**
         * @param asPathMatchMode A match statement. It indicates the mode in which the AS path attribute is matched. Valid values: ["Include", "Complete"].
         * 
         * @return builder
         * 
         */
        public Builder asPathMatchMode(String asPathMatchMode) {
            return asPathMatchMode(Output.of(asPathMatchMode));
        }

        /**
         * @param cenId The ID of the CEN instance.
         * 
         * @return builder
         * 
         */
        public Builder cenId(Output cenId) {
            $.cenId = cenId;
            return this;
        }

        /**
         * @param cenId The ID of the CEN instance.
         * 
         * @return builder
         * 
         */
        public Builder cenId(String cenId) {
            return cenId(Output.of(cenId));
        }

        /**
         * @param cenRegionId The ID of the region to which the CEN instance belongs.
         * 
         * @return builder
         * 
         */
        public Builder cenRegionId(Output cenRegionId) {
            $.cenRegionId = cenRegionId;
            return this;
        }

        /**
         * @param cenRegionId The ID of the region to which the CEN instance belongs.
         * 
         * @return builder
         * 
         */
        public Builder cenRegionId(String cenRegionId) {
            return cenRegionId(Output.of(cenRegionId));
        }

        /**
         * @param cidrMatchMode A match statement. It indicates the mode in which the prefix attribute is matched. Valid values: ["Include", "Complete"].
         * 
         * @return builder
         * 
         */
        public Builder cidrMatchMode(@Nullable Output cidrMatchMode) {
            $.cidrMatchMode = cidrMatchMode;
            return this;
        }

        /**
         * @param cidrMatchMode A match statement. It indicates the mode in which the prefix attribute is matched. Valid values: ["Include", "Complete"].
         * 
         * @return builder
         * 
         */
        public Builder cidrMatchMode(String cidrMatchMode) {
            return cidrMatchMode(Output.of(cidrMatchMode));
        }

        /**
         * @param communityMatchMode A match statement. It indicates the mode in which the community attribute is matched. Valid values: ["Include", "Complete"].
         * 
         * @return builder
         * 
         */
        public Builder communityMatchMode(@Nullable Output communityMatchMode) {
            $.communityMatchMode = communityMatchMode;
            return this;
        }

        /**
         * @param communityMatchMode A match statement. It indicates the mode in which the community attribute is matched. Valid values: ["Include", "Complete"].
         * 
         * @return builder
         * 
         */
        public Builder communityMatchMode(String communityMatchMode) {
            return communityMatchMode(Output.of(communityMatchMode));
        }

        /**
         * @param communityOperateMode An action statement. It indicates the mode in which the community attribute is operated. Valid values: ["Additive", "Replace"].
         * 
         * @return builder
         * 
         */
        public Builder communityOperateMode(@Nullable Output communityOperateMode) {
            $.communityOperateMode = communityOperateMode;
            return this;
        }

        /**
         * @param communityOperateMode An action statement. It indicates the mode in which the community attribute is operated. Valid values: ["Additive", "Replace"].
         * 
         * @return builder
         * 
         */
        public Builder communityOperateMode(String communityOperateMode) {
            return communityOperateMode(Output.of(communityOperateMode));
        }

        /**
         * @param description The description of the route map.
         * 
         * @return builder
         * 
         */
        public Builder description(@Nullable Output description) {
            $.description = description;
            return this;
        }

        /**
         * @param description The description of the route map.
         * 
         * @return builder
         * 
         */
        public Builder description(String description) {
            return description(Output.of(description));
        }

        /**
         * @param destinationChildInstanceTypes A match statement that indicates the list of destination instance types. Valid values: ["VPC", "VBR", "CCN", "VPN"].
         * 
         * @return builder
         * 
         */
        public Builder destinationChildInstanceTypes(@Nullable Output> destinationChildInstanceTypes) {
            $.destinationChildInstanceTypes = destinationChildInstanceTypes;
            return this;
        }

        /**
         * @param destinationChildInstanceTypes A match statement that indicates the list of destination instance types. Valid values: ["VPC", "VBR", "CCN", "VPN"].
         * 
         * @return builder
         * 
         */
        public Builder destinationChildInstanceTypes(List destinationChildInstanceTypes) {
            return destinationChildInstanceTypes(Output.of(destinationChildInstanceTypes));
        }

        /**
         * @param destinationChildInstanceTypes A match statement that indicates the list of destination instance types. Valid values: ["VPC", "VBR", "CCN", "VPN"].
         * 
         * @return builder
         * 
         */
        public Builder destinationChildInstanceTypes(String... destinationChildInstanceTypes) {
            return destinationChildInstanceTypes(List.of(destinationChildInstanceTypes));
        }

        /**
         * @param destinationCidrBlocks A match statement that indicates the prefix list. The prefix is in the CIDR format. You can enter a maximum of 32 CIDR blocks.
         * 
         * @return builder
         * 
         */
        public Builder destinationCidrBlocks(@Nullable Output> destinationCidrBlocks) {
            $.destinationCidrBlocks = destinationCidrBlocks;
            return this;
        }

        /**
         * @param destinationCidrBlocks A match statement that indicates the prefix list. The prefix is in the CIDR format. You can enter a maximum of 32 CIDR blocks.
         * 
         * @return builder
         * 
         */
        public Builder destinationCidrBlocks(List destinationCidrBlocks) {
            return destinationCidrBlocks(Output.of(destinationCidrBlocks));
        }

        /**
         * @param destinationCidrBlocks A match statement that indicates the prefix list. The prefix is in the CIDR format. You can enter a maximum of 32 CIDR blocks.
         * 
         * @return builder
         * 
         */
        public Builder destinationCidrBlocks(String... destinationCidrBlocks) {
            return destinationCidrBlocks(List.of(destinationCidrBlocks));
        }

        /**
         * @param destinationInstanceIds A match statement that indicates the list of IDs of the destination instances.
         * 
         * @return builder
         * 
         */
        public Builder destinationInstanceIds(@Nullable Output> destinationInstanceIds) {
            $.destinationInstanceIds = destinationInstanceIds;
            return this;
        }

        /**
         * @param destinationInstanceIds A match statement that indicates the list of IDs of the destination instances.
         * 
         * @return builder
         * 
         */
        public Builder destinationInstanceIds(List destinationInstanceIds) {
            return destinationInstanceIds(Output.of(destinationInstanceIds));
        }

        /**
         * @param destinationInstanceIds A match statement that indicates the list of IDs of the destination instances.
         * 
         * @return builder
         * 
         */
        public Builder destinationInstanceIds(String... destinationInstanceIds) {
            return destinationInstanceIds(List.of(destinationInstanceIds));
        }

        /**
         * @param destinationInstanceIdsReverseMatch Indicates whether to enable the reverse match method for the DestinationInstanceIds match condition. Valid values: ["false", "true"]. Default to "false".
         * 
         * @return builder
         * 
         */
        public Builder destinationInstanceIdsReverseMatch(@Nullable Output destinationInstanceIdsReverseMatch) {
            $.destinationInstanceIdsReverseMatch = destinationInstanceIdsReverseMatch;
            return this;
        }

        /**
         * @param destinationInstanceIdsReverseMatch Indicates whether to enable the reverse match method for the DestinationInstanceIds match condition. Valid values: ["false", "true"]. Default to "false".
         * 
         * @return builder
         * 
         */
        public Builder destinationInstanceIdsReverseMatch(Boolean destinationInstanceIdsReverseMatch) {
            return destinationInstanceIdsReverseMatch(Output.of(destinationInstanceIdsReverseMatch));
        }

        /**
         * @param destinationRouteTableIds A match statement that indicates the list of IDs of the destination route tables. You can enter a maximum of 32 route table IDs.
         * 
         * @return builder
         * 
         */
        public Builder destinationRouteTableIds(@Nullable Output> destinationRouteTableIds) {
            $.destinationRouteTableIds = destinationRouteTableIds;
            return this;
        }

        /**
         * @param destinationRouteTableIds A match statement that indicates the list of IDs of the destination route tables. You can enter a maximum of 32 route table IDs.
         * 
         * @return builder
         * 
         */
        public Builder destinationRouteTableIds(List destinationRouteTableIds) {
            return destinationRouteTableIds(Output.of(destinationRouteTableIds));
        }

        /**
         * @param destinationRouteTableIds A match statement that indicates the list of IDs of the destination route tables. You can enter a maximum of 32 route table IDs.
         * 
         * @return builder
         * 
         */
        public Builder destinationRouteTableIds(String... destinationRouteTableIds) {
            return destinationRouteTableIds(List.of(destinationRouteTableIds));
        }

        /**
         * @param mapResult The action that is performed to a route if the route matches all the match conditions. Valid values: ["Permit", "Deny"].
         * 
         * @return builder
         * 
         */
        public Builder mapResult(Output mapResult) {
            $.mapResult = mapResult;
            return this;
        }

        /**
         * @param mapResult The action that is performed to a route if the route matches all the match conditions. Valid values: ["Permit", "Deny"].
         * 
         * @return builder
         * 
         */
        public Builder mapResult(String mapResult) {
            return mapResult(Output.of(mapResult));
        }

        /**
         * @param matchAsns A match statement that indicates the AS path list. The AS path is a well-known mandatory attribute, which describes the numbers of the ASs that a BGP route passes through during transmission.
         * 
         * @return builder
         * 
         */
        public Builder matchAsns(@Nullable Output> matchAsns) {
            $.matchAsns = matchAsns;
            return this;
        }

        /**
         * @param matchAsns A match statement that indicates the AS path list. The AS path is a well-known mandatory attribute, which describes the numbers of the ASs that a BGP route passes through during transmission.
         * 
         * @return builder
         * 
         */
        public Builder matchAsns(List matchAsns) {
            return matchAsns(Output.of(matchAsns));
        }

        /**
         * @param matchAsns A match statement that indicates the AS path list. The AS path is a well-known mandatory attribute, which describes the numbers of the ASs that a BGP route passes through during transmission.
         * 
         * @return builder
         * 
         */
        public Builder matchAsns(String... matchAsns) {
            return matchAsns(List.of(matchAsns));
        }

        /**
         * @param matchCommunitySets A match statement that indicates the community set. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
         * 
         * @return builder
         * 
         */
        public Builder matchCommunitySets(@Nullable Output> matchCommunitySets) {
            $.matchCommunitySets = matchCommunitySets;
            return this;
        }

        /**
         * @param matchCommunitySets A match statement that indicates the community set. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
         * 
         * @return builder
         * 
         */
        public Builder matchCommunitySets(List matchCommunitySets) {
            return matchCommunitySets(Output.of(matchCommunitySets));
        }

        /**
         * @param matchCommunitySets A match statement that indicates the community set. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
         * 
         * @return builder
         * 
         */
        public Builder matchCommunitySets(String... matchCommunitySets) {
            return matchCommunitySets(List.of(matchCommunitySets));
        }

        /**
         * @param nextPriority The priority of the next route map that is associated with the current route map. Value range: 1 to 100.
         * 
         * @return builder
         * 
         */
        public Builder nextPriority(@Nullable Output nextPriority) {
            $.nextPriority = nextPriority;
            return this;
        }

        /**
         * @param nextPriority The priority of the next route map that is associated with the current route map. Value range: 1 to 100.
         * 
         * @return builder
         * 
         */
        public Builder nextPriority(Integer nextPriority) {
            return nextPriority(Output.of(nextPriority));
        }

        /**
         * @param operateCommunitySets An action statement that operates the community attribute. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
         * 
         * @return builder
         * 
         */
        public Builder operateCommunitySets(@Nullable Output> operateCommunitySets) {
            $.operateCommunitySets = operateCommunitySets;
            return this;
        }

        /**
         * @param operateCommunitySets An action statement that operates the community attribute. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
         * 
         * @return builder
         * 
         */
        public Builder operateCommunitySets(List operateCommunitySets) {
            return operateCommunitySets(Output.of(operateCommunitySets));
        }

        /**
         * @param operateCommunitySets An action statement that operates the community attribute. The format of each community is nn:nn, which ranges from 1 to 65535. You can enter a maximum of 32 communities. Communities must comply with RFC 1997. Large communities (RFC 8092) are not supported.
         * 
         * @return builder
         * 
         */
        public Builder operateCommunitySets(String... operateCommunitySets) {
            return operateCommunitySets(List.of(operateCommunitySets));
        }

        /**
         * @param preference An action statement that modifies the priority of the route. Value range: 1 to 100. The default priority of a route is 50. A lower value indicates a higher preference.
         * 
         * @return builder
         * 
         */
        public Builder preference(@Nullable Output preference) {
            $.preference = preference;
            return this;
        }

        /**
         * @param preference An action statement that modifies the priority of the route. Value range: 1 to 100. The default priority of a route is 50. A lower value indicates a higher preference.
         * 
         * @return builder
         * 
         */
        public Builder preference(Integer preference) {
            return preference(Output.of(preference));
        }

        /**
         * @param prependAsPaths An action statement that indicates an AS path is prepended when the regional gateway receives or advertises a route.
         * 
         * @return builder
         * 
         */
        public Builder prependAsPaths(@Nullable Output> prependAsPaths) {
            $.prependAsPaths = prependAsPaths;
            return this;
        }

        /**
         * @param prependAsPaths An action statement that indicates an AS path is prepended when the regional gateway receives or advertises a route.
         * 
         * @return builder
         * 
         */
        public Builder prependAsPaths(List prependAsPaths) {
            return prependAsPaths(Output.of(prependAsPaths));
        }

        /**
         * @param prependAsPaths An action statement that indicates an AS path is prepended when the regional gateway receives or advertises a route.
         * 
         * @return builder
         * 
         */
        public Builder prependAsPaths(String... prependAsPaths) {
            return prependAsPaths(List.of(prependAsPaths));
        }

        /**
         * @param priority The priority of the route map. Value range: 1 to 100. A lower value indicates a higher priority.
         * 
         * @return builder
         * 
         */
        public Builder priority(Output priority) {
            $.priority = priority;
            return this;
        }

        /**
         * @param priority The priority of the route map. Value range: 1 to 100. A lower value indicates a higher priority.
         * 
         * @return builder
         * 
         */
        public Builder priority(Integer priority) {
            return priority(Output.of(priority));
        }

        /**
         * @param routeTypes A match statement that indicates the list of route types. Valid values: ["System", "Custom", "BGP"].
         * 
         * @return builder
         * 
         */
        public Builder routeTypes(@Nullable Output> routeTypes) {
            $.routeTypes = routeTypes;
            return this;
        }

        /**
         * @param routeTypes A match statement that indicates the list of route types. Valid values: ["System", "Custom", "BGP"].
         * 
         * @return builder
         * 
         */
        public Builder routeTypes(List routeTypes) {
            return routeTypes(Output.of(routeTypes));
        }

        /**
         * @param routeTypes A match statement that indicates the list of route types. Valid values: ["System", "Custom", "BGP"].
         * 
         * @return builder
         * 
         */
        public Builder routeTypes(String... routeTypes) {
            return routeTypes(List.of(routeTypes));
        }

        /**
         * @param sourceChildInstanceTypes A match statement that indicates the list of source instance types. Valid values: ["VPC", "VBR", "CCN"].
         * 
         * @return builder
         * 
         */
        public Builder sourceChildInstanceTypes(@Nullable Output> sourceChildInstanceTypes) {
            $.sourceChildInstanceTypes = sourceChildInstanceTypes;
            return this;
        }

        /**
         * @param sourceChildInstanceTypes A match statement that indicates the list of source instance types. Valid values: ["VPC", "VBR", "CCN"].
         * 
         * @return builder
         * 
         */
        public Builder sourceChildInstanceTypes(List sourceChildInstanceTypes) {
            return sourceChildInstanceTypes(Output.of(sourceChildInstanceTypes));
        }

        /**
         * @param sourceChildInstanceTypes A match statement that indicates the list of source instance types. Valid values: ["VPC", "VBR", "CCN"].
         * 
         * @return builder
         * 
         */
        public Builder sourceChildInstanceTypes(String... sourceChildInstanceTypes) {
            return sourceChildInstanceTypes(List.of(sourceChildInstanceTypes));
        }

        /**
         * @param sourceInstanceIds A match statement that indicates the list of IDs of the source instances.
         * 
         * @return builder
         * 
         */
        public Builder sourceInstanceIds(@Nullable Output> sourceInstanceIds) {
            $.sourceInstanceIds = sourceInstanceIds;
            return this;
        }

        /**
         * @param sourceInstanceIds A match statement that indicates the list of IDs of the source instances.
         * 
         * @return builder
         * 
         */
        public Builder sourceInstanceIds(List sourceInstanceIds) {
            return sourceInstanceIds(Output.of(sourceInstanceIds));
        }

        /**
         * @param sourceInstanceIds A match statement that indicates the list of IDs of the source instances.
         * 
         * @return builder
         * 
         */
        public Builder sourceInstanceIds(String... sourceInstanceIds) {
            return sourceInstanceIds(List.of(sourceInstanceIds));
        }

        /**
         * @param sourceInstanceIdsReverseMatch Indicates whether to enable the reverse match method for the SourceInstanceIds match condition. Valid values: ["false", "true"]. Default to "false".
         * 
         * @return builder
         * 
         */
        public Builder sourceInstanceIdsReverseMatch(@Nullable Output sourceInstanceIdsReverseMatch) {
            $.sourceInstanceIdsReverseMatch = sourceInstanceIdsReverseMatch;
            return this;
        }

        /**
         * @param sourceInstanceIdsReverseMatch Indicates whether to enable the reverse match method for the SourceInstanceIds match condition. Valid values: ["false", "true"]. Default to "false".
         * 
         * @return builder
         * 
         */
        public Builder sourceInstanceIdsReverseMatch(Boolean sourceInstanceIdsReverseMatch) {
            return sourceInstanceIdsReverseMatch(Output.of(sourceInstanceIdsReverseMatch));
        }

        /**
         * @param sourceRegionIds A match statement that indicates the list of IDs of the source regions. You can enter a maximum of 32 region IDs.
         * 
         * @return builder
         * 
         */
        public Builder sourceRegionIds(@Nullable Output> sourceRegionIds) {
            $.sourceRegionIds = sourceRegionIds;
            return this;
        }

        /**
         * @param sourceRegionIds A match statement that indicates the list of IDs of the source regions. You can enter a maximum of 32 region IDs.
         * 
         * @return builder
         * 
         */
        public Builder sourceRegionIds(List sourceRegionIds) {
            return sourceRegionIds(Output.of(sourceRegionIds));
        }

        /**
         * @param sourceRegionIds A match statement that indicates the list of IDs of the source regions. You can enter a maximum of 32 region IDs.
         * 
         * @return builder
         * 
         */
        public Builder sourceRegionIds(String... sourceRegionIds) {
            return sourceRegionIds(List.of(sourceRegionIds));
        }

        /**
         * @param sourceRouteTableIds A match statement that indicates the list of IDs of the source route tables. You can enter a maximum of 32 route table IDs.
         * 
         * @return builder
         * 
         */
        public Builder sourceRouteTableIds(@Nullable Output> sourceRouteTableIds) {
            $.sourceRouteTableIds = sourceRouteTableIds;
            return this;
        }

        /**
         * @param sourceRouteTableIds A match statement that indicates the list of IDs of the source route tables. You can enter a maximum of 32 route table IDs.
         * 
         * @return builder
         * 
         */
        public Builder sourceRouteTableIds(List sourceRouteTableIds) {
            return sourceRouteTableIds(Output.of(sourceRouteTableIds));
        }

        /**
         * @param sourceRouteTableIds A match statement that indicates the list of IDs of the source route tables. You can enter a maximum of 32 route table IDs.
         * 
         * @return builder
         * 
         */
        public Builder sourceRouteTableIds(String... sourceRouteTableIds) {
            return sourceRouteTableIds(List.of(sourceRouteTableIds));
        }

        /**
         * @param transitRouterRouteTableId The routing table ID of the forwarding router. If you do not enter the routing table ID, the routing policy is automatically associated with the default routing table of the forwarding router.
         * 
         * @return builder
         * 
         */
        public Builder transitRouterRouteTableId(@Nullable Output transitRouterRouteTableId) {
            $.transitRouterRouteTableId = transitRouterRouteTableId;
            return this;
        }

        /**
         * @param transitRouterRouteTableId The routing table ID of the forwarding router. If you do not enter the routing table ID, the routing policy is automatically associated with the default routing table of the forwarding router.
         * 
         * @return builder
         * 
         */
        public Builder transitRouterRouteTableId(String transitRouterRouteTableId) {
            return transitRouterRouteTableId(Output.of(transitRouterRouteTableId));
        }

        /**
         * @param transmitDirection The direction in which the route map is applied. Valid values: ["RegionIn", "RegionOut"].
         * 
         * @return builder
         * 
         */
        public Builder transmitDirection(Output transmitDirection) {
            $.transmitDirection = transmitDirection;
            return this;
        }

        /**
         * @param transmitDirection The direction in which the route map is applied. Valid values: ["RegionIn", "RegionOut"].
         * 
         * @return builder
         * 
         */
        public Builder transmitDirection(String transmitDirection) {
            return transmitDirection(Output.of(transmitDirection));
        }

        public RouteMapArgs build() {
            if ($.cenId == null) {
                throw new MissingRequiredPropertyException("RouteMapArgs", "cenId");
            }
            if ($.cenRegionId == null) {
                throw new MissingRequiredPropertyException("RouteMapArgs", "cenRegionId");
            }
            if ($.mapResult == null) {
                throw new MissingRequiredPropertyException("RouteMapArgs", "mapResult");
            }
            if ($.priority == null) {
                throw new MissingRequiredPropertyException("RouteMapArgs", "priority");
            }
            if ($.transmitDirection == null) {
                throw new MissingRequiredPropertyException("RouteMapArgs", "transmitDirection");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy