/*
 * ProxMox VE API
 *
 * ProxMox VE API
 *
 * The version of the OpenAPI document: 2.0
 * Contact: support@lumaserv.com
 * Generated by: https://github.com/openapitools/openapi-generator.git
 */


using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Runtime.Serialization;
using System.Text;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System.ComponentModel.DataAnnotations;
using OpenAPIDateConverter = ProxmoxSharp.Client.OpenAPIDateConverter;

namespace ProxmoxSharp.Model
{
    /// <summary>
    /// UpdateClusterCephFlagsRequest
    /// </summary>
    [DataContract(Name = "UpdateClusterCephFlagsRequest")]
    public partial class UpdateClusterCephFlagsRequest : IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="UpdateClusterCephFlagsRequest" /> class.
        /// </summary>
        /// <param name="nobackfill">nobackfill.</param>
        /// <param name="nodeepScrub">nodeepScrub.</param>
        /// <param name="nodown">nodown.</param>
        /// <param name="noin">noin.</param>
        /// <param name="noout">noout.</param>
        /// <param name="norebalance">norebalance.</param>
        /// <param name="norecover">norecover.</param>
        /// <param name="noscrub">noscrub.</param>
        /// <param name="notieragent">notieragent.</param>
        /// <param name="noup">noup.</param>
        /// <param name="pause">pause.</param>
        public UpdateClusterCephFlagsRequest(bool nobackfill = default(bool), bool nodeepScrub = default(bool), bool nodown = default(bool), bool noin = default(bool), bool noout = default(bool), bool norebalance = default(bool), bool norecover = default(bool), bool noscrub = default(bool), bool notieragent = default(bool), bool noup = default(bool), bool pause = default(bool))
        {
            this.Nobackfill = nobackfill;
            this.NodeepScrub = nodeepScrub;
            this.Nodown = nodown;
            this.Noin = noin;
            this.Noout = noout;
            this.Norebalance = norebalance;
            this.Norecover = norecover;
            this.Noscrub = noscrub;
            this.Notieragent = notieragent;
            this.Noup = noup;
            this.Pause = pause;
        }

        /// <summary>
        /// Gets or Sets Nobackfill
        /// </summary>
        [DataMember(Name = "nobackfill", EmitDefaultValue = true)]
        public bool Nobackfill { get; set; }

        /// <summary>
        /// Gets or Sets NodeepScrub
        /// </summary>
        [DataMember(Name = "nodeep-scrub", EmitDefaultValue = true)]
        public bool NodeepScrub { get; set; }

        /// <summary>
        /// Gets or Sets Nodown
        /// </summary>
        [DataMember(Name = "nodown", EmitDefaultValue = true)]
        public bool Nodown { get; set; }

        /// <summary>
        /// Gets or Sets Noin
        /// </summary>
        [DataMember(Name = "noin", EmitDefaultValue = true)]
        public bool Noin { get; set; }

        /// <summary>
        /// Gets or Sets Noout
        /// </summary>
        [DataMember(Name = "noout", EmitDefaultValue = true)]
        public bool Noout { get; set; }

        /// <summary>
        /// Gets or Sets Norebalance
        /// </summary>
        [DataMember(Name = "norebalance", EmitDefaultValue = true)]
        public bool Norebalance { get; set; }

        /// <summary>
        /// Gets or Sets Norecover
        /// </summary>
        [DataMember(Name = "norecover", EmitDefaultValue = true)]
        public bool Norecover { get; set; }

        /// <summary>
        /// Gets or Sets Noscrub
        /// </summary>
        [DataMember(Name = "noscrub", EmitDefaultValue = true)]
        public bool Noscrub { get; set; }

        /// <summary>
        /// Gets or Sets Notieragent
        /// </summary>
        [DataMember(Name = "notieragent", EmitDefaultValue = true)]
        public bool Notieragent { get; set; }

        /// <summary>
        /// Gets or Sets Noup
        /// </summary>
        [DataMember(Name = "noup", EmitDefaultValue = true)]
        public bool Noup { get; set; }

        /// <summary>
        /// Gets or Sets Pause
        /// </summary>
        [DataMember(Name = "pause", EmitDefaultValue = true)]
        public bool Pause { get; set; }

        /// <summary>
        /// Returns the string presentation of the object
        /// </summary>
        /// <returns>String presentation of the object</returns>
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("class UpdateClusterCephFlagsRequest {\n");
            sb.Append("  Nobackfill: ").Append(Nobackfill).Append("\n");
            sb.Append("  NodeepScrub: ").Append(NodeepScrub).Append("\n");
            sb.Append("  Nodown: ").Append(Nodown).Append("\n");
            sb.Append("  Noin: ").Append(Noin).Append("\n");
            sb.Append("  Noout: ").Append(Noout).Append("\n");
            sb.Append("  Norebalance: ").Append(Norebalance).Append("\n");
            sb.Append("  Norecover: ").Append(Norecover).Append("\n");
            sb.Append("  Noscrub: ").Append(Noscrub).Append("\n");
            sb.Append("  Notieragent: ").Append(Notieragent).Append("\n");
            sb.Append("  Noup: ").Append(Noup).Append("\n");
            sb.Append("  Pause: ").Append(Pause).Append("\n");
            sb.Append("}\n");
            return sb.ToString();
        }

        /// <summary>
        /// Returns the JSON string presentation of the object
        /// </summary>
        /// <returns>JSON string presentation of the object</returns>
        public virtual string ToJson()
        {
            return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
        }

        /// <summary>
        /// To validate all properties of the instance
        /// </summary>
        /// <param name="validationContext">Validation context</param>
        /// <returns>Validation Result</returns>
        IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext)
        {
            yield break;
        }
    }

}
