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>
|
2017-11-24 12:10:51 +08:00
|
|
|
public partial class V1NetworkPolicySpec
|
2017-10-19 19:53:02 +00:00
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-11-24 12:10:51 +08:00
|
|
|
/// Initializes a new instance of the V1NetworkPolicySpec class.
|
2017-10-19 19:53:02 +00:00
|
|
|
/// </summary>
|
2017-11-24 12:10:51 +08:00
|
|
|
public V1NetworkPolicySpec()
|
2017-10-19 19:53:02 +00:00
|
|
|
{
|
|
|
|
|
CustomInit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-11-24 12:10:51 +08:00
|
|
|
/// 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
|
2019-03-28 11:51:58 -07:00
|
|
|
/// 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>
|
2017-11-24 12:10:51 +08:00
|
|
|
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")]
|
2017-11-24 12:10:51 +08:00
|
|
|
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.
|
2019-03-28 11:51:58 -07:00
|
|
|
/// 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");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|