mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
|
|
import type { KubeObjectStatus, ClusterScopedMetadata } from "../api-types";
|
|
import { KubeObject } from "../kube-object";
|
|
|
|
export enum NamespaceStatusKind {
|
|
ACTIVE = "Active",
|
|
TERMINATING = "Terminating",
|
|
}
|
|
|
|
export interface NamespaceSpec {
|
|
finalizers?: string[];
|
|
}
|
|
|
|
export interface NamespaceStatus extends KubeObjectStatus {
|
|
phase?: string;
|
|
}
|
|
|
|
export class Namespace extends KubeObject<ClusterScopedMetadata, NamespaceStatus, NamespaceSpec> {
|
|
static readonly kind = "Namespace";
|
|
|
|
static readonly namespaced = false;
|
|
|
|
static readonly apiBase = "/api/v1/namespaces";
|
|
|
|
getStatus() {
|
|
return this.status?.phase ?? "-";
|
|
}
|
|
|
|
isSubnamespace() {
|
|
return this.getAnnotations().find((annotation) => annotation.includes("hnc.x-k8s.io/subnamespace-of"));
|
|
}
|
|
|
|
isChildOf(parentName: string) {
|
|
return this.getLabels().find((label) => label === `${parentName}.tree.hnc.x-k8s.io/depth=1`);
|
|
}
|
|
|
|
isControlledByHNC() {
|
|
return this.getLabels().includes("hnc.x-k8s.io/included-namespace=true");
|
|
}
|
|
}
|