Files
csharp/src/KubernetesClient/generated/Models/V1NetworkPolicySpec.cs

154 lines
7.9 KiB
C#
Raw Normal View History

2017-10-19 19:53:02 +00:00
// <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 Microsoft.Rest;
using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
/// <summary>
/// NetworkPolicySpec provides the specification of a NetworkPolicy
/// </summary>
public partial class V1NetworkPolicySpec
2017-10-19 19:53:02 +00:00
{
/// <summary>
/// Initializes a new instance of the V1NetworkPolicySpec class.
2017-10-19 19:53:02 +00:00
/// </summary>
public V1NetworkPolicySpec()
2017-10-19 19:53:02 +00:00
{
CustomInit();
}
/// <summary>
/// Initializes a new instance of the V1NetworkPolicySpec class.
2017-10-19 19:53:02 +00:00
/// </summary>
/// <param name="podSelector">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.</param>
/// <param name="egress">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</param>
/// <param name="ingress">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)</param>
/// <param name="policyTypes">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</param>
public V1NetworkPolicySpec(V1LabelSelector podSelector, IList<V1NetworkPolicyEgressRule> egress = default(IList<V1NetworkPolicyEgressRule>), IList<V1NetworkPolicyIngressRule> ingress = default(IList<V1NetworkPolicyIngressRule>), IList<string> policyTypes = default(IList<string>))
2017-10-19 19:53:02 +00:00
{
Egress = egress;
Ingress = ingress;
PodSelector = podSelector;
PolicyTypes = policyTypes;
CustomInit();
}
/// <summary>
/// An initialization method that performs custom operations like setting defaults
/// </summary>
partial void CustomInit();
/// <summary>
/// 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
/// </summary>
[JsonProperty(PropertyName = "egress")]
public IList<V1NetworkPolicyEgressRule> Egress { get; set; }
/// <summary>
/// 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)
/// </summary>
[JsonProperty(PropertyName = "ingress")]
public IList<V1NetworkPolicyIngressRule> Ingress { get; set; }
2017-10-19 19:53:02 +00:00
/// <summary>
/// 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.
/// </summary>
[JsonProperty(PropertyName = "podSelector")]
public V1LabelSelector PodSelector { get; set; }
/// <summary>
/// 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
2017-10-19 19:53:02 +00:00
/// 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
/// </summary>
[JsonProperty(PropertyName = "policyTypes")]
public IList<string> PolicyTypes { get; set; }
/// <summary>
/// Validate the object.
/// </summary>
/// <exception cref="ValidationException">
/// Thrown if validation fails
/// </exception>
public virtual void Validate()
{
if (PodSelector == null)
{
throw new ValidationException(ValidationRules.CannotBeNull, "PodSelector");
}
}
}
}