1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Check preferred version for PodDistruptionBudgets

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-01-20 10:53:23 -05:00
parent 7cab68b403
commit cc3b2d3271
3 changed files with 43 additions and 3 deletions

View File

@ -18,6 +18,8 @@ const podDisruptionBudgetApiInjectable = getInjectable({
return new PodDisruptionBudgetApi({ return new PodDisruptionBudgetApi({
logger: di.inject(loggerInjectable), logger: di.inject(loggerInjectable),
maybeKubeApi: di.inject(maybeKubeApiInjectable), maybeKubeApi: di.inject(maybeKubeApiInjectable),
}, {
checkPreferredVersion: true,
}); });
}, },

View File

@ -7,20 +7,45 @@ import type { LabelSelector, NamespaceScopedMetadata } from "../kube-object";
import { KubeObject } from "../kube-object"; import { KubeObject } from "../kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api"; import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api"; import { KubeApi } from "../kube-api";
import type { Condition } from "./types/condition";
export interface PodDisruptionBudgetSpec { export interface V1Beta1PodDisruptionBudgetSpec {
minAvailable: string; minAvailable: string;
maxUnavailable: string; maxUnavailable: string;
selector: LabelSelector; selector: LabelSelector;
} }
export interface PodDisruptionBudgetStatus { export interface V1PodDisruptionBudgetSpec {
maxUnavailable?: string | number;
minAvailable?: string | number;
selector?: LabelSelector;
}
export type PodDisruptionBudgetSpec =
| V1Beta1PodDisruptionBudgetSpec
| V1PodDisruptionBudgetSpec;
export interface V1Beta1PodDisruptionBudgetStatus {
currentHealthy: number; currentHealthy: number;
desiredHealthy: number; desiredHealthy: number;
disruptionsAllowed: number; disruptionsAllowed: number;
expectedPods: number; expectedPods: number;
} }
export interface V1PodDisruptionBudgetStatus {
conditions?: Condition[];
currentHealthy: number;
desiredHealthy: number;
disruptedPods?: Partial<Record<string, string>>;
disruptionsAllowed: number;
expectedPods: number;
observedGeneration?: number;
}
export type PodDisruptionBudgetStatus =
| V1Beta1PodDisruptionBudgetStatus
| V1PodDisruptionBudgetStatus;
export class PodDisruptionBudget extends KubeObject< export class PodDisruptionBudget extends KubeObject<
NamespaceScopedMetadata, NamespaceScopedMetadata,
PodDisruptionBudgetStatus, PodDisruptionBudgetStatus,
@ -31,7 +56,7 @@ export class PodDisruptionBudget extends KubeObject<
static readonly apiBase = "/apis/policy/v1beta1/poddisruptionbudgets"; static readonly apiBase = "/apis/policy/v1beta1/poddisruptionbudgets";
getSelectors() { getSelectors() {
return KubeObject.stringifyLabels(this.spec.selector.matchLabels); return KubeObject.stringifyLabels(this.spec.selector?.matchLabels);
} }
getMinAvailable() { getMinAvailable() {

View File

@ -0,0 +1,13 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
export interface Condition {
lastTransitionTime: string;
message: string;
observedGeneration?: number;
reason: string;
status: string;
type: string;
}