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

com.azure.resourcemanager.servicefabricmanagedclusters.fluent.models.ManagedClusterInner Maven / Gradle / Ivy

Go to download

This package contains Microsoft Azure SDK for Service Fabric Managed Clusters Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt. Service Fabric Managed Clusters Management Client. Package tag package-2024-04.

There is a newer version: 1.0.0
Show newest version
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.servicefabricmanagedclusters.fluent.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.management.Resource;
import com.azure.core.management.SystemData;
import com.azure.core.util.logging.ClientLogger;
import com.azure.json.JsonReader;
import com.azure.json.JsonToken;
import com.azure.json.JsonWriter;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ApplicationTypeVersionsCleanupPolicy;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.AzureActiveDirectory;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ClientCertificate;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ClusterState;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ClusterUpgradeCadence;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ClusterUpgradeMode;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ClusterUpgradePolicy;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.IpTag;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.LoadBalancingRule;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ManagedClusterAddOnFeature;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ManagedResourceProvisioningState;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.NetworkSecurityRule;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ServiceEndpoint;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.SettingsSectionDescription;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.Sku;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.Subnet;
import com.azure.resourcemanager.servicefabricmanagedclusters.models.ZonalUpdateMode;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * The managed cluster resource.
 */
@Fluent
public final class ManagedClusterInner extends Resource {
    /*
     * The managed cluster resource properties
     */
    private ManagedClusterProperties innerProperties;

    /*
     * The sku of the managed cluster
     */
    private Sku sku;

    /*
     * Azure resource etag.
     */
    private String etag;

    /*
     * Metadata pertaining to creation and last modification of the resource.
     */
    private SystemData systemData;

    /*
     * Fully qualified resource Id for the resource.
     */
    private String id;

    /*
     * The name of the resource.
     */
    private String name;

    /*
     * The type of the resource.
     */
    private String type;

    /**
     * Creates an instance of ManagedClusterInner class.
     */
    public ManagedClusterInner() {
    }

    /**
     * Get the innerProperties property: The managed cluster resource properties.
     * 
     * @return the innerProperties value.
     */
    private ManagedClusterProperties innerProperties() {
        return this.innerProperties;
    }

    /**
     * Get the sku property: The sku of the managed cluster.
     * 
     * @return the sku value.
     */
    public Sku sku() {
        return this.sku;
    }

    /**
     * Set the sku property: The sku of the managed cluster.
     * 
     * @param sku the sku value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withSku(Sku sku) {
        this.sku = sku;
        return this;
    }

    /**
     * Get the etag property: Azure resource etag.
     * 
     * @return the etag value.
     */
    public String etag() {
        return this.etag;
    }

    /**
     * Get the systemData property: Metadata pertaining to creation and last modification of the resource.
     * 
     * @return the systemData value.
     */
    public SystemData systemData() {
        return this.systemData;
    }

    /**
     * Get the id property: Fully qualified resource Id for the resource.
     * 
     * @return the id value.
     */
    @Override
    public String id() {
        return this.id;
    }

    /**
     * Get the name property: The name of the resource.
     * 
     * @return the name value.
     */
    @Override
    public String name() {
        return this.name;
    }

