From 1f88c05e82a3f2719520c6fbf15028b8929b9cf4 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 12 Nov 2020 08:39:50 +0200 Subject: [PATCH 1/2] Refactoring: removed kube versioned api (#1328) Signed-off-by: Roman --- src/extensions/renderer-api/k8s-api.ts | 5 +-- src/renderer/api/endpoints/crd.api.ts | 7 ++-- src/renderer/api/kube-api-versioned.ts | 56 -------------------------- src/renderer/api/kube-api.ts | 43 +++++++++++++++++--- 4 files changed, 43 insertions(+), 68 deletions(-) delete mode 100644 src/renderer/api/kube-api-versioned.ts diff --git a/src/extensions/renderer-api/k8s-api.ts b/src/extensions/renderer-api/k8s-api.ts index 4dfaff0362..2a26b49cdd 100644 --- a/src/extensions/renderer-api/k8s-api.ts +++ b/src/extensions/renderer-api/k8s-api.ts @@ -2,7 +2,6 @@ export { isAllowedResource } from "../../common/rbac" export { apiManager } from "../../renderer/api/api-manager"; export { KubeObjectStore } from "../../renderer/kube-object.store" export { KubeApi, forCluster, IKubeApiCluster } from "../../renderer/api/kube-api"; -export { VersionedKubeApi } from "../../renderer/api/kube-api-versioned"; export { KubeObject } from "../../renderer/api/kube-object"; export { Pod, podsApi, PodsApi, IPodContainer, IPodContainerStatus } from "../../renderer/api/endpoints"; export { Node, nodesApi, NodesApi } from "../../renderer/api/endpoints"; @@ -32,10 +31,10 @@ export { RoleBinding, roleBindingApi } from "../../renderer/api/endpoints"; export { ClusterRole, clusterRoleApi } from "../../renderer/api/endpoints"; export { ClusterRoleBinding, clusterRoleBindingApi } from "../../renderer/api/endpoints"; export { CustomResourceDefinition, crdApi } from "../../renderer/api/endpoints"; -export { KubeObjectStatus, KubeObjectStatusLevel} from "./kube-object-status" +export { KubeObjectStatus, KubeObjectStatusLevel } from "./kube-object-status" // stores -export type { EventStore } from "../../renderer/components/+events/event.store" +export type { EventStore } from "../../renderer/components/+events/event.store" export type { PodsStore } from "../../renderer/components/+workloads-pods/pods.store" export type { NodesStore } from "../../renderer/components/+nodes/nodes.store" export type { DeploymentStore } from "../../renderer/components/+workloads-deployments/deployments.store" diff --git a/src/renderer/api/endpoints/crd.api.ts b/src/renderer/api/endpoints/crd.api.ts index 7b561041f7..1916d71f1b 100644 --- a/src/renderer/api/endpoints/crd.api.ts +++ b/src/renderer/api/endpoints/crd.api.ts @@ -1,6 +1,6 @@ import { KubeObject } from "../kube-object"; -import { VersionedKubeApi } from "../kube-api-versioned"; import { crdResourcesURL } from "../../components/+custom-resources/crd.route"; +import { KubeApi } from "../kube-api"; type AdditionalPrinterColumnsCommon = { name: string; @@ -146,6 +146,7 @@ export class CustomResourceDefinition extends KubeObject { } } -export const crdApi = new VersionedKubeApi({ - objectConstructor: CustomResourceDefinition +export const crdApi = new KubeApi({ + objectConstructor: CustomResourceDefinition, + checkPreferredVersion: true, }); diff --git a/src/renderer/api/kube-api-versioned.ts b/src/renderer/api/kube-api-versioned.ts deleted file mode 100644 index 59c1637b29..0000000000 --- a/src/renderer/api/kube-api-versioned.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { stringify } from "querystring"; -import { KubeObject } from "./kube-object"; -import { createKubeApiURL } from "./kube-api-parse"; -import { KubeApi, IKubeApiQueryParams, IKubeApiOptions } from "./kube-api"; -import { apiManager } from "./api-manager"; - -export class VersionedKubeApi extends KubeApi { - private preferredVersion?: string; - - constructor(opts: IKubeApiOptions) { - super(opts); - - this.getPreferredVersion().then(() => { - if (this.apiBase != opts.apiBase) - apiManager.registerApi(this.apiBase, this); - }); - } - - // override this property to make read-write - apiBase: string - - async getPreferredVersion() { - if (this.preferredVersion) return; - - const apiGroupVersion = await this.request.get<{ preferredVersion?: { version: string; }; }>(`${this.apiPrefix}/${this.apiGroup}`); - - if (!apiGroupVersion?.preferredVersion) return; - - this.preferredVersion = apiGroupVersion.preferredVersion.version; - - // update apiBase - this.apiBase = this.getUrl(); - } - - async list({ namespace = "" } = {}, query?: IKubeApiQueryParams): Promise { - await this.getPreferredVersion(); - return await super.list({namespace}, query); - } - async get({ name = "", namespace = "default" } = {}, query?: IKubeApiQueryParams): Promise { - await this.getPreferredVersion(); - return super.get({ name, namespace }, query); - } - - getUrl({ name = "", namespace = "" } = {}, query?: Partial) { - const { apiPrefix, apiGroup, apiVersion, apiResource, preferredVersion, isNamespaced } = this; - - const resourcePath = createKubeApiURL({ - apiPrefix: apiPrefix, - apiVersion: `${apiGroup}/${preferredVersion ?? apiVersion}`, - resource: apiResource, - namespace: isNamespaced ? namespace : undefined, - name: name, - }); - return resourcePath + (query ? `?` + stringify(this.normalizeQuery(query)) : ""); - } -} diff --git a/src/renderer/api/kube-api.ts b/src/renderer/api/kube-api.ts index bcbd283709..c3c9698cfa 100644 --- a/src/renderer/api/kube-api.ts +++ b/src/renderer/api/kube-api.ts @@ -16,6 +16,7 @@ export interface IKubeApiOptions { request?: KubeJsonApi; isNamespaced?: boolean; kind?: string; + checkPreferredVersion?: boolean; } export interface IKubeApiQueryParams { @@ -28,6 +29,12 @@ export interface IKubeApiQueryParams { fieldSelector?: string | string[]; // restrict list of objects by their fields, e.g. fieldSelector: "field=name" } +export interface IKubePreferredVersion { + preferredVersion?: { + version: string; + } +} + export interface IKubeApiCluster { id: string; } @@ -60,7 +67,7 @@ export class KubeApi { readonly apiPrefix: string readonly apiGroup: string readonly apiVersion: string - readonly apiVersionWithGroup: string + readonly apiVersionPreferred?: string; readonly apiResource: string readonly isNamespaced: boolean @@ -86,15 +93,35 @@ export class KubeApi { this.apiPrefix = apiPrefix; this.apiGroup = apiGroup; this.apiVersion = apiVersion; - this.apiVersionWithGroup = apiVersionWithGroup; this.apiResource = resource; this.request = request; this.objectConstructor = objectConstructor; + this.checkPreferredVersion(); this.parseResponse = this.parseResponse.bind(this); apiManager.registerApi(apiBase, this); } + get apiVersionWithGroup() { + return [this.apiGroup, this.apiVersionPreferred ?? this.apiVersion] + .filter(Boolean) + .join("/") + } + + protected async checkPreferredVersion() { + if (this.options.checkPreferredVersion && this.apiVersionPreferred === undefined) { + const res = await this.request.get(`${this.apiPrefix}/${this.apiGroup}`); + Object.defineProperty(this, "apiVersionPreferred", { + value: res?.preferredVersion?.version ?? null, + }); + + if (this.apiVersionPreferred) { + Object.defineProperty(this, "apiBase", { value: this.getUrl() }) + apiManager.registerApi(this.apiBase, this); + } + } + } + setResourceVersion(namespace = "", newVersion: string) { this.resourceVersions.set(namespace, newVersion); } @@ -108,11 +135,10 @@ export class KubeApi { } getUrl({ name = "", namespace = "" } = {}, query?: Partial) { - const { apiPrefix, apiVersionWithGroup, apiResource } = this; const resourcePath = createKubeApiURL({ - apiPrefix: apiPrefix, - apiVersion: apiVersionWithGroup, - resource: apiResource, + apiPrefix: this.apiPrefix, + apiVersion: this.apiVersionWithGroup, + resource: this.apiResource, namespace: this.isNamespaced ? namespace : undefined, name: name, }); @@ -156,18 +182,21 @@ export class KubeApi { } async list({ namespace = "" } = {}, query?: IKubeApiQueryParams): Promise { + await this.checkPreferredVersion(); return this.request .get(this.getUrl({ namespace }), { query }) .then(data => this.parseResponse(data, namespace)); } async get({ name = "", namespace = "default" } = {}, query?: IKubeApiQueryParams): Promise { + await this.checkPreferredVersion(); return this.request .get(this.getUrl({ namespace, name }), { query }) .then(this.parseResponse); } async create({ name = "", namespace = "default" } = {}, data?: Partial): Promise { + await this.checkPreferredVersion(); const apiUrl = this.getUrl({ namespace }); return this.request @@ -185,6 +214,7 @@ export class KubeApi { } async update({ name = "", namespace = "default" } = {}, data?: Partial): Promise { + await this.checkPreferredVersion(); const apiUrl = this.getUrl({ namespace, name }); return this.request .put(apiUrl, { data }) @@ -192,6 +222,7 @@ export class KubeApi { } async delete({ name = "", namespace = "default" }) { + await this.checkPreferredVersion(); const apiUrl = this.getUrl({ namespace, name }); return this.request.del(apiUrl) } From deb4773b4424dedb69d3c8a0bb752a31946ba6ed Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Thu, 12 Nov 2020 09:16:22 +0200 Subject: [PATCH 2/2] Allow to specify KubeObjectDetailRegistration priority (#1335) Signed-off-by: Jari Kolehmainen --- .../registries/kube-object-detail-registry.ts | 9 ++++++++- .../+config-autoscalers/hpa-details.tsx | 11 ++++++++-- .../+config-maps/config-map-details.tsx | 13 ++++++++++-- .../components/+events/kube-event-details.tsx | 4 ++-- .../+network-endpoints/endpoint-details.tsx | 10 ++++++++-- .../+network-ingresses/ingress-details.tsx | 10 ++++++++-- .../network-policy-details.tsx | 11 ++++++++-- .../+network-services/service-details.tsx | 11 ++++++++-- .../components/+nodes/node-details.tsx | 10 +++++++++- .../storage-class-details.tsx | 11 ++++++++-- .../volume-claim-details.tsx | 11 ++++++++-- .../+storage-volumes/volume-details.tsx | 11 ++++++++-- .../role-binding-details.tsx | 20 +++++++++++++++++-- .../+user-management-roles/role-details.tsx | 18 +++++++++++++++-- .../service-accounts-details.tsx | 10 ++++++++-- .../+workloads-cronjobs/cronjob-details.tsx | 9 ++++++++- .../daemonset-details.tsx | 9 ++++++++- .../deployment-details.tsx | 9 ++++++++- .../+workloads-jobs/job-details.tsx | 9 ++++++++- .../+workloads-pods/pod-details.tsx | 12 +++++++++-- .../replicaset-details.tsx | 9 ++++++++- .../statefulset-details.tsx | 10 +++++++++- 22 files changed, 201 insertions(+), 36 deletions(-) diff --git a/src/extensions/registries/kube-object-detail-registry.ts b/src/extensions/registries/kube-object-detail-registry.ts index bfa8861ccf..1869424e92 100644 --- a/src/extensions/registries/kube-object-detail-registry.ts +++ b/src/extensions/registries/kube-object-detail-registry.ts @@ -9,13 +9,20 @@ export interface KubeObjectDetailRegistration { kind: string; apiVersions: string[]; components: KubeObjectDetailComponents; + priority?: number; } export class KubeObjectDetailRegistry extends BaseRegistry { getItemsForKind(kind: string, apiVersion: string) { - return this.items.filter((item) => { + const items = this.items.filter((item) => { return item.kind === kind && item.apiVersions.includes(apiVersion) + }).map((item) => { + if (item.priority === null) { + item.priority = 50 + } + return item }) + return items.sort((a, b) => b.priority - a.priority) } } diff --git a/src/renderer/components/+config-autoscalers/hpa-details.tsx b/src/renderer/components/+config-autoscalers/hpa-details.tsx index edd2624ba4..a3461f629d 100644 --- a/src/renderer/components/+config-autoscalers/hpa-details.tsx +++ b/src/renderer/components/+config-autoscalers/hpa-details.tsx @@ -121,8 +121,6 @@ export class HpaDetails extends React.Component {
{this.renderMetrics()}
- - ); } @@ -135,3 +133,12 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) + +kubeObjectDetailRegistry.add({ + kind: "HorizontalPodAutoscaler", + apiVersions: ["autoscaling/v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+config-maps/config-map-details.tsx b/src/renderer/components/+config-maps/config-map-details.tsx index a0d824ae98..0a890f6d04 100644 --- a/src/renderer/components/+config-maps/config-map-details.tsx +++ b/src/renderer/components/+config-maps/config-map-details.tsx @@ -87,8 +87,6 @@ export class ConfigMapDetails extends React.Component { ) } - - ); } @@ -101,3 +99,14 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) + +kubeObjectDetailRegistry.add({ + kind: "ConfigMap", + apiVersions: ["v1"], + priority: 5, + components: { + Details: (props) => + } +}) + + diff --git a/src/renderer/components/+events/kube-event-details.tsx b/src/renderer/components/+events/kube-event-details.tsx index 9716586869..5b3e5f23b9 100644 --- a/src/renderer/components/+events/kube-event-details.tsx +++ b/src/renderer/components/+events/kube-event-details.tsx @@ -29,7 +29,7 @@ export class KubeEventDetails extends React.Component { ) } return ( - <> +
Events @@ -57,7 +57,7 @@ export class KubeEventDetails extends React.Component { ) })}
- + ) } } diff --git a/src/renderer/components/+network-endpoints/endpoint-details.tsx b/src/renderer/components/+network-endpoints/endpoint-details.tsx index 27d25956f5..fa5ca675a3 100644 --- a/src/renderer/components/+network-endpoints/endpoint-details.tsx +++ b/src/renderer/components/+network-endpoints/endpoint-details.tsx @@ -31,8 +31,6 @@ export class EndpointDetails extends React.Component { ) }) } - - ); } @@ -45,3 +43,11 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) +kubeObjectDetailRegistry.add({ + kind: "Endpoints", + apiVersions: ["v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+network-ingresses/ingress-details.tsx b/src/renderer/components/+network-ingresses/ingress-details.tsx index f87da6fc7b..5a4479672b 100644 --- a/src/renderer/components/+network-ingresses/ingress-details.tsx +++ b/src/renderer/components/+network-ingresses/ingress-details.tsx @@ -127,8 +127,6 @@ export class IngressDetails extends React.Component { Load-Balancer Ingress Points}/> {this.renderIngressPoints(ingressPoints)} - - ) } @@ -141,3 +139,11 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) +kubeObjectDetailRegistry.add({ + kind: "Ingress", + apiVersions: ["extensions/v1beta1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+network-policies/network-policy-details.tsx b/src/renderer/components/+network-policies/network-policy-details.tsx index bf936a9477..6f38f6d02b 100644 --- a/src/renderer/components/+network-policies/network-policy-details.tsx +++ b/src/renderer/components/+network-policies/network-policy-details.tsx @@ -137,8 +137,6 @@ export class NetworkPolicyDetails extends React.Component { })} )} - - ); } @@ -151,3 +149,12 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) + +kubeObjectDetailRegistry.add({ + kind: "NetworkPolicy", + apiVersions: ["networking.k8s.io/v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+network-services/service-details.tsx b/src/renderer/components/+network-services/service-details.tsx index 5f438b498a..e43f7fab0c 100644 --- a/src/renderer/components/+network-services/service-details.tsx +++ b/src/renderer/components/+network-services/service-details.tsx @@ -78,8 +78,6 @@ export class ServiceDetails extends React.Component { - - ); } @@ -92,3 +90,12 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) + +kubeObjectDetailRegistry.add({ + kind: "Service", + apiVersions: ["v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+nodes/node-details.tsx b/src/renderer/components/+nodes/node-details.tsx index 9a09242c1f..1402b77be5 100644 --- a/src/renderer/components/+nodes/node-details.tsx +++ b/src/renderer/components/+nodes/node-details.tsx @@ -149,7 +149,6 @@ export class NodeDetails extends React.Component { maxCpu={node.getCpuCapacity()} maxMemory={node.getMemoryCapacity()} /> - ) } @@ -162,3 +161,12 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) + +kubeObjectDetailRegistry.add({ + kind: "Node", + apiVersions: ["v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+storage-classes/storage-class-details.tsx b/src/renderer/components/+storage-classes/storage-class-details.tsx index 1d24a61861..0edbc6426b 100644 --- a/src/renderer/components/+storage-classes/storage-class-details.tsx +++ b/src/renderer/components/+storage-classes/storage-class-details.tsx @@ -55,8 +55,6 @@ export class StorageClassDetails extends React.Component { } )} - - ); } @@ -69,3 +67,12 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) + +kubeObjectDetailRegistry.add({ + kind: "StorageClass", + apiVersions: ["storage.k8s.io/v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+storage-volume-claims/volume-claim-details.tsx b/src/renderer/components/+storage-volume-claims/volume-claim-details.tsx index 8b4e6187f1..c75251884d 100644 --- a/src/renderer/components/+storage-volume-claims/volume-claim-details.tsx +++ b/src/renderer/components/+storage-volume-claims/volume-claim-details.tsx @@ -88,8 +88,6 @@ export class PersistentVolumeClaimDetails extends React.Component { ))} - - ); } @@ -102,3 +100,12 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) + +kubeObjectDetailRegistry.add({ + kind: "PersistentVolumeClaim", + apiVersions: ["v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+storage-volumes/volume-details.tsx b/src/renderer/components/+storage-volumes/volume-details.tsx index 158eed4289..0cbb6d3ddc 100644 --- a/src/renderer/components/+storage-volumes/volume-details.tsx +++ b/src/renderer/components/+storage-volumes/volume-details.tsx @@ -96,8 +96,6 @@ export class PersistentVolumeDetails extends React.Component { )} - - ); } @@ -110,3 +108,12 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) + +kubeObjectDetailRegistry.add({ + kind: "PersistentVolume", + apiVersions: ["v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx b/src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx index 0d7de24412..afa1d1e43c 100644 --- a/src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx +++ b/src/renderer/components/+user-management-roles-bindings/role-binding-details.tsx @@ -112,8 +112,6 @@ export class RoleBindingDetails extends React.Component { )} - - AddRoleBindingDialog.open(roleBinding)} onRemove={selectedSubjects.length ? this.removeSelectedSubjects : null} @@ -132,6 +130,16 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) +kubeObjectDetailRegistry.add({ + kind: "RoleBinding", + apiVersions: ["rbac.authorization.k8s.io/v1"], + priority: 5, + components: { + Details: (props) => + } +}) + + kubeObjectDetailRegistry.add({ kind: "ClusterRoleBinding", apiVersions: ["rbac.authorization.k8s.io/v1"], @@ -139,3 +147,11 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) +kubeObjectDetailRegistry.add({ + kind: "ClusterRoleBinding", + apiVersions: ["rbac.authorization.k8s.io/v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+user-management-roles/role-details.tsx b/src/renderer/components/+user-management-roles/role-details.tsx index 164fbef093..fccc79eb9d 100644 --- a/src/renderer/components/+user-management-roles/role-details.tsx +++ b/src/renderer/components/+user-management-roles/role-details.tsx @@ -59,8 +59,6 @@ export class RoleDetails extends React.Component { ) })} - - ) } @@ -73,6 +71,14 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) +kubeObjectDetailRegistry.add({ + kind: "Role", + apiVersions: ["rbac.authorization.k8s.io/v1"], + priority: 5, + components: { + Details: (props) => + } +}) kubeObjectDetailRegistry.add({ kind: "ClusterRole", @@ -81,3 +87,11 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) +kubeObjectDetailRegistry.add({ + kind: "ClusterRole", + apiVersions: ["rbac.authorization.k8s.io/v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+user-management-service-accounts/service-accounts-details.tsx b/src/renderer/components/+user-management-service-accounts/service-accounts-details.tsx index 1d2fac6437..357baee9eb 100644 --- a/src/renderer/components/+user-management-service-accounts/service-accounts-details.tsx +++ b/src/renderer/components/+user-management-service-accounts/service-accounts-details.tsx @@ -125,8 +125,6 @@ export class ServiceAccountsDetails extends React.Component {
{this.renderSecrets()}
- - ) } @@ -139,3 +137,11 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) +kubeObjectDetailRegistry.add({ + kind: "ServiceAccount", + apiVersions: ["v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+workloads-cronjobs/cronjob-details.tsx b/src/renderer/components/+workloads-cronjobs/cronjob-details.tsx index 477819deb8..b540b6e8a6 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjob-details.tsx +++ b/src/renderer/components/+workloads-cronjobs/cronjob-details.tsx @@ -81,7 +81,6 @@ export class CronJobDetails extends React.Component { } } - ) } @@ -94,3 +93,11 @@ kubeObjectDetailRegistry.add({ Details: (props) => } }) +kubeObjectDetailRegistry.add({ + kind: "CronJob", + apiVersions: ["batch/v1"], + priority: 5, + components: { + Details: (props) => + } +}) diff --git a/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx b/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx index 1904bed4f0..c234fc841c 100644 --- a/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx +++ b/src/renderer/components/+workloads-daemonsets/daemonset-details.tsx @@ -91,7 +91,6 @@ export class DaemonSetDetails extends React.Component { - ) } @@ -104,3 +103,11 @@ kubeObjectDetailRegistry.add({ Details: (props: any) => } }) +kubeObjectDetailRegistry.add({ + kind: "DaemonSet", + apiVersions: ["apps/v1"], + priority: 5, + components: { + Details: (props: any) => + } +}) diff --git a/src/renderer/components/+workloads-deployments/deployment-details.tsx b/src/renderer/components/+workloads-deployments/deployment-details.tsx index 8e373cfd52..397af77530 100644 --- a/src/renderer/components/+workloads-deployments/deployment-details.tsx +++ b/src/renderer/components/+workloads-deployments/deployment-details.tsx @@ -116,7 +116,6 @@ export class DeploymentDetails extends React.Component { - ) } @@ -129,3 +128,11 @@ kubeObjectDetailRegistry.add({ Details: (props: any) => } }) +kubeObjectDetailRegistry.add({ + kind: "Deployment", + apiVersions: ["apps/v1"], + priority: 5, + components: { + Details: (props: any) => + } +}) diff --git a/src/renderer/components/+workloads-jobs/job-details.tsx b/src/renderer/components/+workloads-jobs/job-details.tsx index 7e537bc1f1..8cbee901d7 100644 --- a/src/renderer/components/+workloads-jobs/job-details.tsx +++ b/src/renderer/components/+workloads-jobs/job-details.tsx @@ -101,7 +101,6 @@ export class JobDetails extends React.Component { - ) } @@ -114,3 +113,11 @@ kubeObjectDetailRegistry.add({ Details: (props: any) => } }) +kubeObjectDetailRegistry.add({ + kind: "Job", + apiVersions: ["batch/v1"], + priority: 5, + components: { + Details: (props: any) => + } +}) diff --git a/src/renderer/components/+workloads-pods/pod-details.tsx b/src/renderer/components/+workloads-pods/pod-details.tsx index a029591bbd..ccd07a1f6f 100644 --- a/src/renderer/components/+workloads-pods/pod-details.tsx +++ b/src/renderer/components/+workloads-pods/pod-details.tsx @@ -215,7 +215,6 @@ export class PodDetails extends React.Component { })} )} - ) } @@ -225,6 +224,15 @@ kubeObjectDetailRegistry.add({ kind: "Pod", apiVersions: ["v1"], components: { - Details: (props: any) => + Details: (props: KubeObjectDetailsProps) => + } +}) + +kubeObjectDetailRegistry.add({ + kind: "Pod", + apiVersions: ["v1"], + priority: 5, + components: { + Details: (props: KubeObjectDetailsProps) => } }) diff --git a/src/renderer/components/+workloads-replicasets/replicaset-details.tsx b/src/renderer/components/+workloads-replicasets/replicaset-details.tsx index 9e8f9a5a3d..469b23c8be 100644 --- a/src/renderer/components/+workloads-replicasets/replicaset-details.tsx +++ b/src/renderer/components/+workloads-replicasets/replicaset-details.tsx @@ -91,7 +91,6 @@ export class ReplicaSetDetails extends React.Component { - ) } @@ -104,3 +103,11 @@ kubeObjectDetailRegistry.add({ Details: (props: any) => } }) +kubeObjectDetailRegistry.add({ + kind: "ReplicaSet", + apiVersions: ["apps/v1"], + priority: 5, + components: { + Details: (props: any) => + } +}) diff --git a/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx b/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx index 236a4bfe4a..2720a95a0d 100644 --- a/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx +++ b/src/renderer/components/+workloads-statefulsets/statefulset-details.tsx @@ -89,7 +89,6 @@ export class StatefulSetDetails extends React.Component { - ) } @@ -103,3 +102,12 @@ kubeObjectDetailRegistry.add({ Details: (props: any) => } }) + +kubeObjectDetailRegistry.add({ + kind: "StatefulSet", + apiVersions: ["apps/v1"], + priority: 5, + components: { + Details: (props: any) => + } +})