private/api/Nutanix/Powershell/Models/ClusterConfig.cs

namespace Nutanix.Powershell.Models
{
    using static Microsoft.Rest.ClientRuntime.Extensions;
    /// <summary>Cluster Configuration.</summary>
    public partial class ClusterConfig : Nutanix.Powershell.Models.IClusterConfig, Microsoft.Rest.ClientRuntime.IValidates
    {
        /// <summary>Backing field for <see cref="AuthorizedPublicKeyList" /> property.</summary>
        private Nutanix.Powershell.Models.IPublicKey[] _authorizedPublicKeyList;

        /// <summary>List of valid ssh keys for the cluster.</summary>
        public Nutanix.Powershell.Models.IPublicKey[] AuthorizedPublicKeyList
        {
            get
            {
                return this._authorizedPublicKeyList;
            }
            set
            {
                this._authorizedPublicKeyList = value;
            }
        }
        /// <summary>Backing field for <see cref="Build" /> property.</summary>
        private Nutanix.Powershell.Models.IBuildInfo _build;

        /// <summary>Cluster build details.</summary>
        public Nutanix.Powershell.Models.IBuildInfo Build
        {
            get
            {
                return this._build;
            }
            set
            {
                this._build = value;
            }
        }
        /// <summary>Backing field for <see cref="CaCertificateList" /> property.</summary>
        private Nutanix.Powershell.Models.ICaCert[] _caCertificateList;

        /// <summary>List of cluster trusted CA certificates.</summary>
        public Nutanix.Powershell.Models.ICaCert[] CaCertificateList
        {
            get
            {
                return this._caCertificateList;
            }
            set
            {
                this._caCertificateList = value;
            }
        }
        /// <summary>Backing field for <see cref="CertificationSigningInfo" /> property.</summary>
        private Nutanix.Powershell.Models.ICertificationSigningInfo _certificationSigningInfo;

        /// <summary>
        /// Customer information used in Certificate Signing Request for
        /// creating digital certificates.
        /// </summary>
        public Nutanix.Powershell.Models.ICertificationSigningInfo CertificationSigningInfo
        {
            get
            {
                return this._certificationSigningInfo;
            }
            set
            {
                this._certificationSigningInfo = value;
            }
        }
        /// <summary>Backing field for <see cref="ClientAuth" /> property.</summary>
        private Nutanix.Powershell.Models.IClientAuth _clientAuth;

        /// <summary>Client authentication config.</summary>
        public Nutanix.Powershell.Models.IClientAuth ClientAuth
        {
            get
            {
                return this._clientAuth;
            }
            set
            {
                this._clientAuth = value;
            }
        }
        /// <summary>Backing field for <see cref="ClusterArch" /> property.</summary>
        private string _clusterArch;

        /// <summary>Cluster architecture.</summary>
        public string ClusterArch
        {
            get
            {
                return this._clusterArch;
            }
            set
            {
                this._clusterArch = value;
            }
        }
        /// <summary>Backing field for <see cref="EnabledFeatureList" /> property.</summary>
        private string[] _enabledFeatureList;

        /// <summary>Array of enabled features.</summary>
        public string[] EnabledFeatureList
        {
            get
            {
                return this._enabledFeatureList;
            }
            set
            {
                this._enabledFeatureList = value;
            }
        }
        /// <summary>Backing field for <see cref="EncryptionStatus" /> property.</summary>
        private string _encryptionStatus;

        /// <summary>Cluster encryption status.</summary>
        public string EncryptionStatus
        {
            get
            {
                return this._encryptionStatus;
            }
            set
            {
                this._encryptionStatus = value;
            }
        }
        /// <summary>Backing field for <see cref="ExternalConfigurations" /> property.</summary>
        private Nutanix.Powershell.Models.IExternalConfigurations _externalConfigurations;

        /// <summary>External Connector Configurations.</summary>
        public Nutanix.Powershell.Models.IExternalConfigurations ExternalConfigurations
        {
            get
            {
                return this._externalConfigurations;
            }
            set
            {
                this._externalConfigurations = value;
            }
        }
        /// <summary>Backing field for <see cref="GpuDriverVersion" /> property.</summary>
        private string _gpuDriverVersion;

