/*
 * 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>
    /// GetClusterConfigJoin200ResponseDataNodelistInner
    /// </summary>
    [DataContract(Name = "getClusterConfigJoin_200_response_data_nodelist_inner")]
    public partial class GetClusterConfigJoin200ResponseDataNodelistInner : IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GetClusterConfigJoin200ResponseDataNodelistInner" /> class.
        /// </summary>
        /// <param name="name">The cluster node name..</param>
        /// <param name="nodeid">Node id for this node..</param>
        /// <param name="pveAddr">pveAddr.</param>
        /// <param name="pveFp">Certificate SHA 256 fingerprint..</param>
        /// <param name="quorumVotes">quorumVotes.</param>
        /// <param name="ring0Addr">Address and priority information of a single corosync link. (up to 8 links supported; link0..link7).</param>
        public GetClusterConfigJoin200ResponseDataNodelistInner(string name = default(string), Int64 nodeid = default(Int64), string pveAddr = default(string), string pveFp = default(string), Int64 quorumVotes = default(Int64), string ring0Addr = default(string))
        {
            this.Name = name;
            this.Nodeid = nodeid;
            this.PveAddr = pveAddr;
            this.PveFp = pveFp;
            this.QuorumVotes = quorumVotes;
            this.Ring0Addr = ring0Addr;
        }

        /// <summary>
        /// The cluster node name.
        /// </summary>
        /// <value>The cluster node name.</value>
        [DataMember(Name = "name", EmitDefaultValue = false)]
        public string Name { get; set; }

        /// <summary>
        /// Node id for this node.
        /// </summary>
        /// <value>Node id for this node.</value>
        [DataMember(Name = "nodeid", EmitDefaultValue = false)]
        public Int64 Nodeid { get; set; }

        /// <summary>
        /// Gets or Sets PveAddr
        /// </summary>
        [DataMember(Name = "pve_addr", EmitDefaultValue = false)]
        public string PveAddr { get; set; }

        /// <summary>
        /// Certificate SHA 256 fingerprint.
        /// </summary>
        /// <value>Certificate SHA 256 fingerprint.</value>
        [DataMember(Name = "pve_fp", EmitDefaultValue = false)]
        public string PveFp { get; set; }

        /// <summary>
        /// Gets or Sets QuorumVotes
        /// </summary>
        [DataMember(Name = "quorum_votes", EmitDefaultValue = false)]
        public Int64 QuorumVotes { get; set; }

        /// <summary>
        /// Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)
        /// </summary>
        /// <value>Address and priority information of a single corosync link. (up to 8 links supported; link0..link7)</value>
        [DataMember(Name = "ring0_addr", EmitDefaultValue = false)]
        public string Ring0Addr { 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 GetClusterConfigJoin200ResponseDataNodelistInner {\n");
            sb.Append("  Name: ").Append(Name).Append("\n");
            sb.Append("  Nodeid: ").Append(Nodeid).Append("\n");
            sb.Append("  PveAddr: ").Append(PveAddr).Append("\n");
            sb.Append("  PveFp: ").Append(PveFp).Append("\n");
            sb.Append("  QuorumVotes: ").Append(QuorumVotes).Append("\n");
            sb.Append("  Ring0Addr: ").Append(Ring0Addr).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;
        }
    }

}
