@provisioner/contracts
Version:
Contracts stuff for provisioners
62 lines (61 loc) • 2.17 kB
TypeScript
import { Result, PatchOp } from '@c6o/kubeclient-contracts';
import { PersistentVolumeClaim } from '@c6o/kubeclient-resources/core/v1';
export interface PersistenceKit {
attach(request: AttachRequest): Promise<Result>;
copy(persisentvolumeClaimName: string, namespace: string, appId: string, targetVolumeName: string): Promise<Result>;
delete(obj: DetachRequest): Promise<Result>;
detach(obj: DetachRequest): Promise<Result>;
expand(obj: ExpandRequest): Promise<Result>;
expansionAllowed(obj: ExpansionAllowedRequest): Promise<boolean>;
list(request: ListRequest): Promise<Result>;
restore(volumeSnapshotName: string, namespace: string, appId: string, persisentvolumeClaimName: string): Promise<Result>;
snapshot(obj: SnapshotRequest): Promise<Result>;
snapshotAllowed(): Promise<boolean>;
}
export interface PersistenceRequest {
targetDoc?: PersistentVolumeClaim;
}
export interface AttachRequest extends PersistenceRequest {
namespace: string;
appName: string;
mountPoint?: string;
volumeClaimName?: string;
volumeType?: string;
volumeName?: string;
volumeSnapshotName?: string;
volumeSize?: string;
}
export interface DeleteRequest extends PersistenceRequest {
persistentVolumeName?: string;
}
export interface DetachRequest extends PersistenceRequest {
persistentVolumeClaimName?: string;
mountPath?: string;
namespace: string;
appName: string;
}
export interface ExpansionAllowedRequest extends PersistenceRequest {
storageClassName?: string;
}
export interface ExpandRequest extends PersistenceRequest {
persistentVolumeClaimName: string;
namespace: string;
newSize: number;
capacityUnit?: 'Gi';
}
export interface ListRequest extends PersistenceRequest {
namespace: string;
appName: string;
}
export interface PatchRequest extends PersistenceRequest, PatchOp {
apiVersion: string;
kind: string;
name: string;
namespace?: string;
}
export interface SnapshotRequest extends PersistenceRequest {
persistentVolumeClaimName: string;
namespace: string;
volumeSnapshotClassName: string;
volumeSnapshotName: string;
}