    /**
     * Get the type property: The type of the resource.
     * 
     * @return the type value.
     */
    @Override
    public String type() {
        return this.type;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public ManagedClusterInner withLocation(String location) {
        super.withLocation(location);
        return this;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public ManagedClusterInner withTags(Map tags) {
        super.withTags(tags);
        return this;
    }

    /**
     * Get the dnsName property: The cluster dns name.
     * 
     * @return the dnsName value.
     */
    public String dnsName() {
        return this.innerProperties() == null ? null : this.innerProperties().dnsName();
    }

    /**
     * Set the dnsName property: The cluster dns name.
     * 
     * @param dnsName the dnsName value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withDnsName(String dnsName) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withDnsName(dnsName);
        return this;
    }

    /**
     * Get the fqdn property: The fully qualified domain name associated with the public load balancer of the cluster.
     * 
     * @return the fqdn value.
     */
    public String fqdn() {
        return this.innerProperties() == null ? null : this.innerProperties().fqdn();
    }

    /**
     * Get the ipv4Address property: The IPv4 address associated with the public load balancer of the cluster.
     * 
     * @return the ipv4Address value.
     */
    public String ipv4Address() {
        return this.innerProperties() == null ? null : this.innerProperties().ipv4Address();
    }

    /**
     * Get the clusterId property: A service generated unique identifier for the cluster resource.
     * 
     * @return the clusterId value.
     */
    public String clusterId() {
        return this.innerProperties() == null ? null : this.innerProperties().clusterId();
    }

    /**
     * Get the clusterState property: The current state of the cluster.
     * 
     * @return the clusterState value.
     */
    public ClusterState clusterState() {
        return this.innerProperties() == null ? null : this.innerProperties().clusterState();
    }

    /**
     * Get the clusterCertificateThumbprints property: List of thumbprints of the cluster certificates.
     * 
     * @return the clusterCertificateThumbprints value.
     */
    public List clusterCertificateThumbprints() {
        return this.innerProperties() == null ? null : this.innerProperties().clusterCertificateThumbprints();
    }

    /**
     * Get the clientConnectionPort property: The port used for client connections to the cluster.
     * 
     * @return the clientConnectionPort value.
     */
    public Integer clientConnectionPort() {
        return this.innerProperties() == null ? null : this.innerProperties().clientConnectionPort();
    }

    /**
     * Set the clientConnectionPort property: The port used for client connections to the cluster.
     * 
     * @param clientConnectionPort the clientConnectionPort value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withClientConnectionPort(Integer clientConnectionPort) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withClientConnectionPort(clientConnectionPort);
        return this;
    }

    /**
     * Get the httpGatewayConnectionPort property: The port used for HTTP connections to the cluster.
     * 
     * @return the httpGatewayConnectionPort value.
     */
    public Integer httpGatewayConnectionPort() {
        return this.innerProperties() == null ? null : this.innerProperties().httpGatewayConnectionPort();
    }

    /**
     * Set the httpGatewayConnectionPort property: The port used for HTTP connections to the cluster.
     * 
     * @param httpGatewayConnectionPort the httpGatewayConnectionPort value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withHttpGatewayConnectionPort(Integer httpGatewayConnectionPort) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withHttpGatewayConnectionPort(httpGatewayConnectionPort);
        return this;
    }

    /**
     * Get the adminUsername property: VM admin user name.
     * 
     * @return the adminUsername value.
     */
    public String adminUsername() {
        return this.innerProperties() == null ? null : this.innerProperties().adminUsername();
    }

    /**
     * Set the adminUsername property: VM admin user name.
     * 
     * @param adminUsername the adminUsername value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withAdminUsername(String adminUsername) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withAdminUsername(adminUsername);
        return this;
    }

    /**
     * Get the adminPassword property: VM admin user password.
     * 
     * @return the adminPassword value.
     */
    public String adminPassword() {
        return this.innerProperties() == null ? null : this.innerProperties().adminPassword();
    }

    /**
     * Set the adminPassword property: VM admin user password.
     * 
     * @param adminPassword the adminPassword value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withAdminPassword(String adminPassword) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withAdminPassword(adminPassword);
        return this;
    }

    /**
     * Get the loadBalancingRules property: Load balancing rules that are applied to the public load balancer of the
     * cluster.
     * 
     * @return the loadBalancingRules value.
     */
    public List loadBalancingRules() {
        return this.innerProperties() == null ? null : this.innerProperties().loadBalancingRules();
    }

    /**
     * Set the loadBalancingRules property: Load balancing rules that are applied to the public load balancer of the
     * cluster.
     * 
     * @param loadBalancingRules the loadBalancingRules value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withLoadBalancingRules(List loadBalancingRules) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withLoadBalancingRules(loadBalancingRules);
        return this;
    }

    /**
     * Get the allowRdpAccess property: 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 the allowRdpAccess value.
     */
    public Boolean allowRdpAccess() {
        return this.innerProperties() == null ? null : this.innerProperties().allowRdpAccess();
    }

    /**
     * Set the allowRdpAccess property: 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.
     * 
     * @param allowRdpAccess the allowRdpAccess value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withAllowRdpAccess(Boolean allowRdpAccess) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withAllowRdpAccess(allowRdpAccess);
        return this;
    }

    /**
     * Get the networkSecurityRules property: Custom Network Security Rules that are applied to the Virtual Network of
     * the cluster.
     * 
     * @return the networkSecurityRules value.
     */
    public List networkSecurityRules() {
        return this.innerProperties() == null ? null : this.innerProperties().networkSecurityRules();
    }

    /**
     * Set the networkSecurityRules property: Custom Network Security Rules that are applied to the Virtual Network of
     * the cluster.
     * 
     * @param networkSecurityRules the networkSecurityRules value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withNetworkSecurityRules(List networkSecurityRules) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withNetworkSecurityRules(networkSecurityRules);
        return this;
    }

    /**
     * Get the clients property: Client certificates that are allowed to manage the cluster.
     * 
     * @return the clients value.
     */
    public List clients() {
        return this.innerProperties() == null ? null : this.innerProperties().clients();
    }

    /**
     * Set the clients property: Client certificates that are allowed to manage the cluster.
     * 
     * @param clients the clients value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withClients(List clients) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withClients(clients);
        return this;
    }

    /**
     * Get the azureActiveDirectory property: The AAD authentication settings of the cluster.
     * 
     * @return the azureActiveDirectory value.
     */
    public AzureActiveDirectory azureActiveDirectory() {
        return this.innerProperties() == null ? null : this.innerProperties().azureActiveDirectory();
    }

    /**
     * Set the azureActiveDirectory property: The AAD authentication settings of the cluster.
     * 
     * @param azureActiveDirectory the azureActiveDirectory value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withAzureActiveDirectory(AzureActiveDirectory azureActiveDirectory) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withAzureActiveDirectory(azureActiveDirectory);
        return this;
    }

    /**
     * Get the fabricSettings property: The list of custom fabric settings to configure the cluster.
     * 
     * @return the fabricSettings value.
     */
    public List fabricSettings() {
        return this.innerProperties() == null ? null : this.innerProperties().fabricSettings();
    }

    /**
     * Set the fabricSettings property: The list of custom fabric settings to configure the cluster.
     * 
     * @param fabricSettings the fabricSettings value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withFabricSettings(List fabricSettings) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withFabricSettings(fabricSettings);
        return this;
    }

    /**
     * Get the provisioningState property: The provisioning state of the managed cluster resource.
     * 
     * @return the provisioningState value.
     */
    public ManagedResourceProvisioningState provisioningState() {
        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
    }

    /**
     * Get the clusterCodeVersion property: 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 the clusterCodeVersion value.
     */
    public String clusterCodeVersion() {
        return this.innerProperties() == null ? null : this.innerProperties().clusterCodeVersion();
    }

    /**
     * Set the clusterCodeVersion property: 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**.
     * 
     * @param clusterCodeVersion the clusterCodeVersion value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withClusterCodeVersion(String clusterCodeVersion) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withClusterCodeVersion(clusterCodeVersion);
        return this;
    }

    /**
     * Get the clusterUpgradeMode property: The upgrade mode of the cluster when new Service Fabric runtime version is
     * available.
     * 
     * @return the clusterUpgradeMode value.
     */
    public ClusterUpgradeMode clusterUpgradeMode() {
        return this.innerProperties() == null ? null : this.innerProperties().clusterUpgradeMode();
    }

    /**
     * Set the clusterUpgradeMode property: The upgrade mode of the cluster when new Service Fabric runtime version is
     * available.
     * 
     * @param clusterUpgradeMode the clusterUpgradeMode value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withClusterUpgradeMode(ClusterUpgradeMode clusterUpgradeMode) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withClusterUpgradeMode(clusterUpgradeMode);
        return this;
    }

    /**
     * Get the clusterUpgradeCadence property: 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 the clusterUpgradeCadence value.
     */
    public ClusterUpgradeCadence clusterUpgradeCadence() {
        return this.innerProperties() == null ? null : this.innerProperties().clusterUpgradeCadence();
    }

    /**
     * Set the clusterUpgradeCadence property: 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'.
     * 
     * @param clusterUpgradeCadence the clusterUpgradeCadence value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withClusterUpgradeCadence(ClusterUpgradeCadence clusterUpgradeCadence) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withClusterUpgradeCadence(clusterUpgradeCadence);
        return this;
    }

    /**
     * Get the addonFeatures property: List of add-on features to enable on the cluster.
     * 
     * @return the addonFeatures value.
     */
    public List addonFeatures() {
        return this.innerProperties() == null ? null : this.innerProperties().addonFeatures();
    }

    /**
     * Set the addonFeatures property: List of add-on features to enable on the cluster.
     * 
     * @param addonFeatures the addonFeatures value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withAddonFeatures(List addonFeatures) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withAddonFeatures(addonFeatures);
        return this;
    }

    /**
     * Get the enableAutoOSUpgrade property: 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 the enableAutoOSUpgrade value.
     */
    public Boolean enableAutoOSUpgrade() {
        return this.innerProperties() == null ? null : this.innerProperties().enableAutoOSUpgrade();
    }

    /**
     * Set the enableAutoOSUpgrade property: 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.
     * 
     * @param enableAutoOSUpgrade the enableAutoOSUpgrade value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withEnableAutoOSUpgrade(Boolean enableAutoOSUpgrade) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withEnableAutoOSUpgrade(enableAutoOSUpgrade);
        return this;
    }

    /**
     * Get the zonalResiliency property: Indicates if the cluster has zone resiliency.
     * 
     * @return the zonalResiliency value.
     */
    public Boolean zonalResiliency() {
        return this.innerProperties() == null ? null : this.innerProperties().zonalResiliency();
    }

    /**
     * Set the zonalResiliency property: Indicates if the cluster has zone resiliency.
     * 
     * @param zonalResiliency the zonalResiliency value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withZonalResiliency(Boolean zonalResiliency) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withZonalResiliency(zonalResiliency);
        return this;
    }

    /**
     * Get the applicationTypeVersionsCleanupPolicy property: The policy used to clean up unused versions.
     * 
     * @return the applicationTypeVersionsCleanupPolicy value.
     */
    public ApplicationTypeVersionsCleanupPolicy applicationTypeVersionsCleanupPolicy() {
        return this.innerProperties() == null ? null : this.innerProperties().applicationTypeVersionsCleanupPolicy();
    }

    /**
     * Set the applicationTypeVersionsCleanupPolicy property: The policy used to clean up unused versions.
     * 
     * @param applicationTypeVersionsCleanupPolicy the applicationTypeVersionsCleanupPolicy value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withApplicationTypeVersionsCleanupPolicy(
        ApplicationTypeVersionsCleanupPolicy applicationTypeVersionsCleanupPolicy) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withApplicationTypeVersionsCleanupPolicy(applicationTypeVersionsCleanupPolicy);
        return this;
    }

    /**
     * Get the enableIpv6 property: 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 the enableIpv6 value.
     */
    public Boolean enableIpv6() {
        return this.innerProperties() == null ? null : this.innerProperties().enableIpv6();
    }

    /**
     * Set the enableIpv6 property: 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.
     * 
     * @param enableIpv6 the enableIpv6 value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withEnableIpv6(Boolean enableIpv6) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withEnableIpv6(enableIpv6);
        return this;
    }

    /**
     * Get the subnetId property: 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 the subnetId value.
     */
    public String subnetId() {
        return this.innerProperties() == null ? null : this.innerProperties().subnetId();
    }

    /**
     * Set the subnetId property: 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.
     * 
     * @param subnetId the subnetId value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withSubnetId(String subnetId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withSubnetId(subnetId);
        return this;
    }

    /**
     * Get the ipTags property: The list of IP tags associated with the default public IP address of the cluster.
     * 
     * @return the ipTags value.
     */
    public List ipTags() {
        return this.innerProperties() == null ? null : this.innerProperties().ipTags();
    }

    /**
     * Set the ipTags property: The list of IP tags associated with the default public IP address of the cluster.
     * 
     * @param ipTags the ipTags value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withIpTags(List ipTags) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withIpTags(ipTags);
        return this;
    }

    /**
     * Get the ipv6Address property: IPv6 address for the cluster if IPv6 is enabled.
     * 
     * @return the ipv6Address value.
     */
    public String ipv6Address() {
        return this.innerProperties() == null ? null : this.innerProperties().ipv6Address();
    }

    /**
     * Get the enableServicePublicIp property: 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 the enableServicePublicIp value.
     */
    public Boolean enableServicePublicIp() {
        return this.innerProperties() == null ? null : this.innerProperties().enableServicePublicIp();
    }

    /**
     * Set the enableServicePublicIp property: 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.
     * 
     * @param enableServicePublicIp the enableServicePublicIp value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withEnableServicePublicIp(Boolean enableServicePublicIp) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withEnableServicePublicIp(enableServicePublicIp);
        return this;
    }

    /**
     * Get the auxiliarySubnets property: Auxiliary subnets for the cluster.
     * 
     * @return the auxiliarySubnets value.
     */
    public List auxiliarySubnets() {
        return this.innerProperties() == null ? null : this.innerProperties().auxiliarySubnets();
    }

    /**
     * Set the auxiliarySubnets property: Auxiliary subnets for the cluster.
     * 
     * @param auxiliarySubnets the auxiliarySubnets value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withAuxiliarySubnets(List auxiliarySubnets) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withAuxiliarySubnets(auxiliarySubnets);
        return this;
    }

    /**
     * Get the serviceEndpoints property: Service endpoints for subnets in the cluster.
     * 
     * @return the serviceEndpoints value.
     */
    public List serviceEndpoints() {
        return this.innerProperties() == null ? null : this.innerProperties().serviceEndpoints();
    }

    /**
     * Set the serviceEndpoints property: Service endpoints for subnets in the cluster.
     * 
     * @param serviceEndpoints the serviceEndpoints value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withServiceEndpoints(List serviceEndpoints) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withServiceEndpoints(serviceEndpoints);
        return this;
    }

    /**
     * Get the zonalUpdateMode property: Indicates the update mode for Cross Az clusters.
     * 
     * @return the zonalUpdateMode value.
     */
    public ZonalUpdateMode zonalUpdateMode() {
        return this.innerProperties() == null ? null : this.innerProperties().zonalUpdateMode();
    }

    /**
     * Set the zonalUpdateMode property: Indicates the update mode for Cross Az clusters.
     * 
     * @param zonalUpdateMode the zonalUpdateMode value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withZonalUpdateMode(ZonalUpdateMode zonalUpdateMode) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withZonalUpdateMode(zonalUpdateMode);
        return this;
    }

    /**
     * Get the useCustomVnet property: 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 the useCustomVnet value.
     */
    public Boolean useCustomVnet() {
        return this.innerProperties() == null ? null : this.innerProperties().useCustomVnet();
    }

    /**
     * Set the useCustomVnet property: 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.
     * 
     * @param useCustomVnet the useCustomVnet value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withUseCustomVnet(Boolean useCustomVnet) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withUseCustomVnet(useCustomVnet);
        return this;
    }

    /**
     * Get the publicIpPrefixId property: Specify the resource id of a public IPv4 prefix that the load balancer will
     * allocate a public IPv4 address from. This setting cannot be changed once the cluster is created.
     * 
     * @return the publicIpPrefixId value.
     */
    public String publicIpPrefixId() {
        return this.innerProperties() == null ? null : this.innerProperties().publicIpPrefixId();
    }

    /**
     * Set the publicIpPrefixId property: Specify the resource id of a public IPv4 prefix that the load balancer will
     * allocate a public IPv4 address from. This setting cannot be changed once the cluster is created.
     * 
     * @param publicIpPrefixId the publicIpPrefixId value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withPublicIpPrefixId(String publicIpPrefixId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withPublicIpPrefixId(publicIpPrefixId);
        return this;
    }

    /**
     * Get the publicIPv6PrefixId property: Specify the resource id of a public IPv6 prefix that the load balancer will
     * allocate a public IPv6 address from. This setting cannot be changed once the cluster is created.
     * 
     * @return the publicIPv6PrefixId value.
     */
    public String publicIPv6PrefixId() {
        return this.innerProperties() == null ? null : this.innerProperties().publicIPv6PrefixId();
    }

    /**
     * Set the publicIPv6PrefixId property: Specify the resource id of a public IPv6 prefix that the load balancer will
     * allocate a public IPv6 address from. This setting cannot be changed once the cluster is created.
     * 
     * @param publicIPv6PrefixId the publicIPv6PrefixId value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withPublicIPv6PrefixId(String publicIPv6PrefixId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withPublicIPv6PrefixId(publicIPv6PrefixId);
        return this;
    }

    /**
     * Get the ddosProtectionPlanId property: Specify the resource id of a DDoS network protection plan that will be
     * associated with the virtual network of the cluster.
     * 
     * @return the ddosProtectionPlanId value.
     */
    public String ddosProtectionPlanId() {
        return this.innerProperties() == null ? null : this.innerProperties().ddosProtectionPlanId();
    }

    /**
     * Set the ddosProtectionPlanId property: Specify the resource id of a DDoS network protection plan that will be
     * associated with the virtual network of the cluster.
     * 
     * @param ddosProtectionPlanId the ddosProtectionPlanId value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withDdosProtectionPlanId(String ddosProtectionPlanId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withDdosProtectionPlanId(ddosProtectionPlanId);
        return this;
    }

    /**
     * Get the upgradeDescription property: The policy to use when upgrading the cluster.
     * 
     * @return the upgradeDescription value.
     */
    public ClusterUpgradePolicy upgradeDescription() {
        return this.innerProperties() == null ? null : this.innerProperties().upgradeDescription();
    }

    /**
     * Set the upgradeDescription property: The policy to use when upgrading the cluster.
     * 
     * @param upgradeDescription the upgradeDescription value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withUpgradeDescription(ClusterUpgradePolicy upgradeDescription) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withUpgradeDescription(upgradeDescription);
        return this;
    }

    /**
     * Get the httpGatewayTokenAuthConnectionPort property: The port used for token-auth based HTTPS connections to the
     * cluster. Cannot be set to the same port as HttpGatewayEndpoint.
     * 
     * @return the httpGatewayTokenAuthConnectionPort value.
     */
    public Integer httpGatewayTokenAuthConnectionPort() {
        return this.innerProperties() == null ? null : this.innerProperties().httpGatewayTokenAuthConnectionPort();
    }

    /**
     * Set the httpGatewayTokenAuthConnectionPort property: The port used for token-auth based HTTPS connections to the
     * cluster. Cannot be set to the same port as HttpGatewayEndpoint.
     * 
     * @param httpGatewayTokenAuthConnectionPort the httpGatewayTokenAuthConnectionPort value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withHttpGatewayTokenAuthConnectionPort(Integer httpGatewayTokenAuthConnectionPort) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withHttpGatewayTokenAuthConnectionPort(httpGatewayTokenAuthConnectionPort);
        return this;
    }

    /**
     * Get the enableHttpGatewayExclusiveAuthMode property: If true, token-based authentication is not allowed on the
     * HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If token-based authentication is
     * used, HttpGatewayTokenAuthConnectionPort must be defined.
     * 
     * @return the enableHttpGatewayExclusiveAuthMode value.
     */
    public Boolean enableHttpGatewayExclusiveAuthMode() {
        return this.innerProperties() == null ? null : this.innerProperties().enableHttpGatewayExclusiveAuthMode();
    }

    /**
     * Set the enableHttpGatewayExclusiveAuthMode property: If true, token-based authentication is not allowed on the
     * HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If token-based authentication is
     * used, HttpGatewayTokenAuthConnectionPort must be defined.
     * 
     * @param enableHttpGatewayExclusiveAuthMode the enableHttpGatewayExclusiveAuthMode value to set.
     * @return the ManagedClusterInner object itself.
     */
    public ManagedClusterInner withEnableHttpGatewayExclusiveAuthMode(Boolean enableHttpGatewayExclusiveAuthMode) {
        if (this.innerProperties() == null) {
            this.innerProperties = new ManagedClusterProperties();
        }
        this.innerProperties().withEnableHttpGatewayExclusiveAuthMode(enableHttpGatewayExclusiveAuthMode);
        return this;
    }

    /**
     * Validates the instance.
     * 
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
        if (innerProperties() != null) {
            innerProperties().validate();
        }
        if (sku() == null) {
            throw LOGGER.atError()
                .log(new IllegalArgumentException("Missing required property sku in model ManagedClusterInner"));
        } else {
            sku().validate();
        }
    }

    private static final ClientLogger LOGGER = new ClientLogger(ManagedClusterInner.class);

    /**
     * {@inheritDoc}
     */
    @Override
    public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
        jsonWriter.writeStartObject();
        jsonWriter.writeStringField("location", location());
        jsonWriter.writeMapField("tags", tags(), (writer, element) -> writer.writeString(element));
        jsonWriter.writeJsonField("sku", this.sku);
        jsonWriter.writeJsonField("properties", this.innerProperties);
        return jsonWriter.writeEndObject();
    }

    /**
     * Reads an instance of ManagedClusterInner from the JsonReader.
     * 
     * @param jsonReader The JsonReader being read.
     * @return An instance of ManagedClusterInner if the JsonReader was pointing to an instance of it, or null if it was
     * pointing to JSON null.
     * @throws IllegalStateException If the deserialized JSON object was missing any required properties.
     * @throws IOException If an error occurs while reading the ManagedClusterInner.
     */
    public static ManagedClusterInner fromJson(JsonReader jsonReader) throws IOException {
        return jsonReader.readObject(reader -> {
            ManagedClusterInner deserializedManagedClusterInner = new ManagedClusterInner();
            while (reader.nextToken() != JsonToken.END_OBJECT) {
                String fieldName = reader.getFieldName();
                reader.nextToken();

                if ("id".equals(fieldName)) {
                    deserializedManagedClusterInner.id = reader.getString();
                } else if ("name".equals(fieldName)) {
                    deserializedManagedClusterInner.name = reader.getString();
                } else if ("type".equals(fieldName)) {
                    deserializedManagedClusterInner.type = reader.getString();
                } else if ("location".equals(fieldName)) {
                    deserializedManagedClusterInner.withLocation(reader.getString());
                } else if ("tags".equals(fieldName)) {
                    Map tags = reader.readMap(reader1 -> reader1.getString());
                    deserializedManagedClusterInner.withTags(tags);
                } else if ("sku".equals(fieldName)) {
                    deserializedManagedClusterInner.sku = Sku.fromJson(reader);
                } else if ("properties".equals(fieldName)) {
                    deserializedManagedClusterInner.innerProperties = ManagedClusterProperties.fromJson(reader);
                } else if ("etag".equals(fieldName)) {
                    deserializedManagedClusterInner.etag = reader.getString();
                } else if ("systemData".equals(fieldName)) {
                    deserializedManagedClusterInner.systemData = SystemData.fromJson(reader);
                } else {
                    reader.skipChildren();
                }
            }

            return deserializedManagedClusterInner;
        });
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy