// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

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

import com.azure.core.annotation.Fluent;
import com.azure.core.management.Resource;
import com.azure.core.util.logging.ClientLogger;
import com.azure.resourcemanager.appservice.models.HostingEnvironmentStatus;
import com.azure.resourcemanager.appservice.models.InternalLoadBalancingMode;
import com.azure.resourcemanager.appservice.models.NameValuePair;
import com.azure.resourcemanager.appservice.models.NetworkAccessControlEntry;
import com.azure.resourcemanager.appservice.models.ProvisioningState;
import com.azure.resourcemanager.appservice.models.VirtualIpMapping;
import com.azure.resourcemanager.appservice.models.VirtualNetworkProfile;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
import java.util.Map;

/** App Service Environment ARM resource. */
@Fluent
public final class AppServiceEnvironmentResourceInner extends Resource {
    @JsonIgnore private final ClientLogger logger = new ClientLogger(AppServiceEnvironmentResourceInner.class);

    /*
     * Core resource properties
     */
    @JsonProperty(value = "properties")
    private AppServiceEnvironment innerProperties;

    /*
     * Kind of resource.
     */
    @JsonProperty(value = "kind")
    private String kind;

    /**
     * Get the innerProperties property: Core resource properties.
     *
     * @return the innerProperties value.
     */
    private AppServiceEnvironment innerProperties() {
        return this.innerProperties;
    }

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

    /**
     * Set the kind property: Kind of resource.
     *
     * @param kind the kind value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withKind(String kind) {
        this.kind = kind;
        return this;
    }

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

    /** {@inheritDoc} */
    @Override
    public AppServiceEnvironmentResourceInner withTags(Map<String, String> tags) {
        super.withTags(tags);
        return this;
    }

    /**
     * Get the name property: Name of the App Service Environment.
     *
     * @return the name value.
     */
    public String namePropertiesName() {
        return this.innerProperties() == null ? null : this.innerProperties().name();
    }

    /**
     * Set the name property: Name of the App Service Environment.
     *
     * @param name the name value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withNamePropertiesName(String name) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withName(name);
        return this;
    }

    /**
     * Get the location property: Location of the App Service Environment, e.g. "West US".
     *
     * @return the location value.
     */
    public String locationPropertiesLocation() {
        return this.innerProperties() == null ? null : this.innerProperties().location();
    }

    /**
     * Set the location property: Location of the App Service Environment, e.g. "West US".
     *
     * @param location the location value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withLocationPropertiesLocation(String location) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withLocation(location);
        return this;
    }

    /**
     * Get the provisioningState property: Provisioning state of the App Service Environment.
     *
     * @return the provisioningState value.
     */
    public ProvisioningState provisioningState() {
        return this.innerProperties() == null ? null : this.innerProperties().provisioningState();
    }

    /**
     * Get the status property: Current status of the App Service Environment.
     *
     * @return the status value.
     */
    public HostingEnvironmentStatus status() {
        return this.innerProperties() == null ? null : this.innerProperties().status();
    }

    /**
     * Get the vnetName property: Name of the Virtual Network for the App Service Environment.
     *
     * @return the vnetName value.
     */
    public String vnetName() {
        return this.innerProperties() == null ? null : this.innerProperties().vnetName();
    }

    /**
     * Set the vnetName property: Name of the Virtual Network for the App Service Environment.
     *
     * @param vnetName the vnetName value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withVnetName(String vnetName) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withVnetName(vnetName);
        return this;
    }

    /**
     * Get the vnetResourceGroupName property: Resource group of the Virtual Network.
     *
     * @return the vnetResourceGroupName value.
     */
    public String vnetResourceGroupName() {
        return this.innerProperties() == null ? null : this.innerProperties().vnetResourceGroupName();
    }

    /**
     * Set the vnetResourceGroupName property: Resource group of the Virtual Network.
     *
     * @param vnetResourceGroupName the vnetResourceGroupName value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withVnetResourceGroupName(String vnetResourceGroupName) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withVnetResourceGroupName(vnetResourceGroupName);
        return this;
    }

    /**
     * Get the vnetSubnetName property: Subnet of the Virtual Network.
     *
     * @return the vnetSubnetName value.
     */
    public String vnetSubnetName() {
        return this.innerProperties() == null ? null : this.innerProperties().vnetSubnetName();
    }

