// // Code generated by Microsoft (R) AutoRest Code Generator. // Changes may cause incorrect behavior and will be lost if the code is // regenerated. // namespace k8s.Models { using Microsoft.Rest; using Newtonsoft.Json; using System.Collections; using System.Collections.Generic; using System.Linq; /// /// NetworkPolicySpec provides the specification of a NetworkPolicy /// public partial class V1NetworkPolicySpec { /// /// Initializes a new instance of the V1NetworkPolicySpec class. /// public V1NetworkPolicySpec() { CustomInit(); } /// /// Initializes a new instance of the V1NetworkPolicySpec class. /// /// Selects the pods to which this /// NetworkPolicy object applies. The array of ingress rules is applied /// to any pods selected by this field. Multiple network policies can /// select the same set of pods. In this case, the ingress rules for /// each are combined additively. This field is NOT optional and /// follows standard label selector semantics. An empty podSelector /// matches all pods in this namespace. /// List of egress rules to be applied to the /// selected pods. Outgoing traffic is allowed if there are no /// NetworkPolicies selecting the pod (and cluster policy otherwise /// allows the traffic), OR if the traffic matches at least one egress /// rule across all of the NetworkPolicy objects whose podSelector /// matches the pod. If this field is empty then this NetworkPolicy /// limits all outgoing traffic (and serves solely to ensure that the /// pods it selects are isolated by default). This field is beta-level /// in 1.8 /// List of ingress rules to be applied to the /// selected pods. Traffic is allowed to a pod if there are no /// NetworkPolicies selecting the pod (and cluster policy otherwise /// allows the traffic), OR if the traffic source is the pod's local /// node, OR if the traffic matches at least one ingress rule across /// all of the NetworkPolicy objects whose podSelector matches the pod. /// If this field is empty then this NetworkPolicy does not allow any /// traffic (and serves solely to ensure that the pods it selects are /// isolated by default) /// List of rule types that the NetworkPolicy /// relates to. Valid options are Ingress, Egress, or Ingress,Egress. /// If this field is not specified, it will default based on the /// existence of Ingress or Egress rules; policies that contain an /// Egress section are assumed to affect Egress, and all policies /// (whether or not they contain an Ingress section) are assumed to /// affect Ingress. If you want to write an egress-only policy, you /// must explicitly specify policyTypes [ "Egress" ]. Likewise, if you /// want to write a policy that specifies that no egress is allowed, /// you must specify a policyTypes value that include "Egress" (since /// such a policy would not include an Egress section and would /// otherwise default to just [ "Ingress" ]). This field is beta-level /// in 1.8 public V1NetworkPolicySpec(V1LabelSelector podSelector, IList egress = default(IList), IList ingress = default(IList), IList policyTypes = default(IList)) { Egress = egress; Ingress = ingress; PodSelector = podSelector; PolicyTypes = policyTypes; CustomInit(); } /// /// An initialization method that performs custom operations like setting defaults /// partial void CustomInit(); /// /// Gets or sets list of egress rules to be applied to the selected /// pods. Outgoing traffic is allowed if there are no NetworkPolicies /// selecting the pod (and cluster policy otherwise allows the /// traffic), OR if the traffic matches at least one egress rule across /// all of the NetworkPolicy objects whose podSelector matches the pod. /// If this field is empty then this NetworkPolicy limits all outgoing /// traffic (and serves solely to ensure that the pods it selects are /// isolated by default). This field is beta-level in 1.8 /// [JsonProperty(PropertyName = "egress")] public IList Egress { get; set; } /// /// Gets or sets list of ingress rules to be applied to the selected /// pods. Traffic is allowed to a pod if there are no NetworkPolicies /// selecting the pod (and cluster policy otherwise allows the /// traffic), OR if the traffic source is the pod's local node, OR if /// the traffic matches at least one ingress rule across all of the /// NetworkPolicy objects whose podSelector matches the pod. If this /// field is empty then this NetworkPolicy does not allow any traffic /// (and serves solely to ensure that the pods it selects are isolated /// by default) /// [JsonProperty(PropertyName = "ingress")] public IList Ingress { get; set; } /// /// Gets or sets selects the pods to which this NetworkPolicy object /// applies. The array of ingress rules is applied to any pods selected /// by this field. Multiple network policies can select the same set of /// pods. In this case, the ingress rules for each are combined /// additively. This field is NOT optional and follows standard label /// selector semantics. An empty podSelector matches all pods in this /// namespace. /// [JsonProperty(PropertyName = "podSelector")] public V1LabelSelector PodSelector { get; set; } /// /// Gets or sets list of rule types that the NetworkPolicy relates to. /// Valid options are Ingress, Egress, or Ingress,Egress. If this field /// is not specified, it will default based on the existence of Ingress /// or Egress rules; policies that contain an Egress section are /// assumed to affect Egress, and all policies (whether or not they /// contain an Ingress section) are assumed to affect Ingress. If you /// want to write an egress-only policy, you must explicitly specify /// policyTypes [ "Egress" ]. Likewise, if you want to write a policy /// that specifies that no egress is allowed, you must specify a /// policyTypes value that include "Egress" (since such a policy would /// not include an Egress section and would otherwise default to just [ /// "Ingress" ]). This field is beta-level in 1.8 /// [JsonProperty(PropertyName = "policyTypes")] public IList PolicyTypes { get; set; } /// /// Validate the object. /// /// /// Thrown if validation fails /// public virtual void Validate() { if (PodSelector == null) { throw new ValidationException(ValidationRules.CannotBeNull, "PodSelector"); } } } }