// <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>
    /// Scheduling specifies the scheduling constraints for nodes supporting a
    /// RuntimeClass.
    /// </summary>
    public partial class V1beta1Scheduling
    {
        /// <summary>
        /// Initializes a new instance of the V1beta1Scheduling class.
        /// </summary>
        public V1beta1Scheduling()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the V1beta1Scheduling class.
        /// </summary>
        /// <param name="nodeSelector">nodeSelector lists labels that must be
        /// present on nodes that support this RuntimeClass. Pods using this
        /// RuntimeClass can only be scheduled to a node matched by this
        /// selector. The RuntimeClass nodeSelector is merged with a pod's
        /// existing nodeSelector. Any conflicts will cause the pod to be
        /// rejected in admission.</param>
        /// <param name="tolerations">tolerations are appended (excluding
        /// duplicates) to pods running with this RuntimeClass during
        /// admission, effectively unioning the set of nodes tolerated by the
        /// pod and the RuntimeClass.</param>
        public V1beta1Scheduling(IDictionary<string, string> nodeSelector = default(IDictionary<string, string>), IList<V1Toleration> tolerations = default(IList<V1Toleration>))
        {
            NodeSelector = nodeSelector;
            Tolerations = tolerations;
            CustomInit();
        }

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

        /// <summary>
        /// Gets or sets nodeSelector lists labels that must be present on
        /// nodes that support this RuntimeClass. Pods using this RuntimeClass
        /// can only be scheduled to a node matched by this selector. The
        /// RuntimeClass nodeSelector is merged with a pod's existing
        /// nodeSelector. Any conflicts will cause the pod to be rejected in
        /// admission.
        /// </summary>
        [JsonProperty(PropertyName = "nodeSelector")]
        public IDictionary<string, string> NodeSelector { get; set; }

        /// <summary>
        /// Gets or sets tolerations are appended (excluding duplicates) to
        /// pods running with this RuntimeClass during admission, effectively
        /// unioning the set of nodes tolerated by the pod and the
        /// RuntimeClass.
        /// </summary>
        [JsonProperty(PropertyName = "tolerations")]
        public IList<V1Toleration> Tolerations { get; set; }

    }
}
