import { Resource } from '@c6o/kubeclient-contracts'; import { Quantity } from '../api/resource'; import { LabelSelector, ListMeta, ObjectMeta, Time } from '../meta/v1'; export interface ContainerResourceMetricSource { container: string; name: string; targetAverageUtilization?: number; targetAverageValue?: Quantity; } export interface ContainerResourceMetricStatus { container: string; currentAverageUtilization?: number; currentAverageValue: Quantity; name: string; } export interface CrossVersionObjectReference { apiVersion?: string; kind: string; name: string; } export interface ExternalMetricSource { metricName: string; metricSelector?: LabelSelector; targetAverageValue?: Quantity; targetValue?: Quantity; } export interface ExternalMetricStatus { currentAverageValue?: Quantity; currentValue: Quantity; metricName: string; metricSelector?: LabelSelector; } export interface HorizontalPodAutoscaler extends Resource { apiVersion?: 'autoscaling/v2beta1'; kind?: 'HorizontalPodAutoscaler'; metadata?: ObjectMeta; spec?: HorizontalPodAutoscalerSpec; status?: HorizontalPodAutoscalerStatus; } export interface HorizontalPodAutoscalerCondition { lastTransitionTime?: Time; message?: string; reason?: string; status: string; type: string; } export interface HorizontalPodAutoscalerList extends Resource { apiVersion?: 'autoscaling/v2beta1'; items: Array; kind?: 'HorizontalPodAutoscalerList'; metadata?: ListMeta; } export interface HorizontalPodAutoscalerSpec { 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 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 ObjectMetricSource { averageValue?: Quantity; metricName: string; selector?: LabelSelector; target: CrossVersionObjectReference; targetValue: Quantity; } export interface ObjectMetricStatus { averageValue?: Quantity; currentValue: Quantity; metricName: string; selector?: LabelSelector; target: CrossVersionObjectReference; } export interface PodsMetricSource { metricName: string; selector?: LabelSelector; targetAverageValue: Quantity; } export interface PodsMetricStatus { currentAverageValue: Quantity; metricName: string; selector?: LabelSelector; } export interface ResourceMetricSource { name: string; targetAverageUtilization?: number; targetAverageValue?: Quantity; } export interface ResourceMetricStatus { currentAverageUtilization?: number; currentAverageValue: Quantity; name: string; }