import { Resource } from '@c6o/kubeclient-contracts'; import { LabelSelector, ListMeta, ObjectMeta, Time } from '../meta/v1'; import { Quantity } from '../api/resource'; export interface ContainerResourceMetricSource { container: string; name: string; target: MetricTarget; } export interface ContainerResourceMetricStatus { container: string; current: MetricValueStatus; name: string; } export interface CrossVersionObjectReference { apiVersion?: string; kind: string; name: string; } export interface ExternalMetricSource { metric: MetricIdentifier; target: MetricTarget; } export interface ExternalMetricStatus { current: MetricValueStatus; metric: MetricIdentifier; } export interface HPAScalingPolicy { periodSeconds: number; type: string; value: number; } export interface HPAScalingRules { policies?: Array; selectPolicy?: string; stabilizationWindowSeconds?: number; } export interface HorizontalPodAutoscaler extends Resource { apiVersion?: 'autoscaling/v2beta2'; kind?: 'HorizontalPodAutoscaler'; metadata?: ObjectMeta; spec?: HorizontalPodAutoscalerSpec; status?: HorizontalPodAutoscalerStatus; } export interface HorizontalPodAutoscalerBehavior { scaleDown?: HPAScalingRules; scaleUp?: HPAScalingRules; } export interface HorizontalPodAutoscalerCondition { lastTransitionTime?: Time; message?: string; reason?: string; status: string; type: string; } export interface HorizontalPodAutoscalerList extends Resource { apiVersion?: 'autoscaling/v2beta2'; items: Array; kind?: 'HorizontalPodAutoscalerList'; metadata?: ListMeta; } export interface HorizontalPodAutoscalerSpec { behavior?: HorizontalPodAutoscalerBehavior; maxReplicas: number; metrics?: Array; minReplicas?: number; scaleTargetRef: CrossVersionObjectReference; } export interface HorizontalPodAutoscalerStatus { conditions: Array; currentMetrics?: Array; currentReplicas: number; desiredReplicas: number; lastScaleTime?: Time; observedGeneration?: number; } export interface MetricIdentifier { name: string; selector?: LabelSelector; } export interface MetricSpec { containerResource?: ContainerResourceMetricSource; external?: ExternalMetricSource; object?: ObjectMetricSource; pods?: PodsMetricSource; resource?: ResourceMetricSource; type: string; } export interface MetricStatus { containerResource?: ContainerResourceMetricStatus; external?: ExternalMetricStatus; object?: ObjectMetricStatus; pods?: PodsMetricStatus; resource?: ResourceMetricStatus; type: string; } export interface MetricTarget { averageUtilization?: number; averageValue?: Quantity; type: string; value?: Quantity; } export interface MetricValueStatus { averageUtilization?: number; averageValue?: Quantity; value?: Quantity; } export interface ObjectMetricSource { describedObject: CrossVersionObjectReference; metric: MetricIdentifier; target: MetricTarget; } export interface ObjectMetricStatus { current: MetricValueStatus; describedObject: CrossVersionObjectReference; metric: MetricIdentifier; } export interface PodsMetricSource { metric: MetricIdentifier; target: MetricTarget; } export interface PodsMetricStatus { current: MetricValueStatus; metric: MetricIdentifier; } export interface ResourceMetricSource { name: string; target: MetricTarget; } export interface ResourceMetricStatus { current: MetricValueStatus; name: string; }