// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Immutable;

namespace PiersKarsenbarg.Nutanix
{
    public static class Config
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "IDE1006", Justification = 
        "Double underscore prefix used to avoid conflicts with variable names.")]
        private sealed class __Value<T>
        {
            private readonly Func<T> _getter;
            private T _value = default!;
            private bool _set;

            public __Value(Func<T> getter)
            {
                _getter = getter;
            }

            public T Get() => _set ? _value : _getter();

            public void Set(T value)
            {
                _value = value;
                _set = true;
            }
        }

        private static readonly Pulumi.Config __config = new Pulumi.Config("nutanix");

        private static readonly __Value<string?> _endpoint = new __Value<string?>(() => __config.Get("endpoint"));
        /// <summary>
        /// URL for Nutanix Prism (e.g IP or FQDN for cluster VIP note, this is never the data services VIP, and should not be an
        /// individual CVM address, as this would cause calls to fail during cluster lifecycle management operations, such as AOS
        /// upgrades.
        /// </summary>
        public static string? Endpoint
        {
            get => _endpoint.Get();
            set => _endpoint.Set(value);
        }

        private static readonly __Value<string?> _foundationEndpoint = new __Value<string?>(() => __config.Get("foundationEndpoint"));
        /// <summary>
        /// endpoint for foundation VM (eg. Foundation VM IP)
        /// </summary>
        public static string? FoundationEndpoint
        {
            get => _foundationEndpoint.Get();
            set => _foundationEndpoint.Set(value);
        }

        private static readonly __Value<string?> _foundationPort = new __Value<string?>(() => __config.Get("foundationPort"));
        /// <summary>
        /// Port for foundation VM
        /// </summary>
        public static string? FoundationPort
        {
            get => _foundationPort.Get();
            set => _foundationPort.Set(value);
        }

        private static readonly __Value<bool?> _insecure = new __Value<bool?>(() => __config.GetBoolean("insecure"));
        /// <summary>
        /// Explicitly allow the provider to perform "insecure" SSL requests. If omitted,default value is `false`
        /// </summary>
        public static bool? Insecure
        {
            get => _insecure.Get();
            set => _insecure.Set(value);
        }

        private static readonly __Value<string?> _password = new __Value<string?>(() => __config.Get("password"));
        /// <summary>
        /// Password for provided user name.
        /// </summary>
        public static string? Password
        {
            get => _password.Get();
            set => _password.Set(value);
        }

        private static readonly __Value<string?> _port = new __Value<string?>(() => __config.Get("port"));
        /// <summary>
        /// Port for Nutanix Prism.
        /// </summary>
        public static string? Port
        {
            get => _port.Get();
            set => _port.Set(value);
        }

        private static readonly __Value<string?> _proxyUrl = new __Value<string?>(() => __config.Get("proxyUrl"));
        public static string? ProxyUrl
        {
            get => _proxyUrl.Get();
            set => _proxyUrl.Set(value);
        }

        private static readonly __Value<bool?> _sessionAuth = new __Value<bool?>(() => __config.GetBoolean("sessionAuth"));
        /// <summary>
        /// Use session authentification instead of basic auth for each request
        /// </summary>
        public static bool? SessionAuth
        {
            get => _sessionAuth.Get();
            set => _sessionAuth.Set(value);
        }

        private static readonly __Value<string?> _username = new __Value<string?>(() => __config.Get("username"));
        /// <summary>
        /// User name for Nutanix Prism. Could be local cluster auth (e.g. 'admin') or directory auth.
        /// </summary>
        public static string? Username
        {
            get => _username.Get();
            set => _username.Set(value);
        }

        private static readonly __Value<int?> _waitTimeout = new __Value<int?>(() => __config.GetInt32("waitTimeout"));
        /// <summary>
        /// Set if you know that the creation o update of a resource may take long time (minutes)
        /// </summary>
        public static int? WaitTimeout
        {
            get => _waitTimeout.Get();
            set => _waitTimeout.Set(value);
        }

    }
}
