// // 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; /// /// Webhook describes an admission webhook and the resources and operations /// it applies to. /// public partial class V1beta1Webhook { /// /// Initializes a new instance of the V1beta1Webhook class. /// public V1beta1Webhook() { CustomInit(); } /// /// Initializes a new instance of the V1beta1Webhook class. /// /// ClientConfig defines how to communicate /// with the hook. Required /// 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. /// FailurePolicy defines how unrecognized /// errors from the admission endpoint are handled - allowed values are /// Ignore or Fail. Defaults to Ignore. /// 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 /// the object is another cluster scoped resource, it never skips the /// webhook. /// /// 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. /// Rules describes what operations on what /// resources/subresources the webhook cares about. The webhook cares /// 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. /// 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. public V1beta1Webhook(V1beta1WebhookClientConfig clientConfig, string name, string failurePolicy = default(string), V1LabelSelector namespaceSelector = default(V1LabelSelector), IList rules = default(IList), string sideEffects = default(string)) { ClientConfig = clientConfig; FailurePolicy = failurePolicy; Name = name; NamespaceSelector = namespaceSelector; Rules = rules; SideEffects = sideEffects; CustomInit(); } /// /// An initialization method that performs custom operations like setting defaults /// partial void CustomInit(); /// /// Gets or sets clientConfig defines how to communicate with the hook. /// Required /// [JsonProperty(PropertyName = "clientConfig")] public V1beta1WebhookClientConfig ClientConfig { get; set; } /// /// Gets or sets failurePolicy defines how unrecognized errors from the /// admission endpoint are handled - allowed values are Ignore or Fail. /// Defaults to Ignore. /// [JsonProperty(PropertyName = "failurePolicy")] public string FailurePolicy { get; set; } /// /// 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. /// [JsonProperty(PropertyName = "name")] public string Name { get; set; } /// /// 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 /// performed on object.metadata.labels. If the object is another /// cluster scoped resource, it never skips the webhook. /// /// 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. /// [JsonProperty(PropertyName = "namespaceSelector")] public V1LabelSelector NamespaceSelector { get; set; } /// /// Gets or sets rules describes what operations on what /// resources/subresources the webhook cares about. The webhook cares /// 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. /// [JsonProperty(PropertyName = "rules")] public IList Rules { get; set; } /// /// 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. /// [JsonProperty(PropertyName = "sideEffects")] public string SideEffects { get; set; } /// /// Validate the object. /// /// /// Thrown if validation fails /// 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(); } } } }