    /**
     * Set the vnetSubnetName property: Subnet of the Virtual Network.
     *
     * @param vnetSubnetName the vnetSubnetName value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withVnetSubnetName(String vnetSubnetName) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withVnetSubnetName(vnetSubnetName);
        return this;
    }

    /**
     * Get the virtualNetwork property: Description of the Virtual Network.
     *
     * @return the virtualNetwork value.
     */
    public VirtualNetworkProfile virtualNetwork() {
        return this.innerProperties() == null ? null : this.innerProperties().virtualNetwork();
    }

    /**
     * Set the virtualNetwork property: Description of the Virtual Network.
     *
     * @param virtualNetwork the virtualNetwork value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withVirtualNetwork(VirtualNetworkProfile virtualNetwork) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withVirtualNetwork(virtualNetwork);
        return this;
    }

    /**
     * Get the internalLoadBalancingMode property: Specifies which endpoints to serve internally in the Virtual Network
     * for the App Service Environment.
     *
     * @return the internalLoadBalancingMode value.
     */
    public InternalLoadBalancingMode internalLoadBalancingMode() {
        return this.innerProperties() == null ? null : this.innerProperties().internalLoadBalancingMode();
    }

    /**
     * Set the internalLoadBalancingMode property: Specifies which endpoints to serve internally in the Virtual Network
     * for the App Service Environment.
     *
     * @param internalLoadBalancingMode the internalLoadBalancingMode value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withInternalLoadBalancingMode(
        InternalLoadBalancingMode internalLoadBalancingMode) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withInternalLoadBalancingMode(internalLoadBalancingMode);
        return this;
    }

    /**
     * Get the multiSize property: Front-end VM size, e.g. "Medium", "Large".
     *
     * @return the multiSize value.
     */
    public String multiSize() {
        return this.innerProperties() == null ? null : this.innerProperties().multiSize();
    }

    /**
     * Set the multiSize property: Front-end VM size, e.g. "Medium", "Large".
     *
     * @param multiSize the multiSize value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withMultiSize(String multiSize) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withMultiSize(multiSize);
        return this;
    }

    /**
     * Get the multiRoleCount property: Number of front-end instances.
     *
     * @return the multiRoleCount value.
     */
    public Integer multiRoleCount() {
        return this.innerProperties() == null ? null : this.innerProperties().multiRoleCount();
    }

    /**
     * Set the multiRoleCount property: Number of front-end instances.
     *
     * @param multiRoleCount the multiRoleCount value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withMultiRoleCount(Integer multiRoleCount) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withMultiRoleCount(multiRoleCount);
        return this;
    }

    /**
     * Get the workerPools property: Description of worker pools with worker size IDs, VM sizes, and number of workers
     * in each pool.
     *
     * @return the workerPools value.
     */
    public List<WorkerPool> workerPools() {
        return this.innerProperties() == null ? null : this.innerProperties().workerPools();
    }

    /**
     * Set the workerPools property: Description of worker pools with worker size IDs, VM sizes, and number of workers
     * in each pool.
     *
     * @param workerPools the workerPools value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withWorkerPools(List<WorkerPool> workerPools) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withWorkerPools(workerPools);
        return this;
    }

    /**
     * Get the ipsslAddressCount property: Number of IP SSL addresses reserved for the App Service Environment.
     *
     * @return the ipsslAddressCount value.
     */
    public Integer ipsslAddressCount() {
        return this.innerProperties() == null ? null : this.innerProperties().ipsslAddressCount();
    }

    /**
     * Set the ipsslAddressCount property: Number of IP SSL addresses reserved for the App Service Environment.
     *
     * @param ipsslAddressCount the ipsslAddressCount value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withIpsslAddressCount(Integer ipsslAddressCount) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withIpsslAddressCount(ipsslAddressCount);
        return this;
    }

    /**
     * Get the databaseEdition property: Edition of the metadata database for the App Service Environment, e.g.
     * "Standard".
     *
     * @return the databaseEdition value.
     */
    public String databaseEdition() {
        return this.innerProperties() == null ? null : this.innerProperties().databaseEdition();
    }

    /**
     * Get the databaseServiceObjective property: Service objective of the metadata database for the App Service
     * Environment, e.g. "S0".
     *
     * @return the databaseServiceObjective value.
     */
    public String databaseServiceObjective() {
        return this.innerProperties() == null ? null : this.innerProperties().databaseServiceObjective();
    }

    /**
     * Get the upgradeDomains property: Number of upgrade domains of the App Service Environment.
     *
     * @return the upgradeDomains value.
     */
    public Integer upgradeDomains() {
        return this.innerProperties() == null ? null : this.innerProperties().upgradeDomains();
    }

    /**
     * Get the subscriptionId property: Subscription of the App Service Environment.
     *
     * @return the subscriptionId value.
     */
    public String subscriptionId() {
        return this.innerProperties() == null ? null : this.innerProperties().subscriptionId();
    }

    /**
     * Get the dnsSuffix property: DNS suffix of the App Service Environment.
     *
     * @return the dnsSuffix value.
     */
    public String dnsSuffix() {
        return this.innerProperties() == null ? null : this.innerProperties().dnsSuffix();
    }

    /**
     * Set the dnsSuffix property: DNS suffix of the App Service Environment.
     *
     * @param dnsSuffix the dnsSuffix value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withDnsSuffix(String dnsSuffix) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withDnsSuffix(dnsSuffix);
        return this;
    }

    /**
     * Get the lastAction property: Last deployment action on the App Service Environment.
     *
     * @return the lastAction value.
     */
    public String lastAction() {
        return this.innerProperties() == null ? null : this.innerProperties().lastAction();
    }

    /**
     * Get the lastActionResult property: Result of the last deployment action on the App Service Environment.
     *
     * @return the lastActionResult value.
     */
    public String lastActionResult() {
        return this.innerProperties() == null ? null : this.innerProperties().lastActionResult();
    }

    /**
     * Get the allowedMultiSizes property: List of comma separated strings describing which VM sizes are allowed for
     * front-ends.
     *
     * @return the allowedMultiSizes value.
     */
    public String allowedMultiSizes() {
        return this.innerProperties() == null ? null : this.innerProperties().allowedMultiSizes();
    }

    /**
     * Get the allowedWorkerSizes property: List of comma separated strings describing which VM sizes are allowed for
     * workers.
     *
     * @return the allowedWorkerSizes value.
     */
    public String allowedWorkerSizes() {
        return this.innerProperties() == null ? null : this.innerProperties().allowedWorkerSizes();
    }

    /**
     * Get the maximumNumberOfMachines property: Maximum number of VMs in the App Service Environment.
     *
     * @return the maximumNumberOfMachines value.
     */
    public Integer maximumNumberOfMachines() {
        return this.innerProperties() == null ? null : this.innerProperties().maximumNumberOfMachines();
    }

    /**
     * Get the vipMappings property: Description of IP SSL mapping for the App Service Environment.
     *
     * @return the vipMappings value.
     */
    public List<VirtualIpMapping> vipMappings() {
        return this.innerProperties() == null ? null : this.innerProperties().vipMappings();
    }

    /**
     * Get the environmentCapacities property: Current total, used, and available worker capacities.
     *
     * @return the environmentCapacities value.
     */
    public List<StampCapacityInner> environmentCapacities() {
        return this.innerProperties() == null ? null : this.innerProperties().environmentCapacities();
    }

    /**
     * Get the networkAccessControlList property: Access control list for controlling traffic to the App Service
     * Environment.
     *
     * @return the networkAccessControlList value.
     */
    public List<NetworkAccessControlEntry> networkAccessControlList() {
        return this.innerProperties() == null ? null : this.innerProperties().networkAccessControlList();
    }