        /// <summary>GPU driver version.</summary>
        public string GpuDriverVersion
        {
            get
            {
                return this._gpuDriverVersion;
            }
            set
            {
                this._gpuDriverVersion = value;
            }
        }
        /// <summary>Backing field for <see cref="IsAvailable" /> property.</summary>
        private bool? _isAvailable;

        /// <summary>Indicates if cluster is available to contact.</summary>
        public bool? IsAvailable
        {
            get
            {
                return this._isAvailable;
            }
            set
            {
                this._isAvailable = value;
            }
        }
        /// <summary>Backing field for <see cref="ManagementServerList" /> property.</summary>
        private Nutanix.Powershell.Models.IClusterManagementServer[] _managementServerList;

        /// <summary>List of cluster management servers.</summary>
        public Nutanix.Powershell.Models.IClusterManagementServer[] ManagementServerList
        {
            get
            {
                return this._managementServerList;
            }
            set
            {
                this._managementServerList = value;
            }
        }
        /// <summary>Backing field for <see cref="OperationMode" /> property.</summary>
        private string _operationMode;

        /// <summary>
        /// Cluster operation mode. - 'NORMAL': Cluster is operating normally. - 'READ_ONLY': Cluster is operating in read only mode.
        /// - 'STAND_ALONE': Only one node is operational in the cluster. This is
        /// valid only for single node or two node clusters.
        /// - 'SWITCH_TO_TWO_NODE': Cluster is moving from single node to two node
        /// cluster.
        /// - 'OVERRIDE': Valid only for single node cluster. If the user wants to
        /// run vms on a single node cluster in read only mode, he
        /// can set the cluster peration mode to override. Writes
        /// will be allowed in override mode.
        /// </summary>
        public string OperationMode
        {
            get
            {
                return this._operationMode;
            }
            set
            {
                this._operationMode = value;
            }
        }
        /// <summary>Backing field for <see cref="RedundancyFactor" /> property.</summary>
        private int? _redundancyFactor;

        /// <summary>Cluster supported redundancy factor.</summary>
        public int? RedundancyFactor
        {
            get
            {
                return this._redundancyFactor;
            }
            set
            {
                this._redundancyFactor = value;
            }
        }
        /// <summary>Backing field for <see cref="ServiceList" /> property.</summary>
        private string[] _serviceList;

        /// <summary>
        /// Array of enabled cluster services. For example, a cluster can function
        /// as both AOS and cloud data gateway.
        /// - 'AOS': Regular Prism Element
        /// - 'PRISM_CENTRAL': Prism Central
        /// - 'CLOUD_DATA_GATEWAY': Cloud backup and DR gateway
        /// - 'AFS': Cluster for file server
        /// - 'WITNESS' : Witness cluster
        /// - 'XI_PORTAL': Xi cluster
        /// - 'ONE_NODE_CLUSTER': Single node backup cluster
        /// - 'TWO_NODE_CLUSTER': Two node cluster
        /// </summary>
        public string[] ServiceList
        {
            get
            {
                return this._serviceList;
            }
            set
            {
                this._serviceList = value;
            }
        }
        /// <summary>Backing field for <see cref="SoftwareMap" /> property.</summary>
        private System.Collections.Generic.IDictionary<string,Nutanix.Powershell.Models.IClusterSoftware> _softwareMap;

        /// <summary>
        /// Map of software on the cluster with software type as the
        /// key.
        /// </summary>
        public System.Collections.Generic.IDictionary<string,Nutanix.Powershell.Models.IClusterSoftware> SoftwareMap
        {
            get
            {
                return this._softwareMap;
            }
            set
            {
                this._softwareMap = value;
            }
        }
        /// <summary>Backing field for <see cref="SslKey" /> property.</summary>
        private Nutanix.Powershell.Models.ISslKey _sslKey;

        /// <summary>SSL certificate.</summary>
        public Nutanix.Powershell.Models.ISslKey SslKey
        {
            get
            {
                return this._sslKey;
            }
            set
            {
                this._sslKey = value;
            }
        }
        /// <summary>Backing field for <see cref="SupportedInformationVerbosity" /> property.</summary>
        private string _supportedInformationVerbosity;

