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

package com.azure.resourcemanager.machinelearningservices.models;

import com.azure.core.annotation.Fluent;
import com.azure.core.util.logging.ClientLogger;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

/** The ssl configuration for scoring. */
@Fluent
public final class SslConfiguration {
    @JsonIgnore private final ClientLogger logger = new ClientLogger(SslConfiguration.class);

    /*
     * Enable or disable ssl for scoring
     */
    @JsonProperty(value = "status")
    private SslConfigurationStatus status;

    /*
     * Cert data
     */
    @JsonProperty(value = "cert")
    private String cert;

    /*
     * Key data
     */
    @JsonProperty(value = "key")
    private String key;

    /*
     * CNAME of the cert
     */
    @JsonProperty(value = "cname")
    private String cname;

    /*
     * Leaf domain label of public endpoint
     */
    @JsonProperty(value = "leafDomainLabel")
    private String leafDomainLabel;

    /*
     * Indicates whether to overwrite existing domain label.
     */
    @JsonProperty(value = "overwriteExistingDomain")
    private Boolean overwriteExistingDomain;

    /**
     * Get the status property: Enable or disable ssl for scoring.
     *
     * @return the status value.
     */
    public SslConfigurationStatus status() {
        return this.status;
    }

    /**
     * Set the status property: Enable or disable ssl for scoring.
     *
     * @param status the status value to set.
     * @return the SslConfiguration object itself.
     */
    public SslConfiguration withStatus(SslConfigurationStatus status) {
        this.status = status;
        return this;
    }

    /**
     * Get the cert property: Cert data.
     *
     * @return the cert value.
     */
    public String cert() {
        return this.cert;
    }

    /**
     * Set the cert property: Cert data.
     *
     * @param cert the cert value to set.
     * @return the SslConfiguration object itself.
     */
    public SslConfiguration withCert(String cert) {
        this.cert = cert;
        return this;
    }

    /**
     * Get the key property: Key data.
     *
     * @return the key value.
     */
    public String key() {
        return this.key;
    }

    /**
     * Set the key property: Key data.
     *
     * @param key the key value to set.
     * @return the SslConfiguration object itself.
     */
    public SslConfiguration withKey(String key) {
        this.key = key;
        return this;
    }

    /**
     * Get the cname property: CNAME of the cert.
     *
     * @return the cname value.
     */
    public String cname() {
        return this.cname;
    }

    /**
     * Set the cname property: CNAME of the cert.
     *
     * @param cname the cname value to set.
     * @return the SslConfiguration object itself.
     */
    public SslConfiguration withCname(String cname) {
        this.cname = cname;
        return this;
    }

    /**
     * Get the leafDomainLabel property: Leaf domain label of public endpoint.
     *
     * @return the leafDomainLabel value.
     */
    public String leafDomainLabel() {
        return this.leafDomainLabel;
    }

    /**
     * Set the leafDomainLabel property: Leaf domain label of public endpoint.
     *
     * @param leafDomainLabel the leafDomainLabel value to set.
     * @return the SslConfiguration object itself.
     */
    public SslConfiguration withLeafDomainLabel(String leafDomainLabel) {
        this.leafDomainLabel = leafDomainLabel;
        return this;
    }

    /**
     * Get the overwriteExistingDomain property: Indicates whether to overwrite existing domain label.
     *
     * @return the overwriteExistingDomain value.
     */
    public Boolean overwriteExistingDomain() {
        return this.overwriteExistingDomain;
    }

    /**
     * Set the overwriteExistingDomain property: Indicates whether to overwrite existing domain label.
     *
     * @param overwriteExistingDomain the overwriteExistingDomain value to set.
     * @return the SslConfiguration object itself.
     */
    public SslConfiguration withOverwriteExistingDomain(Boolean overwriteExistingDomain) {
        this.overwriteExistingDomain = overwriteExistingDomain;
        return this;
    }

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