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

com.pulumi.azurenative.servicefabric.ManagedClusterArgs Maven / Gradle / Ivy

There is a newer version: 2.78.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.servicefabric;

import com.pulumi.azurenative.servicefabric.enums.ClusterUpgradeCadence;
import com.pulumi.azurenative.servicefabric.enums.ClusterUpgradeMode;
import com.pulumi.azurenative.servicefabric.enums.ManagedClusterAddOnFeature;
import com.pulumi.azurenative.servicefabric.enums.ZonalUpdateMode;
import com.pulumi.azurenative.servicefabric.inputs.ApplicationTypeVersionsCleanupPolicyArgs;
import com.pulumi.azurenative.servicefabric.inputs.AzureActiveDirectoryArgs;
import com.pulumi.azurenative.servicefabric.inputs.ClientCertificateArgs;
import com.pulumi.azurenative.servicefabric.inputs.IPTagArgs;
import com.pulumi.azurenative.servicefabric.inputs.LoadBalancingRuleArgs;
import com.pulumi.azurenative.servicefabric.inputs.NetworkSecurityRuleArgs;
import com.pulumi.azurenative.servicefabric.inputs.ServiceEndpointArgs;
import com.pulumi.azurenative.servicefabric.inputs.SettingsSectionDescriptionArgs;
import com.pulumi.azurenative.servicefabric.inputs.SkuArgs;
import com.pulumi.azurenative.servicefabric.inputs.SubnetArgs;
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.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ManagedClusterArgs Empty = new ManagedClusterArgs();

    /**
     * List of add-on features to enable on the cluster.
     * 
     */
    @Import(name="addonFeatures")
    private @Nullable Output>> addonFeatures;

    /**
     * @return List of add-on features to enable on the cluster.
     * 
     */
    public Optional>>> addonFeatures() {
        return Optional.ofNullable(this.addonFeatures);
    }

    /**
     * VM admin user password.
     * 
     */
    @Import(name="adminPassword")
    private @Nullable Output adminPassword;

    /**
     * @return VM admin user password.
     * 
     */
    public Optional> adminPassword() {
        return Optional.ofNullable(this.adminPassword);
    }

    /**
     * VM admin user name.
     * 
     */
    @Import(name="adminUserName", required=true)
    private Output adminUserName;

    /**
     * @return VM admin user name.
     * 
     */
    public Output adminUserName() {
        return this.adminUserName;
    }

    /**
     * Setting this to true enables RDP access to the VM. The default NSG rule opens RDP port to Internet which can be overridden with custom Network Security Rules. The default value for this setting is false.
     * 
     */
    @Import(name="allowRdpAccess")
    private @Nullable Output allowRdpAccess;

    /**
     * @return Setting this to true enables RDP access to the VM. The default NSG rule opens RDP port to Internet which can be overridden with custom Network Security Rules. The default value for this setting is false.
     * 
     */
    public Optional> allowRdpAccess() {
        return Optional.ofNullable(this.allowRdpAccess);
    }

    /**
     * The policy used to clean up unused versions.
     * 
     */
    @Import(name="applicationTypeVersionsCleanupPolicy")
    private @Nullable Output applicationTypeVersionsCleanupPolicy;

    /**
     * @return The policy used to clean up unused versions.
     * 
     */
    public Optional> applicationTypeVersionsCleanupPolicy() {
        return Optional.ofNullable(this.applicationTypeVersionsCleanupPolicy);
    }

    /**
     * Auxiliary subnets for the cluster.
     * 
     */
    @Import(name="auxiliarySubnets")
    private @Nullable Output> auxiliarySubnets;

    /**
     * @return Auxiliary subnets for the cluster.
     * 
     */
    public Optional>> auxiliarySubnets() {
        return Optional.ofNullable(this.auxiliarySubnets);
    }

    /**
     * The AAD authentication settings of the cluster.
     * 
     */
    @Import(name="azureActiveDirectory")
    private @Nullable Output azureActiveDirectory;

    /**
     * @return The AAD authentication settings of the cluster.
     * 
     */
    public Optional> azureActiveDirectory() {
        return Optional.ofNullable(this.azureActiveDirectory);
    }

    /**
     * The port used for client connections to the cluster.
     * 
     */
    @Import(name="clientConnectionPort")
    private @Nullable Output clientConnectionPort;

    /**
     * @return The port used for client connections to the cluster.
     * 
     */
    public Optional> clientConnectionPort() {
        return Optional.ofNullable(this.clientConnectionPort);
    }

    /**
     * Client certificates that are allowed to manage the cluster.
     * 
     */
    @Import(name="clients")
    private @Nullable Output> clients;

    /**
     * @return Client certificates that are allowed to manage the cluster.
     * 
     */
    public Optional>> clients() {
        return Optional.ofNullable(this.clients);
    }

    /**
     * The Service Fabric runtime version of the cluster. This property is required when **clusterUpgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**.
     * 
     */
    @Import(name="clusterCodeVersion")
    private @Nullable Output clusterCodeVersion;

    /**
     * @return The Service Fabric runtime version of the cluster. This property is required when **clusterUpgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**.
     * 
     */
    public Optional> clusterCodeVersion() {
        return Optional.ofNullable(this.clusterCodeVersion);
    }

    /**
     * The name of the cluster resource.
     * 
     */
    @Import(name="clusterName")
    private @Nullable Output clusterName;

    /**
     * @return The name of the cluster resource.
     * 
     */
    public Optional> clusterName() {
        return Optional.ofNullable(this.clusterName);
    }

    /**
     * Indicates when new cluster runtime version upgrades will be applied after they are released. By default is Wave0. Only applies when **clusterUpgradeMode** is set to 'Automatic'.
     * 
     */
    @Import(name="clusterUpgradeCadence")
    private @Nullable Output> clusterUpgradeCadence;

    /**
     * @return Indicates when new cluster runtime version upgrades will be applied after they are released. By default is Wave0. Only applies when **clusterUpgradeMode** is set to 'Automatic'.
     * 
     */
    public Optional>> clusterUpgradeCadence() {
        return Optional.ofNullable(this.clusterUpgradeCadence);
    }

    /**
     * The upgrade mode of the cluster when new Service Fabric runtime version is available.
     * 
     */
    @Import(name="clusterUpgradeMode")
    private @Nullable Output> clusterUpgradeMode;

    /**
     * @return The upgrade mode of the cluster when new Service Fabric runtime version is available.
     * 
     */
    public Optional>> clusterUpgradeMode() {
        return Optional.ofNullable(this.clusterUpgradeMode);
    }

    /**
     * The cluster dns name.
     * 
     */
    @Import(name="dnsName", required=true)
    private Output dnsName;

    /**
     * @return The cluster dns name.
     * 
     */
    public Output dnsName() {
        return this.dnsName;
    }

    /**
     * Setting this to true enables automatic OS upgrade for the node types that are created using any platform OS image with version 'latest'. The default value for this setting is false.
     * 
     */
    @Import(name="enableAutoOSUpgrade")
    private @Nullable Output enableAutoOSUpgrade;

    /**
     * @return Setting this to true enables automatic OS upgrade for the node types that are created using any platform OS image with version 'latest'. The default value for this setting is false.
     * 
     */
    public Optional> enableAutoOSUpgrade() {
        return Optional.ofNullable(this.enableAutoOSUpgrade);
    }

    /**
     * Setting this to true creates IPv6 address space for the default VNet used by the cluster. This setting cannot be changed once the cluster is created. The default value for this setting is false.
     * 
     */
    @Import(name="enableIpv6")
    private @Nullable Output enableIpv6;

    /**
     * @return Setting this to true creates IPv6 address space for the default VNet used by the cluster. This setting cannot be changed once the cluster is created. The default value for this setting is false.
     * 
     */
    public Optional> enableIpv6() {
        return Optional.ofNullable(this.enableIpv6);
    }

    /**
     * Setting this to true will link the IPv4 address as the ServicePublicIP of the IPv6 address. It can only be set to True if IPv6 is enabled on the cluster.
     * 
     */
    @Import(name="enableServicePublicIP")
    private @Nullable Output enableServicePublicIP;

    /**
     * @return Setting this to true will link the IPv4 address as the ServicePublicIP of the IPv6 address. It can only be set to True if IPv6 is enabled on the cluster.
     * 
     */
    public Optional> enableServicePublicIP() {
        return Optional.ofNullable(this.enableServicePublicIP);
    }

    /**
     * The list of custom fabric settings to configure the cluster.
     * 
     */
    @Import(name="fabricSettings")
    private @Nullable Output> fabricSettings;

    /**
     * @return The list of custom fabric settings to configure the cluster.
     * 
     */
    public Optional>> fabricSettings() {
        return Optional.ofNullable(this.fabricSettings);
    }

    /**
     * The port used for HTTP connections to the cluster.
     * 
     */
    @Import(name="httpGatewayConnectionPort")
    private @Nullable Output httpGatewayConnectionPort;

    /**
     * @return The port used for HTTP connections to the cluster.
     * 
     */
    public Optional> httpGatewayConnectionPort() {
        return Optional.ofNullable(this.httpGatewayConnectionPort);
    }

    /**
     * The list of IP tags associated with the default public IP address of the cluster.
     * 
     */
    @Import(name="ipTags")
    private @Nullable Output> ipTags;

    /**
     * @return The list of IP tags associated with the default public IP address of the cluster.
     * 
     */
    public Optional>> ipTags() {
        return Optional.ofNullable(this.ipTags);
    }

    /**
     * Load balancing rules that are applied to the public load balancer of the cluster.
     * 
     */
    @Import(name="loadBalancingRules")
    private @Nullable Output> loadBalancingRules;

    /**
     * @return Load balancing rules that are applied to the public load balancer of the cluster.
     * 
     */
    public Optional>> loadBalancingRules() {
        return Optional.ofNullable(this.loadBalancingRules);
    }

    /**
     * Azure resource location.
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return Azure resource location.
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * Custom Network Security Rules that are applied to the Virtual Network of the cluster.
     * 
     */
    @Import(name="networkSecurityRules")
    private @Nullable Output> networkSecurityRules;

    /**
     * @return Custom Network Security Rules that are applied to the Virtual Network of the cluster.
     * 
     */
    public Optional>> networkSecurityRules() {
        return Optional.ofNullable(this.networkSecurityRules);
    }

    /**
     * Specify the resource id of a public IP prefix that the load balancer will allocate a public IP address from. Only supports IPv4.
     * 
     */
    @Import(name="publicIPPrefixId")
    private @Nullable Output publicIPPrefixId;

    /**
     * @return Specify the resource id of a public IP prefix that the load balancer will allocate a public IP address from. Only supports IPv4.
     * 
     */
    public Optional> publicIPPrefixId() {
        return Optional.ofNullable(this.publicIPPrefixId);
    }

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

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

    /**
     * Service endpoints for subnets in the cluster.
     * 
     */
    @Import(name="serviceEndpoints")
    private @Nullable Output> serviceEndpoints;

    /**
     * @return Service endpoints for subnets in the cluster.
     * 
     */
    public Optional>> serviceEndpoints() {
        return Optional.ofNullable(this.serviceEndpoints);
    }

    /**
     * The sku of the managed cluster
     * 
     */
    @Import(name="sku", required=true)
    private Output sku;

    /**
     * @return The sku of the managed cluster
     * 
     */
    public Output sku() {
        return this.sku;
    }

    /**
     * If specified, the node types for the cluster are created in this subnet instead of the default VNet. The **networkSecurityRules** specified for the cluster are also applied to this subnet. This setting cannot be changed once the cluster is created.
     * 
     */
    @Import(name="subnetId")
    private @Nullable Output subnetId;

    /**
     * @return If specified, the node types for the cluster are created in this subnet instead of the default VNet. The **networkSecurityRules** specified for the cluster are also applied to this subnet. This setting cannot be changed once the cluster is created.
     * 
     */
    public Optional> subnetId() {
        return Optional.ofNullable(this.subnetId);
    }

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

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

    /**
     * For new clusters, this parameter indicates that it uses Bring your own VNet, but the subnet is specified at node type level; and for such clusters, the subnetId property is required for node types.
     * 
     */
    @Import(name="useCustomVnet")
    private @Nullable Output useCustomVnet;

    /**
     * @return For new clusters, this parameter indicates that it uses Bring your own VNet, but the subnet is specified at node type level; and for such clusters, the subnetId property is required for node types.
     * 
     */
    public Optional> useCustomVnet() {
        return Optional.ofNullable(this.useCustomVnet);
    }

    /**
     * Indicates if the cluster has zone resiliency.
     * 
     */
    @Import(name="zonalResiliency")
    private @Nullable Output zonalResiliency;

    /**
     * @return Indicates if the cluster has zone resiliency.
     * 
     */
    public Optional> zonalResiliency() {
        return Optional.ofNullable(this.zonalResiliency);
    }

    /**
     * Indicates the update mode for Cross Az clusters.
     * 
     */
    @Import(name="zonalUpdateMode")
    private @Nullable Output> zonalUpdateMode;

    /**
     * @return Indicates the update mode for Cross Az clusters.
     * 
     */
    public Optional>> zonalUpdateMode() {
        return Optional.ofNullable(this.zonalUpdateMode);
    }

    private ManagedClusterArgs() {}

    private ManagedClusterArgs(ManagedClusterArgs $) {
        this.addonFeatures = $.addonFeatures;
        this.adminPassword = $.adminPassword;
        this.adminUserName = $.adminUserName;
        this.allowRdpAccess = $.allowRdpAccess;
        this.applicationTypeVersionsCleanupPolicy = $.applicationTypeVersionsCleanupPolicy;
        this.auxiliarySubnets = $.auxiliarySubnets;
        this.azureActiveDirectory = $.azureActiveDirectory;
        this.clientConnectionPort = $.clientConnectionPort;
        this.clients = $.clients;
        this.clusterCodeVersion = $.clusterCodeVersion;
        this.clusterName = $.clusterName;
        this.clusterUpgradeCadence = $.clusterUpgradeCadence;
        this.clusterUpgradeMode = $.clusterUpgradeMode;
        this.dnsName = $.dnsName;
        this.enableAutoOSUpgrade = $.enableAutoOSUpgrade;
        this.enableIpv6 = $.enableIpv6;
        this.enableServicePublicIP = $.enableServicePublicIP;
        this.fabricSettings = $.fabricSettings;
        this.httpGatewayConnectionPort = $.httpGatewayConnectionPort;
        this.ipTags = $.ipTags;
        this.loadBalancingRules = $.loadBalancingRules;
        this.location = $.location;
        this.networkSecurityRules = $.networkSecurityRules;
        this.publicIPPrefixId = $.publicIPPrefixId;
        this.resourceGroupName = $.resourceGroupName;
        this.serviceEndpoints = $.serviceEndpoints;
        this.sku = $.sku;
        this.subnetId = $.subnetId;
        this.tags = $.tags;
        this.useCustomVnet = $.useCustomVnet;
        this.zonalResiliency = $.zonalResiliency;
        this.zonalUpdateMode = $.zonalUpdateMode;
    }

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

    public static final class Builder {
        private ManagedClusterArgs $;

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

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

        /**
         * @param addonFeatures List of add-on features to enable on the cluster.
         * 
         * @return builder
         * 
         */
        public Builder addonFeatures(@Nullable Output>> addonFeatures) {
            $.addonFeatures = addonFeatures;
            return this;
        }

        /**
         * @param addonFeatures List of add-on features to enable on the cluster.
         * 
         * @return builder
         * 
         */
        public Builder addonFeatures(List> addonFeatures) {
            return addonFeatures(Output.of(addonFeatures));
        }

        /**
         * @param addonFeatures List of add-on features to enable on the cluster.
         * 
         * @return builder
         * 
         */
        public Builder addonFeatures(Either... addonFeatures) {
            return addonFeatures(List.of(addonFeatures));
        }

        /**
         * @param adminPassword VM admin user password.
         * 
         * @return builder
         * 
         */
        public Builder adminPassword(@Nullable Output adminPassword) {
            $.adminPassword = adminPassword;
            return this;
        }

        /**
         * @param adminPassword VM admin user password.
         * 
         * @return builder
         * 
         */
        public Builder adminPassword(String adminPassword) {
            return adminPassword(Output.of(adminPassword));
        }

        /**
         * @param adminUserName VM admin user name.
         * 
         * @return builder
         * 
         */
        public Builder adminUserName(Output adminUserName) {
            $.adminUserName = adminUserName;
            return this;
        }

        /**
         * @param adminUserName VM admin user name.
         * 
         * @return builder
         * 
         */
        public Builder adminUserName(String adminUserName) {
            return adminUserName(Output.of(adminUserName));
        }

        /**
         * @param allowRdpAccess Setting this to true enables RDP access to the VM. The default NSG rule opens RDP port to Internet which can be overridden with custom Network Security Rules. The default value for this setting is false.
         * 
         * @return builder
         * 
         */
        public Builder allowRdpAccess(@Nullable Output allowRdpAccess) {
            $.allowRdpAccess = allowRdpAccess;
            return this;
        }

        /**
         * @param allowRdpAccess Setting this to true enables RDP access to the VM. The default NSG rule opens RDP port to Internet which can be overridden with custom Network Security Rules. The default value for this setting is false.
         * 
         * @return builder
         * 
         */
        public Builder allowRdpAccess(Boolean allowRdpAccess) {
            return allowRdpAccess(Output.of(allowRdpAccess));
        }

        /**
         * @param applicationTypeVersionsCleanupPolicy The policy used to clean up unused versions.
         * 
         * @return builder
         * 
         */
        public Builder applicationTypeVersionsCleanupPolicy(@Nullable Output applicationTypeVersionsCleanupPolicy) {
            $.applicationTypeVersionsCleanupPolicy = applicationTypeVersionsCleanupPolicy;
            return this;
        }

        /**
         * @param applicationTypeVersionsCleanupPolicy The policy used to clean up unused versions.
         * 
         * @return builder
         * 
         */
        public Builder applicationTypeVersionsCleanupPolicy(ApplicationTypeVersionsCleanupPolicyArgs applicationTypeVersionsCleanupPolicy) {
            return applicationTypeVersionsCleanupPolicy(Output.of(applicationTypeVersionsCleanupPolicy));
        }

        /**
         * @param auxiliarySubnets Auxiliary subnets for the cluster.
         * 
         * @return builder
         * 
         */
        public Builder auxiliarySubnets(@Nullable Output> auxiliarySubnets) {
            $.auxiliarySubnets = auxiliarySubnets;
            return this;
        }

        /**
         * @param auxiliarySubnets Auxiliary subnets for the cluster.
         * 
         * @return builder
         * 
         */
        public Builder auxiliarySubnets(List auxiliarySubnets) {
            return auxiliarySubnets(Output.of(auxiliarySubnets));
        }

        /**
         * @param auxiliarySubnets Auxiliary subnets for the cluster.
         * 
         * @return builder
         * 
         */
        public Builder auxiliarySubnets(SubnetArgs... auxiliarySubnets) {
            return auxiliarySubnets(List.of(auxiliarySubnets));
        }

        /**
         * @param azureActiveDirectory The AAD authentication settings of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder azureActiveDirectory(@Nullable Output azureActiveDirectory) {
            $.azureActiveDirectory = azureActiveDirectory;
            return this;
        }

        /**
         * @param azureActiveDirectory The AAD authentication settings of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder azureActiveDirectory(AzureActiveDirectoryArgs azureActiveDirectory) {
            return azureActiveDirectory(Output.of(azureActiveDirectory));
        }

        /**
         * @param clientConnectionPort The port used for client connections to the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clientConnectionPort(@Nullable Output clientConnectionPort) {
            $.clientConnectionPort = clientConnectionPort;
            return this;
        }

        /**
         * @param clientConnectionPort The port used for client connections to the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clientConnectionPort(Integer clientConnectionPort) {
            return clientConnectionPort(Output.of(clientConnectionPort));
        }

        /**
         * @param clients Client certificates that are allowed to manage the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clients(@Nullable Output> clients) {
            $.clients = clients;
            return this;
        }

        /**
         * @param clients Client certificates that are allowed to manage the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clients(List clients) {
            return clients(Output.of(clients));
        }

        /**
         * @param clients Client certificates that are allowed to manage the cluster.
         * 
         * @return builder
         * 
         */
        public Builder clients(ClientCertificateArgs... clients) {
            return clients(List.of(clients));
        }

        /**
         * @param clusterCodeVersion The Service Fabric runtime version of the cluster. This property is required when **clusterUpgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**.
         * 
         * @return builder
         * 
         */
        public Builder clusterCodeVersion(@Nullable Output clusterCodeVersion) {
            $.clusterCodeVersion = clusterCodeVersion;
            return this;
        }

        /**
         * @param clusterCodeVersion The Service Fabric runtime version of the cluster. This property is required when **clusterUpgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**.
         * 
         * @return builder
         * 
         */
        public Builder clusterCodeVersion(String clusterCodeVersion) {
            return clusterCodeVersion(Output.of(clusterCodeVersion));
        }

        /**
         * @param clusterName The name of the cluster resource.
         * 
         * @return builder
         * 
         */
        public Builder clusterName(@Nullable Output clusterName) {
            $.clusterName = clusterName;
            return this;
        }

        /**
         * @param clusterName The name of the cluster resource.
         * 
         * @return builder
         * 
         */
        public Builder clusterName(String clusterName) {
            return clusterName(Output.of(clusterName));
        }

        /**
         * @param clusterUpgradeCadence Indicates when new cluster runtime version upgrades will be applied after they are released. By default is Wave0. Only applies when **clusterUpgradeMode** is set to 'Automatic'.
         * 
         * @return builder
         * 
         */
        public Builder clusterUpgradeCadence(@Nullable Output> clusterUpgradeCadence) {
            $.clusterUpgradeCadence = clusterUpgradeCadence;
            return this;
        }

        /**
         * @param clusterUpgradeCadence Indicates when new cluster runtime version upgrades will be applied after they are released. By default is Wave0. Only applies when **clusterUpgradeMode** is set to 'Automatic'.
         * 
         * @return builder
         * 
         */
        public Builder clusterUpgradeCadence(Either clusterUpgradeCadence) {
            return clusterUpgradeCadence(Output.of(clusterUpgradeCadence));
        }

        /**
         * @param clusterUpgradeCadence Indicates when new cluster runtime version upgrades will be applied after they are released. By default is Wave0. Only applies when **clusterUpgradeMode** is set to 'Automatic'.
         * 
         * @return builder
         * 
         */
        public Builder clusterUpgradeCadence(String clusterUpgradeCadence) {
            return clusterUpgradeCadence(Either.ofLeft(clusterUpgradeCadence));
        }

        /**
         * @param clusterUpgradeCadence Indicates when new cluster runtime version upgrades will be applied after they are released. By default is Wave0. Only applies when **clusterUpgradeMode** is set to 'Automatic'.
         * 
         * @return builder
         * 
         */
        public Builder clusterUpgradeCadence(ClusterUpgradeCadence clusterUpgradeCadence) {
            return clusterUpgradeCadence(Either.ofRight(clusterUpgradeCadence));
        }

        /**
         * @param clusterUpgradeMode The upgrade mode of the cluster when new Service Fabric runtime version is available.
         * 
         * @return builder
         * 
         */
        public Builder clusterUpgradeMode(@Nullable Output> clusterUpgradeMode) {
            $.clusterUpgradeMode = clusterUpgradeMode;
            return this;
        }

        /**
         * @param clusterUpgradeMode The upgrade mode of the cluster when new Service Fabric runtime version is available.
         * 
         * @return builder
         * 
         */
        public Builder clusterUpgradeMode(Either clusterUpgradeMode) {
            return clusterUpgradeMode(Output.of(clusterUpgradeMode));
        }

        /**
         * @param clusterUpgradeMode The upgrade mode of the cluster when new Service Fabric runtime version is available.
         * 
         * @return builder
         * 
         */
        public Builder clusterUpgradeMode(String clusterUpgradeMode) {
            return clusterUpgradeMode(Either.ofLeft(clusterUpgradeMode));
        }

        /**
         * @param clusterUpgradeMode The upgrade mode of the cluster when new Service Fabric runtime version is available.
         * 
         * @return builder
         * 
         */
        public Builder clusterUpgradeMode(ClusterUpgradeMode clusterUpgradeMode) {
            return clusterUpgradeMode(Either.ofRight(clusterUpgradeMode));
        }

        /**
         * @param dnsName The cluster dns name.
         * 
         * @return builder
         * 
         */
        public Builder dnsName(Output dnsName) {
            $.dnsName = dnsName;
            return this;
        }

        /**
         * @param dnsName The cluster dns name.
         * 
         * @return builder
         * 
         */
        public Builder dnsName(String dnsName) {
            return dnsName(Output.of(dnsName));
        }

        /**
         * @param enableAutoOSUpgrade Setting this to true enables automatic OS upgrade for the node types that are created using any platform OS image with version 'latest'. The default value for this setting is false.
         * 
         * @return builder
         * 
         */
        public Builder enableAutoOSUpgrade(@Nullable Output enableAutoOSUpgrade) {
            $.enableAutoOSUpgrade = enableAutoOSUpgrade;
            return this;
        }

        /**
         * @param enableAutoOSUpgrade Setting this to true enables automatic OS upgrade for the node types that are created using any platform OS image with version 'latest'. The default value for this setting is false.
         * 
         * @return builder
         * 
         */
        public Builder enableAutoOSUpgrade(Boolean enableAutoOSUpgrade) {
            return enableAutoOSUpgrade(Output.of(enableAutoOSUpgrade));
        }

        /**
         * @param enableIpv6 Setting this to true creates IPv6 address space for the default VNet used by the cluster. This setting cannot be changed once the cluster is created. The default value for this setting is false.
         * 
         * @return builder
         * 
         */
        public Builder enableIpv6(@Nullable Output enableIpv6) {
            $.enableIpv6 = enableIpv6;
            return this;
        }

        /**
         * @param enableIpv6 Setting this to true creates IPv6 address space for the default VNet used by the cluster. This setting cannot be changed once the cluster is created. The default value for this setting is false.
         * 
         * @return builder
         * 
         */
        public Builder enableIpv6(Boolean enableIpv6) {
            return enableIpv6(Output.of(enableIpv6));
        }

        /**
         * @param enableServicePublicIP Setting this to true will link the IPv4 address as the ServicePublicIP of the IPv6 address. It can only be set to True if IPv6 is enabled on the cluster.
         * 
         * @return builder
         * 
         */
        public Builder enableServicePublicIP(@Nullable Output enableServicePublicIP) {
            $.enableServicePublicIP = enableServicePublicIP;
            return this;
        }

        /**
         * @param enableServicePublicIP Setting this to true will link the IPv4 address as the ServicePublicIP of the IPv6 address. It can only be set to True if IPv6 is enabled on the cluster.
         * 
         * @return builder
         * 
         */
        public Builder enableServicePublicIP(Boolean enableServicePublicIP) {
            return enableServicePublicIP(Output.of(enableServicePublicIP));
        }

        /**
         * @param fabricSettings The list of custom fabric settings to configure the cluster.
         * 
         * @return builder
         * 
         */
        public Builder fabricSettings(@Nullable Output> fabricSettings) {
            $.fabricSettings = fabricSettings;
            return this;
        }

        /**
         * @param fabricSettings The list of custom fabric settings to configure the cluster.
         * 
         * @return builder
         * 
         */
        public Builder fabricSettings(List fabricSettings) {
            return fabricSettings(Output.of(fabricSettings));
        }

        /**
         * @param fabricSettings The list of custom fabric settings to configure the cluster.
         * 
         * @return builder
         * 
         */
        public Builder fabricSettings(SettingsSectionDescriptionArgs... fabricSettings) {
            return fabricSettings(List.of(fabricSettings));
        }

        /**
         * @param httpGatewayConnectionPort The port used for HTTP connections to the cluster.
         * 
         * @return builder
         * 
         */
        public Builder httpGatewayConnectionPort(@Nullable Output httpGatewayConnectionPort) {
            $.httpGatewayConnectionPort = httpGatewayConnectionPort;
            return this;
        }

        /**
         * @param httpGatewayConnectionPort The port used for HTTP connections to the cluster.
         * 
         * @return builder
         * 
         */
        public Builder httpGatewayConnectionPort(Integer httpGatewayConnectionPort) {
            return httpGatewayConnectionPort(Output.of(httpGatewayConnectionPort));
        }

        /**
         * @param ipTags The list of IP tags associated with the default public IP address of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder ipTags(@Nullable Output> ipTags) {
            $.ipTags = ipTags;
            return this;
        }

        /**
         * @param ipTags The list of IP tags associated with the default public IP address of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder ipTags(List ipTags) {
            return ipTags(Output.of(ipTags));
        }

        /**
         * @param ipTags The list of IP tags associated with the default public IP address of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder ipTags(IPTagArgs... ipTags) {
            return ipTags(List.of(ipTags));
        }

        /**
         * @param loadBalancingRules Load balancing rules that are applied to the public load balancer of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder loadBalancingRules(@Nullable Output> loadBalancingRules) {
            $.loadBalancingRules = loadBalancingRules;
            return this;
        }

        /**
         * @param loadBalancingRules Load balancing rules that are applied to the public load balancer of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder loadBalancingRules(List loadBalancingRules) {
            return loadBalancingRules(Output.of(loadBalancingRules));
        }

        /**
         * @param loadBalancingRules Load balancing rules that are applied to the public load balancer of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder loadBalancingRules(LoadBalancingRuleArgs... loadBalancingRules) {
            return loadBalancingRules(List.of(loadBalancingRules));
        }

        /**
         * @param location Azure resource location.
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location Azure resource location.
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param networkSecurityRules Custom Network Security Rules that are applied to the Virtual Network of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder networkSecurityRules(@Nullable Output> networkSecurityRules) {
            $.networkSecurityRules = networkSecurityRules;
            return this;
        }

        /**
         * @param networkSecurityRules Custom Network Security Rules that are applied to the Virtual Network of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder networkSecurityRules(List networkSecurityRules) {
            return networkSecurityRules(Output.of(networkSecurityRules));
        }

        /**
         * @param networkSecurityRules Custom Network Security Rules that are applied to the Virtual Network of the cluster.
         * 
         * @return builder
         * 
         */
        public Builder networkSecurityRules(NetworkSecurityRuleArgs... networkSecurityRules) {
            return networkSecurityRules(List.of(networkSecurityRules));
        }

        /**
         * @param publicIPPrefixId Specify the resource id of a public IP prefix that the load balancer will allocate a public IP address from. Only supports IPv4.
         * 
         * @return builder
         * 
         */
        public Builder publicIPPrefixId(@Nullable Output publicIPPrefixId) {
            $.publicIPPrefixId = publicIPPrefixId;
            return this;
        }

        /**
         * @param publicIPPrefixId Specify the resource id of a public IP prefix that the load balancer will allocate a public IP address from. Only supports IPv4.
         * 
         * @return builder
         * 
         */
        public Builder publicIPPrefixId(String publicIPPrefixId) {
            return publicIPPrefixId(Output.of(publicIPPrefixId));
        }

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

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

        /**
         * @param serviceEndpoints Service endpoints for subnets in the cluster.
         * 
         * @return builder
         * 
         */
        public Builder serviceEndpoints(@Nullable Output> serviceEndpoints) {
            $.serviceEndpoints = serviceEndpoints;
            return this;
        }

        /**
         * @param serviceEndpoints Service endpoints for subnets in the cluster.
         * 
         * @return builder
         * 
         */
        public Builder serviceEndpoints(List serviceEndpoints) {
            return serviceEndpoints(Output.of(serviceEndpoints));
        }

        /**
         * @param serviceEndpoints Service endpoints for subnets in the cluster.
         * 
         * @return builder
         * 
         */
        public Builder serviceEndpoints(ServiceEndpointArgs... serviceEndpoints) {
            return serviceEndpoints(List.of(serviceEndpoints));
        }

        /**
         * @param sku The sku of the managed cluster
         * 
         * @return builder
         * 
         */
        public Builder sku(Output sku) {
            $.sku = sku;
            return this;
        }

        /**
         * @param sku The sku of the managed cluster
         * 
         * @return builder
         * 
         */
        public Builder sku(SkuArgs sku) {
            return sku(Output.of(sku));
        }

        /**
         * @param subnetId If specified, the node types for the cluster are created in this subnet instead of the default VNet. The **networkSecurityRules** specified for the cluster are also applied to this subnet. This setting cannot be changed once the cluster is created.
         * 
         * @return builder
         * 
         */
        public Builder subnetId(@Nullable Output subnetId) {
            $.subnetId = subnetId;
            return this;
        }

        /**
         * @param subnetId If specified, the node types for the cluster are created in this subnet instead of the default VNet. The **networkSecurityRules** specified for the cluster are also applied to this subnet. This setting cannot be changed once the cluster is created.
         * 
         * @return builder
         * 
         */
        public Builder subnetId(String subnetId) {
            return subnetId(Output.of(subnetId));
        }

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

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

        /**
         * @param useCustomVnet For new clusters, this parameter indicates that it uses Bring your own VNet, but the subnet is specified at node type level; and for such clusters, the subnetId property is required for node types.
         * 
         * @return builder
         * 
         */
        public Builder useCustomVnet(@Nullable Output useCustomVnet) {
            $.useCustomVnet = useCustomVnet;
            return this;
        }

        /**
         * @param useCustomVnet For new clusters, this parameter indicates that it uses Bring your own VNet, but the subnet is specified at node type level; and for such clusters, the subnetId property is required for node types.
         * 
         * @return builder
         * 
         */
        public Builder useCustomVnet(Boolean useCustomVnet) {
            return useCustomVnet(Output.of(useCustomVnet));
        }

        /**
         * @param zonalResiliency Indicates if the cluster has zone resiliency.
         * 
         * @return builder
         * 
         */
        public Builder zonalResiliency(@Nullable Output zonalResiliency) {
            $.zonalResiliency = zonalResiliency;
            return this;
        }

        /**
         * @param zonalResiliency Indicates if the cluster has zone resiliency.
         * 
         * @return builder
         * 
         */
        public Builder zonalResiliency(Boolean zonalResiliency) {
            return zonalResiliency(Output.of(zonalResiliency));
        }

        /**
         * @param zonalUpdateMode Indicates the update mode for Cross Az clusters.
         * 
         * @return builder
         * 
         */
        public Builder zonalUpdateMode(@Nullable Output> zonalUpdateMode) {
            $.zonalUpdateMode = zonalUpdateMode;
            return this;
        }

        /**
         * @param zonalUpdateMode Indicates the update mode for Cross Az clusters.
         * 
         * @return builder
         * 
         */
        public Builder zonalUpdateMode(Either zonalUpdateMode) {
            return zonalUpdateMode(Output.of(zonalUpdateMode));
        }

        /**
         * @param zonalUpdateMode Indicates the update mode for Cross Az clusters.
         * 
         * @return builder
         * 
         */
        public Builder zonalUpdateMode(String zonalUpdateMode) {
            return zonalUpdateMode(Either.ofLeft(zonalUpdateMode));
        }

        /**
         * @param zonalUpdateMode Indicates the update mode for Cross Az clusters.
         * 
         * @return builder
         * 
         */
        public Builder zonalUpdateMode(ZonalUpdateMode zonalUpdateMode) {
            return zonalUpdateMode(Either.ofRight(zonalUpdateMode));
        }

        public ManagedClusterArgs build() {
            if ($.adminUserName == null) {
                throw new MissingRequiredPropertyException("ManagedClusterArgs", "adminUserName");
            }
            $.clientConnectionPort = Codegen.integerProp("clientConnectionPort").output().arg($.clientConnectionPort).def(19000).getNullable();
            if ($.dnsName == null) {
                throw new MissingRequiredPropertyException("ManagedClusterArgs", "dnsName");
            }
            $.httpGatewayConnectionPort = Codegen.integerProp("httpGatewayConnectionPort").output().arg($.httpGatewayConnectionPort).def(19080).getNullable();
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("ManagedClusterArgs", "resourceGroupName");
            }
            if ($.sku == null) {
                throw new MissingRequiredPropertyException("ManagedClusterArgs", "sku");
            }
            $.zonalResiliency = Codegen.booleanProp("zonalResiliency").output().arg($.zonalResiliency).def(false).getNullable();
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy