2017-10-19 19:53:02 +00:00
|
|
|
// <auto-generated>
|
|
|
|
|
// Code generated by Microsoft (R) AutoRest Code Generator.
|
2017-06-06 23:02:14 -07:00
|
|
|
// Changes may cause incorrect behavior and will be lost if the code is
|
|
|
|
|
// regenerated.
|
2017-10-19 19:53:02 +00:00
|
|
|
// </auto-generated>
|
2017-06-06 23:02:14 -07:00
|
|
|
|
|
|
|
|
namespace k8s.Models
|
|
|
|
|
{
|
|
|
|
|
using Microsoft.Rest;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// MetricSpec specifies how to scale based on a single metric (only `type`
|
|
|
|
|
/// and one other matching field should be set at once).
|
|
|
|
|
/// </summary>
|
2017-10-19 19:53:02 +00:00
|
|
|
public partial class V2beta1MetricSpec
|
2017-06-06 23:02:14 -07:00
|
|
|
{
|
|
|
|
|
/// <summary>
|
2017-10-19 19:53:02 +00:00
|
|
|
/// Initializes a new instance of the V2beta1MetricSpec class.
|
2017-06-06 23:02:14 -07:00
|
|
|
/// </summary>
|
2017-10-19 19:53:02 +00:00
|
|
|
public V2beta1MetricSpec()
|
2017-06-06 23:02:14 -07:00
|
|
|
{
|
2017-10-19 19:53:02 +00:00
|
|
|
CustomInit();
|
2017-06-06 23:02:14 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2017-10-19 19:53:02 +00:00
|
|
|
/// Initializes a new instance of the V2beta1MetricSpec class.
|
2017-06-06 23:02:14 -07:00
|
|
|
/// </summary>
|
2018-03-28 10:30:09 +08:00
|
|
|
/// <param name="type">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.</param>
|
|
|
|
|
/// <param name="external">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).</param>
|
2017-06-06 23:02:14 -07:00
|
|
|
/// <param name="objectProperty">object refers to a metric describing a
|
|
|
|
|
/// single kubernetes object (for example, hits-per-second on an
|
|
|
|
|
/// Ingress object).</param>
|
|
|
|
|
/// <param name="pods">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.</param>
|
|
|
|
|
/// <param name="resource">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.</param>
|
2018-03-28 10:30:09 +08:00
|
|
|
public V2beta1MetricSpec(string type, V2beta1ExternalMetricSource external = default(V2beta1ExternalMetricSource), V2beta1ObjectMetricSource objectProperty = default(V2beta1ObjectMetricSource), V2beta1PodsMetricSource pods = default(V2beta1PodsMetricSource), V2beta1ResourceMetricSource resource = default(V2beta1ResourceMetricSource))
|
2017-06-06 23:02:14 -07:00
|
|
|
{
|
2018-03-28 10:30:09 +08:00
|
|
|
External = external;
|
2017-06-06 23:02:14 -07:00
|
|
|
ObjectProperty = objectProperty;
|
|
|
|
|
Pods = pods;
|
|
|
|
|
Resource = resource;
|
|
|
|
|
Type = type;
|
|
|
|
|
CustomInit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// An initialization method that performs custom operations like setting defaults
|
|
|
|
|
/// </summary>
|
|
|
|
|
partial void CustomInit();
|
|
|
|
|
|
2018-03-28 10:30:09 +08:00
|
|
|
/// <summary>
|
|
|
|
|
/// 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).
|
|
|
|
|
/// </summary>
|
|
|
|
|
[JsonProperty(PropertyName = "external")]
|
|
|
|
|
public V2beta1ExternalMetricSource External { get; set; }
|
|
|
|
|
|
2017-06-06 23:02:14 -07:00
|
|
|
/// <summary>
|
|
|
|
|
/// Gets or sets object refers to a metric describing a single
|
|
|
|
|
/// kubernetes object (for example, hits-per-second on an Ingress
|
|
|
|
|
/// object).
|
|
|
|
|
/// </summary>
|
|
|
|
|
[JsonProperty(PropertyName = "object")]
|
2017-10-19 19:53:02 +00:00
|
|
|
public V2beta1ObjectMetricSource ObjectProperty { get; set; }
|
2017-06-06 23:02:14 -07:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 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.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[JsonProperty(PropertyName = "pods")]
|
2017-10-19 19:53:02 +00:00
|
|
|
public V2beta1PodsMetricSource Pods { get; set; }
|
2017-06-06 23:02:14 -07:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 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.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[JsonProperty(PropertyName = "resource")]
|
2017-10-19 19:53:02 +00:00
|
|
|
public V2beta1ResourceMetricSource Resource { get; set; }
|
2017-06-06 23:02:14 -07:00
|
|
|
|
|
|
|
|
/// <summary>
|
2018-03-28 10:30:09 +08:00
|
|
|
/// 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.
|
2017-06-06 23:02:14 -07:00
|
|
|
/// </summary>
|
|
|
|
|
[JsonProperty(PropertyName = "type")]
|
|
|
|
|
public string Type { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Validate the object.
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <exception cref="ValidationException">
|
|
|
|
|
/// Thrown if validation fails
|
|
|
|
|
/// </exception>
|
|
|
|
|
public virtual void Validate()
|
|
|
|
|
{
|
|
|
|
|
if (Type == null)
|
|
|
|
|
{
|
|
|
|
|
throw new ValidationException(ValidationRules.CannotBeNull, "Type");
|
|
|
|
|
}
|
2018-03-28 10:30:09 +08:00
|
|
|
if (External != null)
|
|
|
|
|
{
|
|
|
|
|
External.Validate();
|
|
|
|
|
}
|
2017-06-06 23:02:14 -07:00
|
|
|
if (ObjectProperty != null)
|
|
|
|
|
{
|
|
|
|
|
ObjectProperty.Validate();
|
|
|
|
|
}
|
|
|
|
|
if (Pods != null)
|
|
|
|
|
{
|
|
|
|
|
Pods.Validate();
|
|
|
|
|
}
|
|
|
|
|
if (Resource != null)
|
|
|
|
|
{
|
|
|
|
|
Resource.Validate();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|