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

com.pulumi.azurenative.mobilenetwork.PacketCoreControlPlaneArgs Maven / Gradle / Ivy

There is a newer version: 2.82.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.pulumi.azurenative.mobilenetwork;

import com.pulumi.azurenative.mobilenetwork.enums.BillingSku;
import com.pulumi.azurenative.mobilenetwork.enums.CoreNetworkType;
import com.pulumi.azurenative.mobilenetwork.inputs.DiagnosticsUploadConfigurationArgs;
import com.pulumi.azurenative.mobilenetwork.inputs.InstallationArgs;
import com.pulumi.azurenative.mobilenetwork.inputs.InterfacePropertiesArgs;
import com.pulumi.azurenative.mobilenetwork.inputs.LocalDiagnosticsAccessConfigurationArgs;
import com.pulumi.azurenative.mobilenetwork.inputs.ManagedServiceIdentityArgs;
import com.pulumi.azurenative.mobilenetwork.inputs.PlatformConfigurationArgs;
import com.pulumi.azurenative.mobilenetwork.inputs.SiteResourceIdArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.core.internal.Codegen;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Integer;
import java.lang.Object;
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 PacketCoreControlPlaneArgs extends com.pulumi.resources.ResourceArgs {

    public static final PacketCoreControlPlaneArgs Empty = new PacketCoreControlPlaneArgs();

    /**
     * The control plane interface on the access network. For 5G networks, this is the N2 interface. For 4G networks, this is the S1-MME interface.
     * 
     */
    @Import(name="controlPlaneAccessInterface", required=true)
    private Output controlPlaneAccessInterface;

    /**
     * @return The control plane interface on the access network. For 5G networks, this is the N2 interface. For 4G networks, this is the S1-MME interface.
     * 
     */
    public Output controlPlaneAccessInterface() {
        return this.controlPlaneAccessInterface;
    }

    /**
     * The core network technology generation (5G core or EPC / 4G core).
     * 
     */
    @Import(name="coreNetworkTechnology")
    private @Nullable Output> coreNetworkTechnology;

    /**
     * @return The core network technology generation (5G core or EPC / 4G core).
     * 
     */
    public Optional>> coreNetworkTechnology() {
        return Optional.ofNullable(this.coreNetworkTechnology);
    }

    /**
     * Configuration for uploading packet core diagnostics
     * 
     */
    @Import(name="diagnosticsUpload")
    private @Nullable Output diagnosticsUpload;

    /**
     * @return Configuration for uploading packet core diagnostics
     * 
     */
    public Optional> diagnosticsUpload() {
        return Optional.ofNullable(this.diagnosticsUpload);
    }

    /**
     * The identity used to retrieve the ingress certificate from Azure key vault.
     * 
     */
    @Import(name="identity")
    private @Nullable Output identity;

    /**
     * @return The identity used to retrieve the ingress certificate from Azure key vault.
     * 
     */
    public Optional> identity() {
        return Optional.ofNullable(this.identity);
    }

    /**
     * The installation state of the packet core control plane resource.
     * 
     */
    @Import(name="installation")
    private @Nullable Output installation;

    /**
     * @return The installation state of the packet core control plane resource.
     * 
     */
    public Optional> installation() {
        return Optional.ofNullable(this.installation);
    }

    /**
     * Settings to allow interoperability with third party components e.g. RANs and UEs.
     * 
     */
    @Import(name="interopSettings")
    private @Nullable Output interopSettings;

    /**
     * @return Settings to allow interoperability with third party components e.g. RANs and UEs.
     * 
     */
    public Optional> interopSettings() {
        return Optional.ofNullable(this.interopSettings);
    }

    /**
     * The kubernetes ingress configuration to control access to packet core diagnostics over local APIs.
     * 
     */
    @Import(name="localDiagnosticsAccess", required=true)
    private Output localDiagnosticsAccess;

    /**
     * @return The kubernetes ingress configuration to control access to packet core diagnostics over local APIs.
     * 
     */
    public Output localDiagnosticsAccess() {
        return this.localDiagnosticsAccess;
    }

    /**
     * The geo-location where the resource lives
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return The geo-location where the resource lives
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * The name of the packet core control plane.
     * 
     */
    @Import(name="packetCoreControlPlaneName")
    private @Nullable Output packetCoreControlPlaneName;

    /**
     * @return The name of the packet core control plane.
     * 
     */
    public Optional> packetCoreControlPlaneName() {
        return Optional.ofNullable(this.packetCoreControlPlaneName);
    }

    /**
     * The platform where the packet core is deployed.
     * 
     */
    @Import(name="platform", required=true)
    private Output platform;

    /**
     * @return The platform where the packet core is deployed.
     * 
     */
    public Output platform() {
        return this.platform;
    }

    /**
     * The name of the resource group. The name is case insensitive.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the resource group. The name is case insensitive.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * Site(s) under which this packet core control plane should be deployed. The sites must be in the same location as the packet core control plane.
     * 
     */
    @Import(name="sites", required=true)
    private Output> sites;

    /**
     * @return Site(s) under which this packet core control plane should be deployed. The sites must be in the same location as the packet core control plane.
     * 
     */
    public Output> sites() {
        return this.sites;
    }

    /**
     * The SKU defining the throughput and SIM allowances for this packet core control plane deployment.
     * 
     */
    @Import(name="sku", required=true)
    private Output> sku;

    /**
     * @return The SKU defining the throughput and SIM allowances for this packet core control plane deployment.
     * 
     */
    public Output> sku() {
        return this.sku;
    }

    /**
     * Resource tags.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Resource tags.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * The MTU (in bytes) signaled to the UE. The same MTU is set on the user plane data links for all data networks. The MTU set on the user plane access link is calculated to be 60 bytes greater than this value to allow for GTP encapsulation.
     * 
     */
    @Import(name="ueMtu")
    private @Nullable Output ueMtu;

    /**
     * @return The MTU (in bytes) signaled to the UE. The same MTU is set on the user plane data links for all data networks. The MTU set on the user plane access link is calculated to be 60 bytes greater than this value to allow for GTP encapsulation.
     * 
     */
    public Optional> ueMtu() {
        return Optional.ofNullable(this.ueMtu);
    }

    /**
     * The desired version of the packet core software.
     * 
     */
    @Import(name="version")
    private @Nullable Output version;

    /**
     * @return The desired version of the packet core software.
     * 
     */
    public Optional> version() {
        return Optional.ofNullable(this.version);
    }

    private PacketCoreControlPlaneArgs() {}

    private PacketCoreControlPlaneArgs(PacketCoreControlPlaneArgs $) {
        this.controlPlaneAccessInterface = $.controlPlaneAccessInterface;
        this.coreNetworkTechnology = $.coreNetworkTechnology;
        this.diagnosticsUpload = $.diagnosticsUpload;
        this.identity = $.identity;
        this.installation = $.installation;
        this.interopSettings = $.interopSettings;
        this.localDiagnosticsAccess = $.localDiagnosticsAccess;
        this.location = $.location;
        this.packetCoreControlPlaneName = $.packetCoreControlPlaneName;
        this.platform = $.platform;
        this.resourceGroupName = $.resourceGroupName;
        this.sites = $.sites;
        this.sku = $.sku;
        this.tags = $.tags;
        this.ueMtu = $.ueMtu;
        this.version = $.version;
    }

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

    public static final class Builder {
        private PacketCoreControlPlaneArgs $;

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

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

        /**
         * @param controlPlaneAccessInterface The control plane interface on the access network. For 5G networks, this is the N2 interface. For 4G networks, this is the S1-MME interface.
         * 
         * @return builder
         * 
         */
        public Builder controlPlaneAccessInterface(Output controlPlaneAccessInterface) {
            $.controlPlaneAccessInterface = controlPlaneAccessInterface;
            return this;
        }

        /**
         * @param controlPlaneAccessInterface The control plane interface on the access network. For 5G networks, this is the N2 interface. For 4G networks, this is the S1-MME interface.
         * 
         * @return builder
         * 
         */
        public Builder controlPlaneAccessInterface(InterfacePropertiesArgs controlPlaneAccessInterface) {
            return controlPlaneAccessInterface(Output.of(controlPlaneAccessInterface));
        }

        /**
         * @param coreNetworkTechnology The core network technology generation (5G core or EPC / 4G core).
         * 
         * @return builder
         * 
         */
        public Builder coreNetworkTechnology(@Nullable Output> coreNetworkTechnology) {
            $.coreNetworkTechnology = coreNetworkTechnology;
            return this;
        }

        /**
         * @param coreNetworkTechnology The core network technology generation (5G core or EPC / 4G core).
         * 
         * @return builder
         * 
         */
        public Builder coreNetworkTechnology(Either coreNetworkTechnology) {
            return coreNetworkTechnology(Output.of(coreNetworkTechnology));
        }

        /**
         * @param coreNetworkTechnology The core network technology generation (5G core or EPC / 4G core).
         * 
         * @return builder
         * 
         */
        public Builder coreNetworkTechnology(String coreNetworkTechnology) {
            return coreNetworkTechnology(Either.ofLeft(coreNetworkTechnology));
        }

        /**
         * @param coreNetworkTechnology The core network technology generation (5G core or EPC / 4G core).
         * 
         * @return builder
         * 
         */
        public Builder coreNetworkTechnology(CoreNetworkType coreNetworkTechnology) {
            return coreNetworkTechnology(Either.ofRight(coreNetworkTechnology));
        }

        /**
         * @param diagnosticsUpload Configuration for uploading packet core diagnostics
         * 
         * @return builder
         * 
         */
        public Builder diagnosticsUpload(@Nullable Output diagnosticsUpload) {
            $.diagnosticsUpload = diagnosticsUpload;
            return this;
        }

        /**
         * @param diagnosticsUpload Configuration for uploading packet core diagnostics
         * 
         * @return builder
         * 
         */
        public Builder diagnosticsUpload(DiagnosticsUploadConfigurationArgs diagnosticsUpload) {
            return diagnosticsUpload(Output.of(diagnosticsUpload));
        }

        /**
         * @param identity The identity used to retrieve the ingress certificate from Azure key vault.
         * 
         * @return builder
         * 
         */
        public Builder identity(@Nullable Output identity) {
            $.identity = identity;
            return this;
        }

        /**
         * @param identity The identity used to retrieve the ingress certificate from Azure key vault.
         * 
         * @return builder
         * 
         */
        public Builder identity(ManagedServiceIdentityArgs identity) {
            return identity(Output.of(identity));
        }

        /**
         * @param installation The installation state of the packet core control plane resource.
         * 
         * @return builder
         * 
         */
        public Builder installation(@Nullable Output installation) {
            $.installation = installation;
            return this;
        }

        /**
         * @param installation The installation state of the packet core control plane resource.
         * 
         * @return builder
         * 
         */
        public Builder installation(InstallationArgs installation) {
            return installation(Output.of(installation));
        }

        /**
         * @param interopSettings Settings to allow interoperability with third party components e.g. RANs and UEs.
         * 
         * @return builder
         * 
         */
        public Builder interopSettings(@Nullable Output interopSettings) {
            $.interopSettings = interopSettings;
            return this;
        }

        /**
         * @param interopSettings Settings to allow interoperability with third party components e.g. RANs and UEs.
         * 
         * @return builder
         * 
         */
        public Builder interopSettings(Object interopSettings) {
            return interopSettings(Output.of(interopSettings));
        }

        /**
         * @param localDiagnosticsAccess The kubernetes ingress configuration to control access to packet core diagnostics over local APIs.
         * 
         * @return builder
         * 
         */
        public Builder localDiagnosticsAccess(Output localDiagnosticsAccess) {
            $.localDiagnosticsAccess = localDiagnosticsAccess;
            return this;
        }

        /**
         * @param localDiagnosticsAccess The kubernetes ingress configuration to control access to packet core diagnostics over local APIs.
         * 
         * @return builder
         * 
         */
        public Builder localDiagnosticsAccess(LocalDiagnosticsAccessConfigurationArgs localDiagnosticsAccess) {
            return localDiagnosticsAccess(Output.of(localDiagnosticsAccess));
        }

        /**
         * @param location The geo-location where the resource lives
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location The geo-location where the resource lives
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param packetCoreControlPlaneName The name of the packet core control plane.
         * 
         * @return builder
         * 
         */
        public Builder packetCoreControlPlaneName(@Nullable Output packetCoreControlPlaneName) {
            $.packetCoreControlPlaneName = packetCoreControlPlaneName;
            return this;
        }

        /**
         * @param packetCoreControlPlaneName The name of the packet core control plane.
         * 
         * @return builder
         * 
         */
        public Builder packetCoreControlPlaneName(String packetCoreControlPlaneName) {
            return packetCoreControlPlaneName(Output.of(packetCoreControlPlaneName));
        }

        /**
         * @param platform The platform where the packet core is deployed.
         * 
         * @return builder
         * 
         */
        public Builder platform(Output platform) {
            $.platform = platform;
            return this;
        }

        /**
         * @param platform The platform where the packet core is deployed.
         * 
         * @return builder
         * 
         */
        public Builder platform(PlatformConfigurationArgs platform) {
            return platform(Output.of(platform));
        }

        /**
         * @param resourceGroupName The name of the resource group. The name is case insensitive.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group. The name is case insensitive.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param sites Site(s) under which this packet core control plane should be deployed. The sites must be in the same location as the packet core control plane.
         * 
         * @return builder
         * 
         */
        public Builder sites(Output> sites) {
            $.sites = sites;
            return this;
        }

        /**
         * @param sites Site(s) under which this packet core control plane should be deployed. The sites must be in the same location as the packet core control plane.
         * 
         * @return builder
         * 
         */
        public Builder sites(List sites) {
            return sites(Output.of(sites));
        }

        /**
         * @param sites Site(s) under which this packet core control plane should be deployed. The sites must be in the same location as the packet core control plane.
         * 
         * @return builder
         * 
         */
        public Builder sites(SiteResourceIdArgs... sites) {
            return sites(List.of(sites));
        }

        /**
         * @param sku The SKU defining the throughput and SIM allowances for this packet core control plane deployment.
         * 
         * @return builder
         * 
         */
        public Builder sku(Output> sku) {
            $.sku = sku;
            return this;
        }

        /**
         * @param sku The SKU defining the throughput and SIM allowances for this packet core control plane deployment.
         * 
         * @return builder
         * 
         */
        public Builder sku(Either sku) {
            return sku(Output.of(sku));
        }

        /**
         * @param sku The SKU defining the throughput and SIM allowances for this packet core control plane deployment.
         * 
         * @return builder
         * 
         */
        public Builder sku(String sku) {
            return sku(Either.ofLeft(sku));
        }

        /**
         * @param sku The SKU defining the throughput and SIM allowances for this packet core control plane deployment.
         * 
         * @return builder
         * 
         */
        public Builder sku(BillingSku sku) {
            return sku(Either.ofRight(sku));
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param ueMtu The MTU (in bytes) signaled to the UE. The same MTU is set on the user plane data links for all data networks. The MTU set on the user plane access link is calculated to be 60 bytes greater than this value to allow for GTP encapsulation.
         * 
         * @return builder
         * 
         */
        public Builder ueMtu(@Nullable Output ueMtu) {
            $.ueMtu = ueMtu;
            return this;
        }

        /**
         * @param ueMtu The MTU (in bytes) signaled to the UE. The same MTU is set on the user plane data links for all data networks. The MTU set on the user plane access link is calculated to be 60 bytes greater than this value to allow for GTP encapsulation.
         * 
         * @return builder
         * 
         */
        public Builder ueMtu(Integer ueMtu) {
            return ueMtu(Output.of(ueMtu));
        }

        /**
         * @param version The desired version of the packet core software.
         * 
         * @return builder
         * 
         */
        public Builder version(@Nullable Output version) {
            $.version = version;
            return this;
        }

        /**
         * @param version The desired version of the packet core software.
         * 
         * @return builder
         * 
         */
        public Builder version(String version) {
            return version(Output.of(version));
        }

        public PacketCoreControlPlaneArgs build() {
            if ($.controlPlaneAccessInterface == null) {
                throw new MissingRequiredPropertyException("PacketCoreControlPlaneArgs", "controlPlaneAccessInterface");
            }
            if ($.localDiagnosticsAccess == null) {
                throw new MissingRequiredPropertyException("PacketCoreControlPlaneArgs", "localDiagnosticsAccess");
            }
            if ($.platform == null) {
                throw new MissingRequiredPropertyException("PacketCoreControlPlaneArgs", "platform");
            }
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("PacketCoreControlPlaneArgs", "resourceGroupName");
            }
            if ($.sites == null) {
                throw new MissingRequiredPropertyException("PacketCoreControlPlaneArgs", "sites");
            }
            if ($.sku == null) {
                throw new MissingRequiredPropertyException("PacketCoreControlPlaneArgs", "sku");
            }
            $.ueMtu = Codegen.integerProp("ueMtu").output().arg($.ueMtu).def(1440).getNullable();
            return $;
        }
    }

}