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

com.pulumi.azurenative.apimanagement.inputs.HostnameConfigurationArgs Maven / Gradle / Ivy

// *** 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.apimanagement.inputs;

import com.pulumi.azurenative.apimanagement.enums.CertificateSource;
import com.pulumi.azurenative.apimanagement.enums.CertificateStatus;
import com.pulumi.azurenative.apimanagement.enums.HostnameType;
import com.pulumi.azurenative.apimanagement.inputs.CertificateInformationArgs;
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.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


/**
 * Custom hostname configuration.
 * 
 */
public final class HostnameConfigurationArgs extends com.pulumi.resources.ResourceArgs {

    public static final HostnameConfigurationArgs Empty = new HostnameConfigurationArgs();

    /**
     * Certificate information.
     * 
     */
    @Import(name="certificate")
    private @Nullable Output certificate;

    /**
     * @return Certificate information.
     * 
     */
    public Optional> certificate() {
        return Optional.ofNullable(this.certificate);
    }

    /**
     * Certificate Password.
     * 
     */
    @Import(name="certificatePassword")
    private @Nullable Output certificatePassword;

    /**
     * @return Certificate Password.
     * 
     */
    public Optional> certificatePassword() {
        return Optional.ofNullable(this.certificatePassword);
    }

    /**
     * Certificate Source.
     * 
     */
    @Import(name="certificateSource")
    private @Nullable Output> certificateSource;

    /**
     * @return Certificate Source.
     * 
     */
    public Optional>> certificateSource() {
        return Optional.ofNullable(this.certificateSource);
    }

    /**
     * Certificate Status.
     * 
     */
    @Import(name="certificateStatus")
    private @Nullable Output> certificateStatus;

    /**
     * @return Certificate Status.
     * 
     */
    public Optional>> certificateStatus() {
        return Optional.ofNullable(this.certificateStatus);
    }

    /**
     * Specify true to setup the certificate associated with this Hostname as the Default SSL Certificate. If a client does not send the SNI header, then this will be the certificate that will be challenged. The property is useful if a service has multiple custom hostname enabled and it needs to decide on the default ssl certificate. The setting only applied to gateway Hostname Type.
     * 
     */
    @Import(name="defaultSslBinding")
    private @Nullable Output defaultSslBinding;

    /**
     * @return Specify true to setup the certificate associated with this Hostname as the Default SSL Certificate. If a client does not send the SNI header, then this will be the certificate that will be challenged. The property is useful if a service has multiple custom hostname enabled and it needs to decide on the default ssl certificate. The setting only applied to gateway Hostname Type.
     * 
     */
    public Optional> defaultSslBinding() {
        return Optional.ofNullable(this.defaultSslBinding);
    }

    /**
     * Base64 Encoded certificate.
     * 
     */
    @Import(name="encodedCertificate")
    private @Nullable Output encodedCertificate;

    /**
     * @return Base64 Encoded certificate.
     * 
     */
    public Optional> encodedCertificate() {
        return Optional.ofNullable(this.encodedCertificate);
    }

    /**
     * Hostname to configure on the Api Management service.
     * 
     */
    @Import(name="hostName", required=true)
    private Output hostName;

    /**
     * @return Hostname to configure on the Api Management service.
     * 
     */
    public Output hostName() {
        return this.hostName;
    }

    /**
     * System or User Assigned Managed identity clientId as generated by Azure AD, which has GET access to the keyVault containing the SSL certificate.
     * 
     */
    @Import(name="identityClientId")
    private @Nullable Output identityClientId;

    /**
     * @return System or User Assigned Managed identity clientId as generated by Azure AD, which has GET access to the keyVault containing the SSL certificate.
     * 
     */
    public Optional> identityClientId() {
        return Optional.ofNullable(this.identityClientId);
    }

    /**
     * Url to the KeyVault Secret containing the Ssl Certificate. If absolute Url containing version is provided, auto-update of ssl certificate will not work. This requires Api Management service to be configured with aka.ms/apimmsi. The secret should be of type *application/x-pkcs12*
     * 
     */
    @Import(name="keyVaultId")
    private @Nullable Output keyVaultId;

    /**
     * @return Url to the KeyVault Secret containing the Ssl Certificate. If absolute Url containing version is provided, auto-update of ssl certificate will not work. This requires Api Management service to be configured with aka.ms/apimmsi. The secret should be of type *application/x-pkcs12*
     * 
     */
    public Optional> keyVaultId() {
        return Optional.ofNullable(this.keyVaultId);
    }