        /// <summary>
        /// Verbosity level settings for populating support information.
        /// - 'Nothing': Send nothing
        /// - 'Basic': Send basic information - skip core dump and hypervisor
        /// stats information
        /// - 'BasicPlusCoreDump': Send basic and core dump information
        /// - 'All': Send all information
        /// </summary>
        public string SupportedInformationVerbosity
        {
            get
            {
                return this._supportedInformationVerbosity;
            }
            set
            {
                this._supportedInformationVerbosity = value;
            }
        }
        /// <summary>Backing field for <see cref="Timezone" /> property.</summary>
        private string _timezone;

        /// <summary>Zone name used in value of TZ environment variable.</summary>
        public string Timezone
        {
            get
            {
                return this._timezone;
            }
            set
            {
                this._timezone = value;
            }
        }
        /// <summary>Creates an new <see cref="ClusterConfig" /> instance.</summary>
        public ClusterConfig()
        {
        }
        /// <summary>Validates that this object meets the validation criteria.</summary>
        /// <param name="eventListener">an <see cref="Microsoft.Rest.ClientRuntime.IEventListener" /> instance that will receive validation
        /// events.</param>
        /// <returns>
        /// A <see cref="System.Threading.Tasks.Task" /> that will be complete when validation is completed.
        /// </returns>
        public async System.Threading.Tasks.Task Validate(Microsoft.Rest.ClientRuntime.IEventListener eventListener)
        {
            if (AuthorizedPublicKeyList != null ) {
                    for (int __i = 0; __i < AuthorizedPublicKeyList.Length; __i++) {
                      await eventListener.AssertObjectIsValid($"AuthorizedPublicKeyList[{__i}]", AuthorizedPublicKeyList[__i]);
                    }
                  }
            await eventListener.AssertObjectIsValid(nameof(Build), Build);
            if (CaCertificateList != null ) {
                    for (int __i = 0; __i < CaCertificateList.Length; __i++) {
                      await eventListener.AssertObjectIsValid($"CaCertificateList[{__i}]", CaCertificateList[__i]);
                    }
                  }
            await eventListener.AssertObjectIsValid(nameof(CertificationSigningInfo), CertificationSigningInfo);
            await eventListener.AssertObjectIsValid(nameof(ClientAuth), ClientAuth);
            await eventListener.AssertObjectIsValid(nameof(ExternalConfigurations), ExternalConfigurations);
            if (ManagementServerList != null ) {
                    for (int __i = 0; __i < ManagementServerList.Length; __i++) {
                      await eventListener.AssertObjectIsValid($"ManagementServerList[{__i}]", ManagementServerList[__i]);
                    }
                  }
            await eventListener.AssertObjectIsValid(nameof(SslKey), SslKey);
        }
    }
    /// Cluster Configuration.
    public partial interface IClusterConfig : Microsoft.Rest.ClientRuntime.IJsonSerializable {
        Nutanix.Powershell.Models.IPublicKey[] AuthorizedPublicKeyList { get; set; }
        Nutanix.Powershell.Models.IBuildInfo Build { get; set; }
        Nutanix.Powershell.Models.ICaCert[] CaCertificateList { get; set; }
        Nutanix.Powershell.Models.ICertificationSigningInfo CertificationSigningInfo { get; set; }
        Nutanix.Powershell.Models.IClientAuth ClientAuth { get; set; }
        string ClusterArch { get; set; }
        string[] EnabledFeatureList { get; set; }
        string EncryptionStatus { get; set; }
        Nutanix.Powershell.Models.IExternalConfigurations ExternalConfigurations { get; set; }
        string GpuDriverVersion { get; set; }
        bool? IsAvailable { get; set; }
        Nutanix.Powershell.Models.IClusterManagementServer[] ManagementServerList { get; set; }
        string OperationMode { get; set; }
        int? RedundancyFactor { get; set; }
        string[] ServiceList { get; set; }
        System.Collections.Generic.IDictionary<string,Nutanix.Powershell.Models.IClusterSoftware> SoftwareMap { get; set; }
        Nutanix.Powershell.Models.ISslKey SslKey { get; set; }
        string SupportedInformationVerbosity { get; set; }
        string Timezone { get; set; }
    }
}