import { Resource } from '@c6o/kubeclient-contracts'; import { ListMeta, ObjectMeta, Time } from '../meta/v1'; export interface FlowDistinguisherMethod { type: string; } export interface FlowSchema extends Resource { apiVersion?: 'flowcontrol.apiserver.k8s.io/v1beta1'; kind?: 'FlowSchema'; metadata?: ObjectMeta; spec?: FlowSchemaSpec; status?: FlowSchemaStatus; } export interface FlowSchemaCondition { lastTransitionTime?: Time; message?: string; reason?: string; status?: string; type?: string; } export interface FlowSchemaList extends Resource { apiVersion?: 'flowcontrol.apiserver.k8s.io/v1beta1'; items: Array; kind?: 'FlowSchemaList'; metadata?: ListMeta; } export interface FlowSchemaSpec { distinguisherMethod?: FlowDistinguisherMethod; matchingPrecedence?: number; priorityLevelConfiguration: PriorityLevelConfigurationReference; rules?: Array; } export interface FlowSchemaStatus { conditions?: Array; } export interface GroupSubject { name: string; } export interface LimitResponse { queuing?: QueuingConfiguration; type: string; } export interface LimitedPriorityLevelConfiguration { assuredConcurrencyShares?: number; limitResponse?: LimitResponse; } export interface NonResourcePolicyRule { nonResourceURLs: Array; verbs: Array; } export interface PolicyRulesWithSubjects { nonResourceRules?: Array; resourceRules?: Array; subjects: Array; } export interface PriorityLevelConfiguration extends Resource { apiVersion?: 'flowcontrol.apiserver.k8s.io/v1beta1'; kind?: 'PriorityLevelConfiguration'; metadata?: ObjectMeta; spec?: PriorityLevelConfigurationSpec; status?: PriorityLevelConfigurationStatus; } export interface PriorityLevelConfigurationCondition { lastTransitionTime?: Time; message?: string; reason?: string; status?: string; type?: string; } export interface PriorityLevelConfigurationList extends Resource { apiVersion?: 'flowcontrol.apiserver.k8s.io/v1beta1'; items: Array; kind?: 'PriorityLevelConfigurationList'; metadata?: ListMeta; } export interface PriorityLevelConfigurationReference { name: string; } export interface PriorityLevelConfigurationSpec { limited?: LimitedPriorityLevelConfiguration; type: string; } export interface PriorityLevelConfigurationStatus { conditions?: Array; } export interface QueuingConfiguration { handSize?: number; queueLengthLimit?: number; queues?: number; } export interface ResourcePolicyRule { apiGroups: Array; clusterScope?: boolean; namespaces?: Array; resources: Array; verbs: Array; } export interface ServiceAccountSubject { name: string; namespace: string; } export interface Subject { group?: GroupSubject; kind: string; serviceAccount?: ServiceAccountSubject; user?: UserSubject; } export interface UserSubject { name: string; }