// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>

namespace k8s.Models
{
    using Newtonsoft.Json;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;

    /// <summary>
    /// API server instances report the versions they can decode and the
    /// version they encode objects to when persisting objects in the backend.
    /// </summary>
    public partial class V1alpha1StorageVersionStatus
    {
        /// <summary>
        /// Initializes a new instance of the V1alpha1StorageVersionStatus
        /// class.
        /// </summary>
        public V1alpha1StorageVersionStatus()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the V1alpha1StorageVersionStatus
        /// class.
        /// </summary>
        /// <param name="commonEncodingVersion">If all API server instances
        /// agree on the same encoding storage version, then this field is set
        /// to that version. Otherwise this field is left empty. API servers
        /// should finish updating its storageVersionStatus entry before
        /// serving write operations, so that this field will be in sync with
        /// the reality.</param>
        /// <param name="conditions">The latest available observations of the
        /// storageVersion's state.</param>
        /// <param name="storageVersions">The reported versions per API server
        /// instance.</param>
        public V1alpha1StorageVersionStatus(string commonEncodingVersion = default(string), IList<V1alpha1StorageVersionCondition> conditions = default(IList<V1alpha1StorageVersionCondition>), IList<V1alpha1ServerStorageVersion> storageVersions = default(IList<V1alpha1ServerStorageVersion>))
        {
            CommonEncodingVersion = commonEncodingVersion;
            Conditions = conditions;
            StorageVersions = storageVersions;
            CustomInit();
        }

        /// <summary>
        /// An initialization method that performs custom operations like setting defaults
        /// </summary>
        partial void CustomInit();

        /// <summary>
        /// Gets or sets if all API server instances agree on the same encoding
        /// storage version, then this field is set to that version. Otherwise
        /// this field is left empty. API servers should finish updating its
        /// storageVersionStatus entry before serving write operations, so that
        /// this field will be in sync with the reality.
        /// </summary>
        [JsonProperty(PropertyName = "commonEncodingVersion")]
        public string CommonEncodingVersion { get; set; }

        /// <summary>
        /// Gets or sets the latest available observations of the
        /// storageVersion's state.
        /// </summary>
        [JsonProperty(PropertyName = "conditions")]
        public IList<V1alpha1StorageVersionCondition> Conditions { get; set; }

        /// <summary>
        /// Gets or sets the reported versions per API server instance.
        /// </summary>
        [JsonProperty(PropertyName = "storageVersions")]
        public IList<V1alpha1ServerStorageVersion> StorageVersions { get; set; }

    }
}
