import { Resource } from '@c6o/kubeclient-contracts'; import { ListMeta, ObjectMeta, Time } from '../meta/v1'; import { PersistentVolumeSpec, TopologySelectorTerm } from '../core/v1'; export interface CSIDriver extends Resource { apiVersion?: 'storage.k8s.io/v1'; kind?: 'CSIDriver'; metadata?: ObjectMeta; spec: CSIDriverSpec; } export interface CSIDriverList extends Resource { apiVersion?: 'storage.k8s.io/v1'; items: Array; kind?: 'CSIDriverList'; metadata?: ListMeta; } export interface CSIDriverSpec { attachRequired?: boolean; fsGroupPolicy?: string; podInfoOnMount?: boolean; requiresRepublish?: boolean; storageCapacity?: boolean; tokenRequests?: Array; volumeLifecycleModes?: Array; } export interface CSINode extends Resource { apiVersion?: 'storage.k8s.io/v1'; kind?: 'CSINode'; metadata?: ObjectMeta; spec: CSINodeSpec; } export interface CSINodeDriver { allocatable?: VolumeNodeResources; name: string; nodeID: string; topologyKeys?: Array; } export interface CSINodeList extends Resource { apiVersion?: 'storage.k8s.io/v1'; items: Array; kind?: 'CSINodeList'; metadata?: ListMeta; } export interface CSINodeSpec { drivers: Array; } export interface StorageClass extends Resource { allowVolumeExpansion?: boolean; allowedTopologies?: Array; apiVersion?: 'storage.k8s.io/v1'; kind?: 'StorageClass'; metadata?: ObjectMeta; mountOptions?: Array; parameters?: { [name: string]: string; }; provisioner: string; reclaimPolicy?: string; volumeBindingMode?: string; } export interface StorageClassList extends Resource { apiVersion?: 'storage.k8s.io/v1'; items: Array; kind?: 'StorageClassList'; metadata?: ListMeta; } export interface TokenRequest { audience: string; expirationSeconds?: number; } export interface VolumeAttachment extends Resource { apiVersion?: 'storage.k8s.io/v1'; kind?: 'VolumeAttachment'; metadata?: ObjectMeta; spec: VolumeAttachmentSpec; status?: VolumeAttachmentStatus; } export interface VolumeAttachmentList extends Resource { apiVersion?: 'storage.k8s.io/v1'; items: Array; kind?: 'VolumeAttachmentList'; metadata?: ListMeta; } export interface VolumeAttachmentSource { inlineVolumeSpec?: PersistentVolumeSpec; persistentVolumeName?: string; } export interface VolumeAttachmentSpec { attacher: string; nodeName: string; source: VolumeAttachmentSource; } export interface VolumeAttachmentStatus { attachError?: VolumeError; attached: boolean; attachmentMetadata?: { [name: string]: string; }; detachError?: VolumeError; } export interface VolumeError { message?: string; time?: Time; } export interface VolumeNodeResources { count?: number; }