    /**
     * Set the networkAccessControlList property: Access control list for controlling traffic to the App Service
     * Environment.
     *
     * @param networkAccessControlList the networkAccessControlList value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withNetworkAccessControlList(
        List<NetworkAccessControlEntry> networkAccessControlList) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withNetworkAccessControlList(networkAccessControlList);
        return this;
    }

    /**
     * Get the environmentIsHealthy property: True/false indicating whether the App Service Environment is healthy.
     *
     * @return the environmentIsHealthy value.
     */
    public Boolean environmentIsHealthy() {
        return this.innerProperties() == null ? null : this.innerProperties().environmentIsHealthy();
    }

    /**
     * Get the environmentStatus property: Detailed message about with results of the last check of the App Service
     * Environment.
     *
     * @return the environmentStatus value.
     */
    public String environmentStatus() {
        return this.innerProperties() == null ? null : this.innerProperties().environmentStatus();
    }

    /**
     * Get the resourceGroup property: Resource group of the App Service Environment.
     *
     * @return the resourceGroup value.
     */
    public String resourceGroup() {
        return this.innerProperties() == null ? null : this.innerProperties().resourceGroup();
    }

    /**
     * Get the frontEndScaleFactor property: Scale factor for front-ends.
     *
     * @return the frontEndScaleFactor value.
     */
    public Integer frontEndScaleFactor() {
        return this.innerProperties() == null ? null : this.innerProperties().frontEndScaleFactor();
    }

    /**
     * Set the frontEndScaleFactor property: Scale factor for front-ends.
     *
     * @param frontEndScaleFactor the frontEndScaleFactor value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withFrontEndScaleFactor(Integer frontEndScaleFactor) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withFrontEndScaleFactor(frontEndScaleFactor);
        return this;
    }

    /**
     * Get the defaultFrontEndScaleFactor property: Default Scale Factor for FrontEnds.
     *
     * @return the defaultFrontEndScaleFactor value.
     */
    public Integer defaultFrontEndScaleFactor() {
        return this.innerProperties() == null ? null : this.innerProperties().defaultFrontEndScaleFactor();
    }

    /**
     * Get the apiManagementAccountId property: API Management Account associated with the App Service Environment.
     *
     * @return the apiManagementAccountId value.
     */
    public String apiManagementAccountId() {
        return this.innerProperties() == null ? null : this.innerProperties().apiManagementAccountId();
    }

    /**
     * Set the apiManagementAccountId property: API Management Account associated with the App Service Environment.
     *
     * @param apiManagementAccountId the apiManagementAccountId value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withApiManagementAccountId(String apiManagementAccountId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withApiManagementAccountId(apiManagementAccountId);
        return this;
    }

    /**
     * Get the suspended property: &lt;code&gt;true&lt;/code&gt; if the App Service Environment is suspended; otherwise,
     * &lt;code&gt;false&lt;/code&gt;. The environment can be suspended, e.g. when the management endpoint is no longer
     * available (most likely because NSG blocked the incoming traffic).
     *
     * @return the suspended value.
     */
    public Boolean suspended() {
        return this.innerProperties() == null ? null : this.innerProperties().suspended();
    }

    /**
     * Set the suspended property: &lt;code&gt;true&lt;/code&gt; if the App Service Environment is suspended; otherwise,
     * &lt;code&gt;false&lt;/code&gt;. The environment can be suspended, e.g. when the management endpoint is no longer
     * available (most likely because NSG blocked the incoming traffic).
     *
     * @param suspended the suspended value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withSuspended(Boolean suspended) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withSuspended(suspended);
        return this;
    }

    /**
     * Get the dynamicCacheEnabled property: True/false indicating whether the App Service Environment is suspended. The
     * environment can be suspended e.g. when the management endpoint is no longer available (most likely because NSG
     * blocked the incoming traffic).
     *
     * @return the dynamicCacheEnabled value.
     */
    public Boolean dynamicCacheEnabled() {
        return this.innerProperties() == null ? null : this.innerProperties().dynamicCacheEnabled();
    }

