// <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>
    /// A label selector is a label query over a set of resources. The result
    /// of matchLabels and matchExpressions are ANDed. An empty label selector
    /// matches all objects. A null label selector matches no objects.
    /// </summary>
    public partial class V1LabelSelector
    {
        /// <summary>
        /// Initializes a new instance of the V1LabelSelector class.
        /// </summary>
        public V1LabelSelector()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the V1LabelSelector class.
        /// </summary>
        /// <param name="matchExpressions">matchExpressions is a list of label
        /// selector requirements. The requirements are ANDed.</param>
        /// <param name="matchLabels">matchLabels is a map of {key,value}
        /// pairs. A single {key,value} in the matchLabels map is equivalent to
        /// an element of matchExpressions, whose key field is "key", the
        /// operator is "In", and the values array contains only "value". The
        /// requirements are ANDed.</param>
        public V1LabelSelector(IList<V1LabelSelectorRequirement> matchExpressions = default(IList<V1LabelSelectorRequirement>), IDictionary<string, string> matchLabels = default(IDictionary<string, string>))
        {
            MatchExpressions = matchExpressions;
            MatchLabels = matchLabels;
            CustomInit();
        }

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

        /// <summary>
        /// Gets or sets matchExpressions is a list of label selector
        /// requirements. The requirements are ANDed.
        /// </summary>
        [JsonProperty(PropertyName = "matchExpressions")]
        public IList<V1LabelSelectorRequirement> MatchExpressions { get; set; }

        /// <summary>
        /// Gets or sets matchLabels is a map of {key,value} pairs. A single
        /// {key,value} in the matchLabels map is equivalent to an element of
        /// matchExpressions, whose key field is "key", the operator is "In",
        /// and the values array contains only "value". The requirements are
        /// ANDed.
        /// </summary>
        [JsonProperty(PropertyName = "matchLabels")]
        public IDictionary<string, string> MatchLabels { get; set; }

    }
}
