// <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>
    /// NetworkPolicyEgressRule describes a particular set of traffic that is
    /// allowed out of pods matched by a NetworkPolicySpec's podSelector. The
    /// traffic must match both ports and to. This type is beta-level in 1.8
    /// </summary>
    public partial class V1NetworkPolicyEgressRule
    {
        /// <summary>
        /// Initializes a new instance of the V1NetworkPolicyEgressRule class.
        /// </summary>
        public V1NetworkPolicyEgressRule()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the V1NetworkPolicyEgressRule class.
        /// </summary>
        /// <param name="ports">List of destination ports for outgoing traffic.
        /// Each item in this list is combined using a logical OR. If this
        /// field is empty or missing, this rule matches all ports (traffic not
        /// restricted by port). If this field is present and contains at least
        /// one item, then this rule allows traffic only if the traffic matches
        /// at least one port in the list.</param>
        /// <param name="to">List of destinations for outgoing traffic of pods
        /// selected for this rule. Items in this list are combined using a
        /// logical OR operation. If this field is empty or missing, this rule
        /// matches all destinations (traffic not restricted by destination).
        /// If this field is present and contains at least one item, this rule
        /// allows traffic only if the traffic matches at least one item in the
        /// to list.</param>
        public V1NetworkPolicyEgressRule(IList<V1NetworkPolicyPort> ports = default(IList<V1NetworkPolicyPort>), IList<V1NetworkPolicyPeer> to = default(IList<V1NetworkPolicyPeer>))
        {
            Ports = ports;
            To = to;
            CustomInit();
        }

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

        /// <summary>
        /// Gets or sets list of destination ports for outgoing traffic. Each
        /// item in this list is combined using a logical OR. If this field is
        /// empty or missing, this rule matches all ports (traffic not
        /// restricted by port). If this field is present and contains at least
        /// one item, then this rule allows traffic only if the traffic matches
        /// at least one port in the list.
        /// </summary>
        [JsonProperty(PropertyName = "ports")]
        public IList<V1NetworkPolicyPort> Ports { get; set; }

        /// <summary>
        /// Gets or sets list of destinations for outgoing traffic of pods
        /// selected for this rule. Items in this list are combined using a
        /// logical OR operation. If this field is empty or missing, this rule
        /// matches all destinations (traffic not restricted by destination).
        /// If this field is present and contains at least one item, this rule
        /// allows traffic only if the traffic matches at least one item in the
        /// to list.
        /// </summary>
        [JsonProperty(PropertyName = "to")]
        public IList<V1NetworkPolicyPeer> To { get; set; }

    }
}