    /**
     * Set the dynamicCacheEnabled property: True/false indicating whether the App Service Environment is suspended. The
     * environment can be suspended e.g. when the management endpoint is no longer available (most likely because NSG
     * blocked the incoming traffic).
     *
     * @param dynamicCacheEnabled the dynamicCacheEnabled value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withDynamicCacheEnabled(Boolean dynamicCacheEnabled) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withDynamicCacheEnabled(dynamicCacheEnabled);
        return this;
    }

    /**
     * Get the clusterSettings property: Custom settings for changing the behavior of the App Service Environment.
     *
     * @return the clusterSettings value.
     */
    public List<NameValuePair> clusterSettings() {
        return this.innerProperties() == null ? null : this.innerProperties().clusterSettings();
    }

    /**
     * Set the clusterSettings property: Custom settings for changing the behavior of the App Service Environment.
     *
     * @param clusterSettings the clusterSettings value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withClusterSettings(List<NameValuePair> clusterSettings) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withClusterSettings(clusterSettings);
        return this;
    }

    /**
     * Get the userWhitelistedIpRanges property: User added ip ranges to whitelist on ASE db.
     *
     * @return the userWhitelistedIpRanges value.
     */
    public List<String> userWhitelistedIpRanges() {
        return this.innerProperties() == null ? null : this.innerProperties().userWhitelistedIpRanges();
    }

    /**
     * Set the userWhitelistedIpRanges property: User added ip ranges to whitelist on ASE db.
     *
     * @param userWhitelistedIpRanges the userWhitelistedIpRanges value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withUserWhitelistedIpRanges(List<String> userWhitelistedIpRanges) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withUserWhitelistedIpRanges(userWhitelistedIpRanges);
        return this;
    }

    /**
     * Get the hasLinuxWorkers property: Flag that displays whether an ASE has linux workers or not.
     *
     * @return the hasLinuxWorkers value.
     */
    public Boolean hasLinuxWorkers() {
        return this.innerProperties() == null ? null : this.innerProperties().hasLinuxWorkers();
    }

    /**
     * Set the hasLinuxWorkers property: Flag that displays whether an ASE has linux workers or not.
     *
     * @param hasLinuxWorkers the hasLinuxWorkers value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withHasLinuxWorkers(Boolean hasLinuxWorkers) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withHasLinuxWorkers(hasLinuxWorkers);
        return this;
    }

    /**
     * Get the sslCertKeyVaultId property: Key Vault ID for ILB App Service Environment default SSL certificate.
     *
     * @return the sslCertKeyVaultId value.
     */
    public String sslCertKeyVaultId() {
        return this.innerProperties() == null ? null : this.innerProperties().sslCertKeyVaultId();
    }

    /**
     * Set the sslCertKeyVaultId property: Key Vault ID for ILB App Service Environment default SSL certificate.
     *
     * @param sslCertKeyVaultId the sslCertKeyVaultId value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withSslCertKeyVaultId(String sslCertKeyVaultId) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withSslCertKeyVaultId(sslCertKeyVaultId);
        return this;
    }

    /**
     * Get the sslCertKeyVaultSecretName property: Key Vault Secret Name for ILB App Service Environment default SSL
     * certificate.
     *
     * @return the sslCertKeyVaultSecretName value.
     */
    public String sslCertKeyVaultSecretName() {
        return this.innerProperties() == null ? null : this.innerProperties().sslCertKeyVaultSecretName();
    }

    /**
     * Set the sslCertKeyVaultSecretName property: Key Vault Secret Name for ILB App Service Environment default SSL
     * certificate.
     *
     * @param sslCertKeyVaultSecretName the sslCertKeyVaultSecretName value to set.
     * @return the AppServiceEnvironmentResourceInner object itself.
     */
    public AppServiceEnvironmentResourceInner withSslCertKeyVaultSecretName(String sslCertKeyVaultSecretName) {
        if (this.innerProperties() == null) {
            this.innerProperties = new AppServiceEnvironment();
        }
        this.innerProperties().withSslCertKeyVaultSecretName(sslCertKeyVaultSecretName);
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
        if (innerProperties() != null) {
            innerProperties().validate();
        }
    }
}