    /**
     * Specify true to always negotiate client certificate on the hostname. Default Value is false.
     * 
     */
    @Import(name="negotiateClientCertificate")
    private @Nullable Output negotiateClientCertificate;

    /**
     * @return Specify true to always negotiate client certificate on the hostname. Default Value is false.
     * 
     */
    public Optional> negotiateClientCertificate() {
        return Optional.ofNullable(this.negotiateClientCertificate);
    }

    /**
     * Hostname type.
     * 
     */
    @Import(name="type", required=true)
    private Output> type;

    /**
     * @return Hostname type.
     * 
     */
    public Output> type() {
        return this.type;
    }

    private HostnameConfigurationArgs() {}

    private HostnameConfigurationArgs(HostnameConfigurationArgs $) {
        this.certificate = $.certificate;
        this.certificatePassword = $.certificatePassword;
        this.certificateSource = $.certificateSource;
        this.certificateStatus = $.certificateStatus;
        this.defaultSslBinding = $.defaultSslBinding;
        this.encodedCertificate = $.encodedCertificate;
        this.hostName = $.hostName;
        this.identityClientId = $.identityClientId;
        this.keyVaultId = $.keyVaultId;
        this.negotiateClientCertificate = $.negotiateClientCertificate;
        this.type = $.type;
    }

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

    public static final class Builder {
        private HostnameConfigurationArgs $;

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

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

        /**
         * @param certificate Certificate information.
         * 
         * @return builder
         * 
         */
        public Builder certificate(@Nullable Output certificate) {
            $.certificate = certificate;
            return this;
        }

        /**
         * @param certificate Certificate information.
         * 
         * @return builder
         * 
         */
        public Builder certificate(CertificateInformationArgs certificate) {
            return certificate(Output.of(certificate));
        }

        /**
         * @param certificatePassword Certificate Password.
         * 
         * @return builder
         * 
         */
        public Builder certificatePassword(@Nullable Output certificatePassword) {
            $.certificatePassword = certificatePassword;
            return this;
        }

        /**
         * @param certificatePassword Certificate Password.
         * 
         * @return builder
         * 
         */
        public Builder certificatePassword(String certificatePassword) {
            return certificatePassword(Output.of(certificatePassword));
        }

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

        /**
         * @param certificateSource Certificate Source.
         * 
         * @return builder
         * 
         */
        public Builder certificateSource(Either certificateSource) {
            return certificateSource(Output.of(certificateSource));
        }

        /**
         * @param certificateSource Certificate Source.
         * 
         * @return builder
         * 
         */
        public Builder certificateSource(String certificateSource) {
            return certificateSource(Either.ofLeft(certificateSource));
        }

        /**
         * @param certificateSource Certificate Source.
         * 
         * @return builder
         * 
         */
        public Builder certificateSource(CertificateSource certificateSource) {
            return certificateSource(Either.ofRight(certificateSource));
        }

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

        /**
         * @param certificateStatus Certificate Status.
         * 
         * @return builder
         * 
         */
        public Builder certificateStatus(Either certificateStatus) {
            return certificateStatus(Output.of(certificateStatus));
        }

        /**
         * @param certificateStatus Certificate Status.
         * 
         * @return builder
         * 
         */
        public Builder certificateStatus(String certificateStatus) {
            return certificateStatus(Either.ofLeft(certificateStatus));
        }

        /**
         * @param certificateStatus Certificate Status.
         * 
         * @return builder
         * 
         */
        public Builder certificateStatus(CertificateStatus certificateStatus) {
            return certificateStatus(Either.ofRight(certificateStatus));
        }

        /**
         * @param defaultSslBinding Specify true to setup the certificate associated with this Hostname as the Default SSL Certificate. If a client does not send the SNI header, then this will be the certificate that will be challenged. The property is useful if a service has multiple custom hostname enabled and it needs to decide on the default ssl certificate. The setting only applied to gateway Hostname Type.
         * 
         * @return builder
         * 
         */
        public Builder defaultSslBinding(@Nullable Output defaultSslBinding) {
            $.defaultSslBinding = defaultSslBinding;
            return this;
        }

        /**
         * @param defaultSslBinding Specify true to setup the certificate associated with this Hostname as the Default SSL Certificate. If a client does not send the SNI header, then this will be the certificate that will be challenged. The property is useful if a service has multiple custom hostname enabled and it needs to decide on the default ssl certificate. The setting only applied to gateway Hostname Type.
         * 
         * @return builder
         * 
         */
        public Builder defaultSslBinding(Boolean defaultSslBinding) {
            return defaultSslBinding(Output.of(defaultSslBinding));
        }

