// // 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.Linq; /// /// MetricSpec specifies how to scale based on a single metric (only `type` /// and one other matching field should be set at once). /// public partial class V2beta1MetricSpec { /// /// Initializes a new instance of the V2beta1MetricSpec class. /// public V2beta1MetricSpec() { CustomInit(); } /// /// Initializes a new instance of the V2beta1MetricSpec class. /// /// type is the type of metric source. It should be /// one of "Object", "Pods" or "Resource", each mapping to a matching /// field in the object. /// external refers to a global metric that is /// not associated with any Kubernetes object. It allows autoscaling /// based on information coming from components running outside of /// cluster (for example length of queue in cloud messaging service, or /// QPS from loadbalancer running outside of cluster). /// object refers to a metric describing a /// single kubernetes object (for example, hits-per-second on an /// Ingress object). /// pods refers to a metric describing each pod in /// the current scale target (for example, /// transactions-processed-per-second). The values will be averaged /// together before being compared to the target value. /// resource refers to a resource metric (such /// as those specified in requests and limits) known to Kubernetes /// describing each pod in the current scale target (e.g. CPU or /// memory). Such metrics are built in to Kubernetes, and have special /// scaling options on top of those available to normal per-pod metrics /// using the "pods" source. public V2beta1MetricSpec(string type, V2beta1ExternalMetricSource external = default(V2beta1ExternalMetricSource), V2beta1ObjectMetricSource objectProperty = default(V2beta1ObjectMetricSource), V2beta1PodsMetricSource pods = default(V2beta1PodsMetricSource), V2beta1ResourceMetricSource resource = default(V2beta1ResourceMetricSource)) { External = external; ObjectProperty = objectProperty; Pods = pods; Resource = resource; Type = type; CustomInit(); } /// /// An initialization method that performs custom operations like setting defaults /// partial void CustomInit(); /// /// Gets or sets external refers to a global metric that is not /// associated with any Kubernetes object. It allows autoscaling based /// on information coming from components running outside of cluster /// (for example length of queue in cloud messaging service, or QPS /// from loadbalancer running outside of cluster). /// [JsonProperty(PropertyName = "external")] public V2beta1ExternalMetricSource External { get; set; } /// /// Gets or sets object refers to a metric describing a single /// kubernetes object (for example, hits-per-second on an Ingress /// object). /// [JsonProperty(PropertyName = "object")] public V2beta1ObjectMetricSource ObjectProperty { get; set; } /// /// Gets or sets pods refers to a metric describing each pod in the /// current scale target (for example, /// transactions-processed-per-second). The values will be averaged /// together before being compared to the target value. /// [JsonProperty(PropertyName = "pods")] public V2beta1PodsMetricSource Pods { get; set; } /// /// Gets or sets resource refers to a resource metric (such as those /// specified in requests and limits) known to Kubernetes describing /// each pod in the current scale target (e.g. CPU or memory). Such /// metrics are built in to Kubernetes, and have special scaling /// options on top of those available to normal per-pod metrics using /// the "pods" source. /// [JsonProperty(PropertyName = "resource")] public V2beta1ResourceMetricSource Resource { get; set; } /// /// Gets or sets type is the type of metric source. It should be one /// of "Object", "Pods" or "Resource", each mapping to a matching field /// in the object. /// [JsonProperty(PropertyName = "type")] public string Type { get; set; } /// /// Validate the object. /// /// /// Thrown if validation fails /// public virtual void Validate() { if (Type == null) { throw new ValidationException(ValidationRules.CannotBeNull, "Type"); } if (External != null) { External.Validate(); } if (ObjectProperty != null) { ObjectProperty.Validate(); } if (Pods != null) { Pods.Validate(); } if (Resource != null) { Resource.Validate(); } } } }