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

238 lines
10 KiB
C#
Raw Normal View History

2018-01-27 04:25:58 +08: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>
/// Webhook describes an admission webhook and the resources and operations
/// it applies to.
/// </summary>
public partial class V1beta1Webhook
{
/// <summary>
/// Initializes a new instance of the V1beta1Webhook class.
/// </summary>
public V1beta1Webhook()
{
CustomInit();
}
/// <summary>
/// Initializes a new instance of the V1beta1Webhook class.
/// </summary>
/// <param name="clientConfig">ClientConfig defines how to communicate
/// with the hook. Required</param>
/// <param name="name">The name of the admission webhook. Name should
/// be fully qualified, e.g., imagepolicy.kubernetes.io, where
/// "imagepolicy" is the name of the webhook, and kubernetes.io is the
/// name of the organization. Required.</param>
/// <param name="failurePolicy">FailurePolicy defines how unrecognized
/// errors from the admission endpoint are handled - allowed values are
/// Ignore or Fail. Defaults to Ignore.</param>
/// <param name="namespaceSelector">NamespaceSelector decides whether
/// to run the webhook on an object based on whether the namespace for
/// that object matches the selector. If the object itself is a
/// namespace, the matching is performed on object.metadata.labels. If
2018-03-28 10:30:09 +08:00
/// the object is another cluster scoped resource, it never skips the
/// webhook.
2018-01-27 04:25:58 +08:00
///
/// For example, to run the webhook on any objects whose namespace is
/// not associated with "runlevel" of "0" or "1"; you will set the
/// selector as follows: "namespaceSelector": {
/// "matchExpressions": [
/// {
/// "key": "runlevel",
/// "operator": "NotIn",
/// "values": [
/// "0",
/// "1"
/// ]
/// }
/// ]
/// }
///
/// If instead you want to only run the webhook on any objects whose
/// namespace is associated with the "environment" of "prod" or
/// "staging"; you will set the selector as follows:
/// "namespaceSelector": {
/// "matchExpressions": [
/// {
/// "key": "environment",
/// "operator": "In",
/// "values": [
/// "prod",
/// "staging"
/// ]
/// }
/// ]
/// }
///
/// See
/// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
/// for more examples of label selectors.
///
/// Default to the empty LabelSelector, which matches
/// everything.</param>
/// <param name="rules">Rules describes what operations on what
/// resources/subresources the webhook cares about. The webhook cares
2018-03-28 10:30:09 +08:00
/// about an operation if it matches _any_ Rule. However, in order to
/// prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks
/// from putting the cluster in a state which cannot be recovered from
/// without completely disabling the plugin,
/// ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never
/// called on admission requests for ValidatingWebhookConfiguration and
/// MutatingWebhookConfiguration objects.</param>
/// <param name="sideEffects">SideEffects states whether this webhookk
/// has side effects. Acceptable values are: Unknown, None, Some,
/// NoneOnDryRun Webhooks with side effects MUST implement a
/// reconciliation system, since a request may be rejected by a future
/// step in the admission change and the side effects therefore need to
/// be undone. Requests with the dryRun attribute will be auto-rejected
/// if they match a webhook with sideEffects == Unknown or Some.
/// Defaults to Unknown.</param>
public V1beta1Webhook(V1beta1WebhookClientConfig clientConfig, string name, string failurePolicy = default(string), V1LabelSelector namespaceSelector = default(V1LabelSelector), IList<V1beta1RuleWithOperations> rules = default(IList<V1beta1RuleWithOperations>), string sideEffects = default(string))
2018-01-27 04:25:58 +08:00
{
ClientConfig = clientConfig;
FailurePolicy = failurePolicy;
Name = name;
NamespaceSelector = namespaceSelector;
Rules = rules;
SideEffects = sideEffects;
2018-01-27 04:25:58 +08:00
CustomInit();
}
/// <summary>
/// An initialization method that performs custom operations like setting defaults
/// </summary>
partial void CustomInit();
/// <summary>
/// Gets or sets clientConfig defines how to communicate with the hook.
/// Required
/// </summary>
[JsonProperty(PropertyName = "clientConfig")]
public V1beta1WebhookClientConfig ClientConfig { get; set; }
/// <summary>
/// Gets or sets failurePolicy defines how unrecognized errors from the
/// admission endpoint are handled - allowed values are Ignore or Fail.
/// Defaults to Ignore.
/// </summary>
[JsonProperty(PropertyName = "failurePolicy")]
public string FailurePolicy { get; set; }
/// <summary>
/// Gets or sets the name of the admission webhook. Name should be
/// fully qualified, e.g., imagepolicy.kubernetes.io, where
/// "imagepolicy" is the name of the webhook, and kubernetes.io is the
/// name of the organization. Required.
/// </summary>
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
/// <summary>
/// Gets or sets namespaceSelector decides whether to run the webhook
/// on an object based on whether the namespace for that object matches
/// the selector. If the object itself is a namespace, the matching is
2018-03-28 10:30:09 +08:00
/// performed on object.metadata.labels. If the object is another
/// cluster scoped resource, it never skips the webhook.
2018-01-27 04:25:58 +08:00
///
/// For example, to run the webhook on any objects whose namespace is
/// not associated with "runlevel" of "0" or "1"; you will set the
/// selector as follows: "namespaceSelector": {
/// "matchExpressions": [
/// {
/// "key": "runlevel",
/// "operator": "NotIn",
/// "values": [
/// "0",
/// "1"
/// ]
/// }
/// ]
/// }
///
/// If instead you want to only run the webhook on any objects whose
/// namespace is associated with the "environment" of "prod" or
/// "staging"; you will set the selector as follows:
/// "namespaceSelector": {
/// "matchExpressions": [
/// {
/// "key": "environment",
/// "operator": "In",
/// "values": [
/// "prod",
/// "staging"
/// ]
/// }
/// ]
/// }
///
/// See
/// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
/// for more examples of label selectors.
///
/// Default to the empty LabelSelector, which matches everything.
/// </summary>
[JsonProperty(PropertyName = "namespaceSelector")]
public V1LabelSelector NamespaceSelector { get; set; }
/// <summary>
/// Gets or sets rules describes what operations on what
/// resources/subresources the webhook cares about. The webhook cares
2018-03-28 10:30:09 +08:00
/// about an operation if it matches _any_ Rule. However, in order to
/// prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks
/// from putting the cluster in a state which cannot be recovered from
/// without completely disabling the plugin,
/// ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never
/// called on admission requests for ValidatingWebhookConfiguration and
/// MutatingWebhookConfiguration objects.
2018-01-27 04:25:58 +08:00
/// </summary>
[JsonProperty(PropertyName = "rules")]
public IList<V1beta1RuleWithOperations> Rules { get; set; }
/// <summary>
/// Gets or sets sideEffects states whether this webhookk has side
/// effects. Acceptable values are: Unknown, None, Some, NoneOnDryRun
/// Webhooks with side effects MUST implement a reconciliation system,
/// since a request may be rejected by a future step in the admission
/// change and the side effects therefore need to be undone. Requests
/// with the dryRun attribute will be auto-rejected if they match a
/// webhook with sideEffects == Unknown or Some. Defaults to Unknown.
/// </summary>
[JsonProperty(PropertyName = "sideEffects")]
public string SideEffects { get; set; }
2018-01-27 04:25:58 +08:00
/// <summary>
/// Validate the object.
/// </summary>
/// <exception cref="ValidationException">
/// Thrown if validation fails
/// </exception>
public virtual void Validate()
{
if (ClientConfig == null)
{
throw new ValidationException(ValidationRules.CannotBeNull, "ClientConfig");
}
if (Name == null)
{
throw new ValidationException(ValidationRules.CannotBeNull, "Name");
}
if (ClientConfig != null)
{
ClientConfig.Validate();
}
}
}
}