namespace Microsoft.Azure.Management.WebSites.Models
{
    using Newtonsoft.Json;
    using System.Linq;

    public partial class ArcConfiguration
    {
        /// <summary>
        /// Initializes a new instance of the ArcConfiguration class.
        /// </summary>
        public ArcConfiguration()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the ArcConfiguration class.
        /// </summary>
        /// <param name="artifactsStorageType">Possible values include:
        /// 'LocalNode', 'NetworkFileSystem'</param>
        public ArcConfiguration(StorageType? artifactsStorageType = default(StorageType?), string artifactStorageClassName = default(string), string artifactStorageMountPath = default(string), string artifactStorageNodeName = default(string), string artifactStorageAccessMode = default(string), FrontEndConfiguration frontEndServiceConfiguration = default(FrontEndConfiguration), string kubeConfig = default(string))
        {
            ArtifactsStorageType = artifactsStorageType;
            ArtifactStorageClassName = artifactStorageClassName;
            ArtifactStorageMountPath = artifactStorageMountPath;
            ArtifactStorageNodeName = artifactStorageNodeName;
            ArtifactStorageAccessMode = artifactStorageAccessMode;
            FrontEndServiceConfiguration = frontEndServiceConfiguration;
            KubeConfig = kubeConfig;
            CustomInit();
        }

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

        /// <summary>
        /// Gets or sets possible values include: 'LocalNode',
        /// 'NetworkFileSystem'
        /// </summary>
        [JsonProperty(PropertyName = "artifactsStorageType")]
        public StorageType? ArtifactsStorageType { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "artifactStorageClassName")]
        public string ArtifactStorageClassName { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "artifactStorageMountPath")]
        public string ArtifactStorageMountPath { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "artifactStorageNodeName")]
        public string ArtifactStorageNodeName { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "artifactStorageAccessMode")]
        public string ArtifactStorageAccessMode { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "frontEndServiceConfiguration")]
        public FrontEndConfiguration FrontEndServiceConfiguration { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "kubeConfig")]
        public string KubeConfig { get; set; }

    }
}