        /**
         * @param encodedCertificate Base64 Encoded certificate.
         * 
         * @return builder
         * 
         */
        public Builder encodedCertificate(@Nullable Output encodedCertificate) {
            $.encodedCertificate = encodedCertificate;
            return this;
        }

        /**
         * @param encodedCertificate Base64 Encoded certificate.
         * 
         * @return builder
         * 
         */
        public Builder encodedCertificate(String encodedCertificate) {
            return encodedCertificate(Output.of(encodedCertificate));
        }

        /**
         * @param hostName Hostname to configure on the Api Management service.
         * 
         * @return builder
         * 
         */
        public Builder hostName(Output hostName) {
            $.hostName = hostName;
            return this;
        }

        /**
         * @param hostName Hostname to configure on the Api Management service.
         * 
         * @return builder
         * 
         */
        public Builder hostName(String hostName) {
            return hostName(Output.of(hostName));
        }

        /**
         * @param identityClientId System or User Assigned Managed identity clientId as generated by Azure AD, which has GET access to the keyVault containing the SSL certificate.
         * 
         * @return builder
         * 
         */
        public Builder identityClientId(@Nullable Output identityClientId) {
            $.identityClientId = identityClientId;
            return this;
        }

        /**
         * @param identityClientId System or User Assigned Managed identity clientId as generated by Azure AD, which has GET access to the keyVault containing the SSL certificate.
         * 
         * @return builder
         * 
         */
        public Builder identityClientId(String identityClientId) {
            return identityClientId(Output.of(identityClientId));
        }

        /**
         * @param keyVaultId Url to the KeyVault Secret containing the Ssl Certificate. If absolute Url containing version is provided, auto-update of ssl certificate will not work. This requires Api Management service to be configured with aka.ms/apimmsi. The secret should be of type *application/x-pkcs12*
         * 
         * @return builder
         * 
         */
        public Builder keyVaultId(@Nullable Output keyVaultId) {
            $.keyVaultId = keyVaultId;
            return this;
        }

        /**
         * @param keyVaultId Url to the KeyVault Secret containing the Ssl Certificate. If absolute Url containing version is provided, auto-update of ssl certificate will not work. This requires Api Management service to be configured with aka.ms/apimmsi. The secret should be of type *application/x-pkcs12*
         * 
         * @return builder
         * 
         */
        public Builder keyVaultId(String keyVaultId) {
            return keyVaultId(Output.of(keyVaultId));
        }

        /**
         * @param negotiateClientCertificate Specify true to always negotiate client certificate on the hostname. Default Value is false.
         * 
         * @return builder
         * 
         */
        public Builder negotiateClientCertificate(@Nullable Output negotiateClientCertificate) {
            $.negotiateClientCertificate = negotiateClientCertificate;
            return this;
        }

        /**
         * @param negotiateClientCertificate Specify true to always negotiate client certificate on the hostname. Default Value is false.
         * 
         * @return builder
         * 
         */
        public Builder negotiateClientCertificate(Boolean negotiateClientCertificate) {
            return negotiateClientCertificate(Output.of(negotiateClientCertificate));
        }

        /**
         * @param type Hostname type.
         * 
         * @return builder
         * 
         */
        public Builder type(Output> type) {
            $.type = type;
            return this;
        }

        /**
         * @param type Hostname type.
         * 
         * @return builder
         * 
         */
        public Builder type(Either type) {
            return type(Output.of(type));
        }

        /**
         * @param type Hostname type.
         * 
         * @return builder
         * 
         */
        public Builder type(String type) {
            return type(Either.ofLeft(type));
        }

        /**
         * @param type Hostname type.
         * 
         * @return builder
         * 
         */
        public Builder type(HostnameType type) {
            return type(Either.ofRight(type));
        }

        public HostnameConfigurationArgs build() {
            $.defaultSslBinding = Codegen.booleanProp("defaultSslBinding").output().arg($.defaultSslBinding).def(false).getNullable();
            if ($.hostName == null) {
                throw new MissingRequiredPropertyException("HostnameConfigurationArgs", "hostName");
            }
            $.negotiateClientCertificate = Codegen.booleanProp("negotiateClientCertificate").output().arg($.negotiateClientCertificate).def(false).getNullable();
            if ($.type == null) {
                throw new MissingRequiredPropertyException("HostnameConfigurationArgs", "type");
            }
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy