mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Move all RouteParam's and URL builders to src/common (#2778)
- Prevents some circular dependencies - Allowed main to use them as needed Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
540c6dac37
commit
5ee2ab5b4a
@ -40,7 +40,7 @@ describe("Lens command palette", () => {
|
||||
|
||||
it("opens command dialog from menu", async () => {
|
||||
await app.electron.ipcRenderer.send("test-menu-item-click", "View", "Command Palette...");
|
||||
await app.client.waitUntilTextExists(".Select__option", "Preferences: Open");
|
||||
await app.client.waitUntilTextExists(".Select__option", "Hotbar: Switch");
|
||||
await app.client.keys("Escape");
|
||||
});
|
||||
});
|
||||
|
||||
@ -26,9 +26,9 @@ import { ClusterStore } from "../cluster-store";
|
||||
import { requestMain } from "../ipc";
|
||||
import { productName } from "../vars";
|
||||
import { CatalogCategory, CatalogCategorySpec } from "../catalog";
|
||||
import { addClusterURL } from "../routes";
|
||||
import { app } from "electron";
|
||||
|
||||
|
||||
export type KubernetesClusterPrometheusMetrics = {
|
||||
address?: {
|
||||
namespace: string;
|
||||
@ -172,7 +172,7 @@ export class KubernetesClusterCategory extends CatalogCategory {
|
||||
icon: "text_snippet",
|
||||
title: "Add from kubeconfig",
|
||||
onClick: () => {
|
||||
ctx.navigate("/add-cluster");
|
||||
ctx.navigate(addClusterURL());
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const addClusterRoute: RouteProps = {
|
||||
path: "/add-cluster"
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const appsRoute: RouteProps = {
|
||||
path: "/apps",
|
||||
@ -20,9 +20,9 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export interface ICatalogViewRouteParam {
|
||||
export interface CatalogViewRouteParam {
|
||||
group?: string;
|
||||
kind?: string;
|
||||
}
|
||||
@ -30,4 +30,4 @@ export const catalogRoute: RouteProps = {
|
||||
path: "/catalog/:group?/:kind?"
|
||||
};
|
||||
|
||||
export const catalogURL = buildURL<ICatalogViewRouteParam>(catalogRoute.path);
|
||||
export const catalogURL = buildURL<CatalogViewRouteParam>(catalogRoute.path);
|
||||
@ -20,9 +20,9 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export interface IClusterViewRouteParams {
|
||||
export interface ClusterViewRouteParams {
|
||||
clusterId: string;
|
||||
}
|
||||
|
||||
@ -31,4 +31,4 @@ export const clusterViewRoute: RouteProps = {
|
||||
path: "/cluster/:clusterId",
|
||||
};
|
||||
|
||||
export const clusterViewURL = buildURL<IClusterViewRouteParams>(clusterViewRoute.path);
|
||||
export const clusterViewURL = buildURL<ClusterViewRouteParams>(clusterViewRoute.path);
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const clusterRoute: RouteProps = {
|
||||
path: "/cluster"
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const configMapsRoute: RouteProps = {
|
||||
path: "/configmaps"
|
||||
};
|
||||
|
||||
export interface IConfigMapsRouteParams {
|
||||
export interface ConfigMapsRouteParams {
|
||||
}
|
||||
|
||||
export const configMapsURL = buildURL<IConfigMapsRouteParams>(configMapsRoute.path);
|
||||
export const configMapsURL = buildURL<ConfigMapsRouteParams>(configMapsRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import type { IURLParams } from "../../../common/utils/buildUrl";
|
||||
import { configMapsRoute, configMapsURL } from "../+config-maps/config-maps.route";
|
||||
import { hpaRoute } from "../+config-autoscalers";
|
||||
import { limitRangesRoute } from "../+config-limit-ranges";
|
||||
import { pdbRoute } from "../+config-pod-disruption-budgets";
|
||||
import { resourceQuotaRoute } from "../+config-resource-quotas";
|
||||
import { secretsRoute } from "../+config-secrets";
|
||||
import type { URLParams } from "../utils/buildUrl";
|
||||
import { configMapsRoute, configMapsURL } from "./config-maps";
|
||||
import { hpaRoute } from "./hpa";
|
||||
import { limitRangesRoute } from "./limit-ranges";
|
||||
import { pdbRoute } from "./pod-disruption-budgets";
|
||||
import { resourceQuotaRoute } from "./resource-quotas";
|
||||
import { secretsRoute } from "./secrets";
|
||||
|
||||
export const configRoute: RouteProps = {
|
||||
path: [
|
||||
@ -39,4 +39,4 @@ export const configRoute: RouteProps = {
|
||||
].map(route => route.path.toString())
|
||||
};
|
||||
|
||||
export const configURL = (params?: IURLParams) => configMapsURL(params);
|
||||
export const configURL = (params?: URLParams) => configMapsURL(params);
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const crdRoute: RouteProps = {
|
||||
path: "/crd"
|
||||
@ -34,14 +34,14 @@ export const crdResourcesRoute: RouteProps = {
|
||||
path: `${crdRoute.path}/:group/:name`
|
||||
};
|
||||
|
||||
export interface ICRDListQuery {
|
||||
export interface CRDListQuery {
|
||||
groups?: string;
|
||||
}
|
||||
|
||||
export interface ICRDRouteParams {
|
||||
export interface CRDRouteParams {
|
||||
group: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
export const crdURL = buildURL<{}, ICRDListQuery>(crdDefinitionsRoute.path);
|
||||
export const crdResourcesURL = buildURL<ICRDRouteParams>(crdResourcesRoute.path);
|
||||
export const crdURL = buildURL<{}, CRDListQuery>(crdDefinitionsRoute.path);
|
||||
export const crdResourcesURL = buildURL<CRDRouteParams>(crdResourcesRoute.path);
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const endpointRoute: RouteProps = {
|
||||
path: "/endpoints"
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export interface EntitySettingsRouteParams {
|
||||
entityId: string;
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const eventRoute: RouteProps = {
|
||||
path: "/events"
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const extensionsRoute: RouteProps = {
|
||||
path: "/extensions"
|
||||
@ -20,16 +20,16 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { appsRoute } from "../+apps/apps.route";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
import { appsRoute } from "./apps";
|
||||
|
||||
export const helmChartsRoute: RouteProps = {
|
||||
path: `${appsRoute.path}/charts/:repo?/:chartName?`
|
||||
};
|
||||
|
||||
export interface IHelmChartsRouteParams {
|
||||
export interface HelmChartsRouteParams {
|
||||
chartName?: string;
|
||||
repo?: string;
|
||||
}
|
||||
|
||||
export const helmChartsURL = buildURL<IHelmChartsRouteParams>(helmChartsRoute.path);
|
||||
export const helmChartsURL = buildURL<HelmChartsRouteParams>(helmChartsRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const hpaRoute: RouteProps = {
|
||||
path: "/hpa"
|
||||
};
|
||||
|
||||
export interface IHpaRouteParams {
|
||||
export interface HpaRouteParams {
|
||||
}
|
||||
|
||||
export const hpaURL = buildURL<IHpaRouteParams>(hpaRoute.path);
|
||||
export const hpaURL = buildURL<HpaRouteParams>(hpaRoute.path);
|
||||
@ -19,5 +19,36 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./cluster.route";
|
||||
|
||||
export * from "./add-cluster";
|
||||
export * from "./apps";
|
||||
export * from "./catalog";
|
||||
export * from "./cluster-view";
|
||||
export * from "./cluster";
|
||||
export * from "./config-maps";
|
||||
export * from "./config";
|
||||
export * from "./crd";
|
||||
export * from "./endpoints";
|
||||
export * from "./entity-settings";
|
||||
export * from "./events";
|
||||
export * from "./extensions";
|
||||
export * from "./helm-charts";
|
||||
export * from "./hpa";
|
||||
export * from "./ingresses";
|
||||
export * from "./limit-ranges";
|
||||
export * from "./namespaces";
|
||||
export * from "./network-policies";
|
||||
export * from "./network";
|
||||
export * from "./nodes";
|
||||
export * from "./pod-disruption-budgets";
|
||||
export * from "./preferences";
|
||||
export * from "./releases";
|
||||
export * from "./resource-quotas";
|
||||
export * from "./secrets";
|
||||
export * from "./services";
|
||||
export * from "./storage-classes";
|
||||
export * from "./storage";
|
||||
export * from "./user-management";
|
||||
export * from "./volume-claims";
|
||||
export * from "./volumes";
|
||||
export * from "./welcome";
|
||||
export * from "./workloads";
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const ingressRoute: RouteProps = {
|
||||
path: "/ingresses"
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const limitRangesRoute: RouteProps = {
|
||||
path: "/limitranges"
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const namespacesRoute: RouteProps = {
|
||||
path: "/namespaces"
|
||||
};
|
||||
|
||||
export interface INamespacesRouteParams {
|
||||
export interface NamespacesRouteParams {
|
||||
}
|
||||
|
||||
export const namespacesURL = buildURL<INamespacesRouteParams>(namespacesRoute.path);
|
||||
export const namespacesURL = buildURL<NamespacesRouteParams>(namespacesRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const networkPoliciesRoute: RouteProps = {
|
||||
path: "/network-policies"
|
||||
};
|
||||
|
||||
export interface INetworkPoliciesRouteParams {
|
||||
export interface NetworkPoliciesRouteParams {
|
||||
}
|
||||
|
||||
export const networkPoliciesURL = buildURL<INetworkPoliciesRouteParams>(networkPoliciesRoute.path);
|
||||
export const networkPoliciesURL = buildURL<NetworkPoliciesRouteParams>(networkPoliciesRoute.path);
|
||||
@ -20,19 +20,19 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { endpointRoute } from "../+network-endpoints";
|
||||
import { ingressRoute } from "../+network-ingresses";
|
||||
import { networkPoliciesRoute } from "../+network-policies";
|
||||
import { servicesRoute, servicesURL } from "../+network-services";
|
||||
import type { IURLParams } from "../../../common/utils/buildUrl";
|
||||
import type { URLParams } from "../utils/buildUrl";
|
||||
import { endpointRoute } from "./endpoints";
|
||||
import { ingressRoute } from "./ingresses";
|
||||
import { networkPoliciesRoute } from "./network-policies";
|
||||
import { servicesRoute, servicesURL } from "./services";
|
||||
|
||||
export const networkRoute: RouteProps = {
|
||||
path: [
|
||||
servicesRoute,
|
||||
endpointRoute,
|
||||
ingressRoute,
|
||||
networkPoliciesRoute
|
||||
networkPoliciesRoute,
|
||||
].map(route => route.path.toString())
|
||||
};
|
||||
|
||||
export const networkURL = (params?: IURLParams) => servicesURL(params);
|
||||
export const networkURL = (params?: URLParams) => servicesURL(params);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const nodesRoute: RouteProps = {
|
||||
path: "/nodes"
|
||||
};
|
||||
|
||||
export interface INodesRouteParams {
|
||||
export interface NodesRouteParams {
|
||||
}
|
||||
|
||||
export const nodesURL = buildURL<INodesRouteParams>(nodesRoute.path);
|
||||
export const nodesURL = buildURL<NodesRouteParams>(nodesRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const pdbRoute: RouteProps = {
|
||||
path: "/poddisruptionbudgets"
|
||||
};
|
||||
|
||||
export interface IPodDisruptionBudgetsRouteParams {
|
||||
export interface PodDisruptionBudgetsRouteParams {
|
||||
}
|
||||
|
||||
export const pdbURL = buildURL<IPodDisruptionBudgetsRouteParams>(pdbRoute.path);
|
||||
export const pdbURL = buildURL<PodDisruptionBudgetsRouteParams>(pdbRoute.path);
|
||||
29
src/common/routes/preferences.ts
Normal file
29
src/common/routes/preferences.ts
Normal file
@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Copyright (c) 2021 OpenLens Authors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const preferencesRoute: RouteProps = {
|
||||
path: "/preferences"
|
||||
};
|
||||
|
||||
export const preferencesURL = buildURL(preferencesRoute.path);
|
||||
@ -20,16 +20,16 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { appsRoute } from "../+apps/apps.route";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
import { appsRoute } from "./apps";
|
||||
|
||||
export const releaseRoute: RouteProps = {
|
||||
path: `${appsRoute.path}/releases/:namespace?/:name?`
|
||||
};
|
||||
|
||||
export interface IReleaseRouteParams {
|
||||
export interface ReleaseRouteParams {
|
||||
name?: string;
|
||||
namespace?: string;
|
||||
}
|
||||
|
||||
export const releaseURL = buildURL<IReleaseRouteParams>(releaseRoute.path);
|
||||
export const releaseURL = buildURL<ReleaseRouteParams>(releaseRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const resourceQuotaRoute: RouteProps = {
|
||||
path: "/resourcequotas"
|
||||
};
|
||||
|
||||
export interface IResourceQuotaRouteParams {
|
||||
export interface ResourceQuotaRouteParams {
|
||||
}
|
||||
|
||||
export const resourceQuotaURL = buildURL<IResourceQuotaRouteParams>(resourceQuotaRoute.path);
|
||||
export const resourceQuotaURL = buildURL<ResourceQuotaRouteParams>(resourceQuotaRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const secretsRoute: RouteProps = {
|
||||
path: "/secrets"
|
||||
};
|
||||
|
||||
export interface ISecretsRouteParams {
|
||||
export interface SecretsRouteParams {
|
||||
}
|
||||
|
||||
export const secretsURL = buildURL(secretsRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const servicesRoute: RouteProps = {
|
||||
path: "/services"
|
||||
};
|
||||
|
||||
export interface IServicesRouteParams {
|
||||
export interface ServicesRouteParams {
|
||||
}
|
||||
|
||||
export const servicesURL = buildURL<IServicesRouteParams>(servicesRoute.path);
|
||||
export const servicesURL = buildURL<ServicesRouteParams>(servicesRoute.path);
|
||||
@ -20,14 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const storageClassesRoute: RouteProps = {
|
||||
path: "/storage-classes"
|
||||
};
|
||||
|
||||
export interface IStorageClassesRouteParams {
|
||||
export interface StorageClassesRouteParams {
|
||||
}
|
||||
|
||||
export const storageClassesURL = buildURL<IStorageClassesRouteParams>(storageClassesRoute.path);
|
||||
|
||||
export const storageClassesURL = buildURL<StorageClassesRouteParams>(storageClassesRoute.path);
|
||||
@ -20,10 +20,10 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { storageClassesRoute } from "../+storage-classes";
|
||||
import { volumeClaimsRoute, volumeClaimsURL } from "../+storage-volume-claims";
|
||||
import { volumesRoute } from "../+storage-volumes";
|
||||
import type { IURLParams } from "../../../common/utils/buildUrl";
|
||||
import type { URLParams } from "../utils/buildUrl";
|
||||
import { storageClassesRoute } from "./storage-classes";
|
||||
import { volumeClaimsRoute, volumeClaimsURL } from "./volume-claims";
|
||||
import { volumesRoute } from "./volumes";
|
||||
|
||||
export const storageRoute: RouteProps = {
|
||||
path: [
|
||||
@ -33,4 +33,4 @@ export const storageRoute: RouteProps = {
|
||||
].map(route => route.path.toString())
|
||||
};
|
||||
|
||||
export const storageURL = (params?: IURLParams) => volumeClaimsURL(params);
|
||||
export const storageURL = (params?: URLParams) => volumeClaimsURL(params);
|
||||
@ -19,9 +19,8 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import { buildURL, IURLParams } from "../../../common/utils/buildUrl";
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL, URLParams } from "../utils/buildUrl";
|
||||
|
||||
// Routes
|
||||
export const serviceAccountsRoute: RouteProps = {
|
||||
@ -71,10 +70,10 @@ export interface ClusterRolesRouteParams {
|
||||
}
|
||||
|
||||
// URL-builders
|
||||
export const usersManagementURL = (params?: IURLParams) => serviceAccountsURL(params);
|
||||
export const usersManagementURL = (params?: URLParams) => serviceAccountsURL(params);
|
||||
export const serviceAccountsURL = buildURL<ServiceAccountsRouteParams>(serviceAccountsRoute.path);
|
||||
export const podSecurityPoliciesURL = buildURL(podSecurityPoliciesRoute.path);
|
||||
export const roleBindingsURL = buildURL<RoleBindingsRouteParams>(roleBindingsRoute.path);
|
||||
export const clusterRoleBindingsURL = buildURL<ClusterRoleBindingsRouteParams>(clusterRoleBindingsRoute.path);
|
||||
export const rolesURL = buildURL<RoleBindingsRouteParams>(rolesRoute.path);
|
||||
export const roleBindingsURL = buildURL<RoleBindingsRouteParams>(roleBindingsRoute.path);
|
||||
export const clusterRolesURL = buildURL<ClusterRoleBindingsRouteParams>(clusterRolesRoute.path);
|
||||
export const clusterRoleBindingsURL = buildURL<ClusterRoleBindingsRouteParams>(clusterRoleBindingsRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const volumeClaimsRoute: RouteProps = {
|
||||
path: "/persistent-volume-claims"
|
||||
};
|
||||
|
||||
export interface IVolumeClaimsRouteParams {
|
||||
export interface VolumeClaimsRouteParams {
|
||||
}
|
||||
|
||||
export const volumeClaimsURL = buildURL<IVolumeClaimsRouteParams>(volumeClaimsRoute.path);
|
||||
export const volumeClaimsURL = buildURL<VolumeClaimsRouteParams>(volumeClaimsRoute.path);
|
||||
@ -20,13 +20,13 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const volumesRoute: RouteProps = {
|
||||
path: "/persistent-volumes"
|
||||
};
|
||||
|
||||
export interface IVolumesRouteParams {
|
||||
export interface VolumesRouteParams {
|
||||
}
|
||||
|
||||
export const volumesURL = buildURL<IVolumesRouteParams>(volumesRoute.path);
|
||||
export const volumesURL = buildURL<VolumesRouteParams>(volumesRoute.path);
|
||||
@ -20,7 +20,7 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { buildURL } from "../utils/buildUrl";
|
||||
|
||||
export const welcomeRoute: RouteProps = {
|
||||
path: "/welcome"
|
||||
@ -20,8 +20,8 @@
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { buildURL, IURLParams } from "../../../common/utils/buildUrl";
|
||||
import type { KubeResource } from "../../../common/rbac";
|
||||
import { buildURL, URLParams } from "../utils/buildUrl";
|
||||
import type { KubeResource } from "../rbac";
|
||||
|
||||
// Routes
|
||||
export const overviewRoute: RouteProps = {
|
||||
@ -63,40 +63,40 @@ export const workloadsRoute: RouteProps = {
|
||||
};
|
||||
|
||||
// Route params
|
||||
export interface IWorkloadsOverviewRouteParams {
|
||||
export interface WorkloadsOverviewRouteParams {
|
||||
}
|
||||
|
||||
export interface IPodsRouteParams {
|
||||
export interface PodsRouteParams {
|
||||
}
|
||||
|
||||
export interface IDeploymentsRouteParams {
|
||||
export interface DeploymentsRouteParams {
|
||||
}
|
||||
|
||||
export interface IDaemonSetsRouteParams {
|
||||
export interface DaemonSetsRouteParams {
|
||||
}
|
||||
|
||||
export interface IStatefulSetsRouteParams {
|
||||
export interface StatefulSetsRouteParams {
|
||||
}
|
||||
|
||||
export interface IReplicaSetsRouteParams {
|
||||
export interface ReplicaSetsRouteParams {
|
||||
}
|
||||
|
||||
export interface IJobsRouteParams {
|
||||
export interface JobsRouteParams {
|
||||
}
|
||||
|
||||
export interface ICronJobsRouteParams {
|
||||
export interface CronJobsRouteParams {
|
||||
}
|
||||
|
||||
// URL-builders
|
||||
export const workloadsURL = (params?: IURLParams) => overviewURL(params);
|
||||
export const overviewURL = buildURL<IWorkloadsOverviewRouteParams>(overviewRoute.path);
|
||||
export const podsURL = buildURL<IPodsRouteParams>(podsRoute.path);
|
||||
export const deploymentsURL = buildURL<IDeploymentsRouteParams>(deploymentsRoute.path);
|
||||
export const daemonSetsURL = buildURL<IDaemonSetsRouteParams>(daemonSetsRoute.path);
|
||||
export const statefulSetsURL = buildURL<IStatefulSetsRouteParams>(statefulSetsRoute.path);
|
||||
export const replicaSetsURL = buildURL<IReplicaSetsRouteParams>(replicaSetsRoute.path);
|
||||
export const jobsURL = buildURL<IJobsRouteParams>(jobsRoute.path);
|
||||
export const cronJobsURL = buildURL<ICronJobsRouteParams>(cronJobsRoute.path);
|
||||
export const workloadsURL = (params?: URLParams) => overviewURL(params);
|
||||
export const overviewURL = buildURL<WorkloadsOverviewRouteParams>(overviewRoute.path);
|
||||
export const podsURL = buildURL<PodsRouteParams>(podsRoute.path);
|
||||
export const deploymentsURL = buildURL<DeploymentsRouteParams>(deploymentsRoute.path);
|
||||
export const daemonSetsURL = buildURL<DaemonSetsRouteParams>(daemonSetsRoute.path);
|
||||
export const statefulSetsURL = buildURL<StatefulSetsRouteParams>(statefulSetsRoute.path);
|
||||
export const replicaSetsURL = buildURL<ReplicaSetsRouteParams>(replicaSetsRoute.path);
|
||||
export const jobsURL = buildURL<JobsRouteParams>(jobsRoute.path);
|
||||
export const cronJobsURL = buildURL<CronJobsRouteParams>(cronJobsRoute.path);
|
||||
|
||||
export const workloadURL: Partial<Record<KubeResource, ReturnType<typeof buildURL>>> = {
|
||||
"pods": podsURL,
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
import { compile } from "path-to-regexp";
|
||||
|
||||
export interface IURLParams<P extends object = {}, Q extends object = {}> {
|
||||
export interface URLParams<P extends object = {}, Q extends object = {}> {
|
||||
params?: P;
|
||||
query?: Q;
|
||||
fragment?: string;
|
||||
@ -30,7 +30,7 @@ export interface IURLParams<P extends object = {}, Q extends object = {}> {
|
||||
export function buildURL<P extends object = {}, Q extends object = {}>(path: string | any) {
|
||||
const pathBuilder = compile(String(path));
|
||||
|
||||
return function ({ params, query, fragment }: IURLParams<P, Q> = {}): string {
|
||||
return function ({ params, query, fragment }: URLParams<P, Q> = {}): string {
|
||||
const queryParams = query ? new URLSearchParams(Object.entries(query)).toString() : "";
|
||||
const parts = [
|
||||
pathBuilder(params),
|
||||
|
||||
@ -24,7 +24,7 @@ import { navigation, PageParam, PageParamInit } from "../../renderer/navigation"
|
||||
export type { PageParamInit, PageParam } from "../../renderer/navigation/page-param";
|
||||
export { navigate, isActiveRoute } from "../../renderer/navigation/helpers";
|
||||
export { hideDetails, showDetails, getDetailsUrl } from "../../renderer/components/kube-object/kube-object-details";
|
||||
export type { IURLParams } from "../../common/utils/buildUrl";
|
||||
export type { URLParams } from "../../common/utils/buildUrl";
|
||||
|
||||
export function createPageParam<V>(init: PageParamInit<V>) {
|
||||
return new PageParam<V>(init, navigation);
|
||||
|
||||
@ -23,16 +23,12 @@ import { app, BrowserWindow, dialog, ipcMain, IpcMainEvent, Menu, MenuItem, Menu
|
||||
import { autorun } from "mobx";
|
||||
import type { WindowManager } from "./window-manager";
|
||||
import { appName, isMac, isWindows, isTestEnv, docsUrl, supportUrl, productName } from "../common/vars";
|
||||
import { addClusterURL } from "../renderer/components/+add-cluster/add-cluster.route";
|
||||
import { preferencesURL } from "../renderer/components/+preferences/preferences.route";
|
||||
import { welcomeURL } from "../renderer/components/+welcome/welcome.route";
|
||||
import { extensionsURL } from "../renderer/components/+extensions/extensions.route";
|
||||
import { catalogURL } from "../renderer/components/+catalog/catalog.route";
|
||||
import { menuRegistry } from "../extensions/registries/menu-registry";
|
||||
import logger from "./logger";
|
||||
import { exitApp } from "./exit-app";
|
||||
import { broadcastMessage } from "../common/ipc";
|
||||
import * as packageJson from "../../package.json";
|
||||
import { preferencesURL, extensionsURL, addClusterURL, catalogURL, welcomeURL } from "../common/routes";
|
||||
|
||||
export type MenuTopId = "mac" | "file" | "edit" | "view" | "help";
|
||||
|
||||
|
||||
@ -26,10 +26,10 @@ import { autorun } from "mobx";
|
||||
import { showAbout } from "./menu";
|
||||
import { checkForUpdates, isAutoUpdateEnabled } from "./app-updater";
|
||||
import type { WindowManager } from "./window-manager";
|
||||
import { preferencesURL } from "../renderer/components/+preferences/preferences.route";
|
||||
import logger from "./logger";
|
||||
import { isDevelopment, isWindows, productName } from "../common/vars";
|
||||
import { exitApp } from "./exit-app";
|
||||
import { preferencesURL } from "../common/routes";
|
||||
|
||||
const TRAY_LOG_PREFIX = "[TRAY]";
|
||||
|
||||
|
||||
@ -20,8 +20,8 @@
|
||||
*/
|
||||
|
||||
import { KubeObject } from "../kube-object";
|
||||
import { crdResourcesURL } from "../../components/+custom-resources/crd.route";
|
||||
import { KubeApi } from "../kube-api";
|
||||
import { crdResourcesURL } from "../../../common/routes";
|
||||
|
||||
type AdditionalPrinterColumnsCommon = {
|
||||
name: string;
|
||||
|
||||
@ -29,7 +29,7 @@ import { observer } from "mobx-react";
|
||||
import path from "path";
|
||||
import React from "react";
|
||||
|
||||
import { catalogURL } from "../+catalog";
|
||||
import { catalogURL } from "../../../common/routes";
|
||||
import { ClusterStore } from "../../../common/cluster-store";
|
||||
import { appEventBus } from "../../../common/event-bus";
|
||||
import { loadConfigFromString, splitConfig } from "../../../common/kube-helpers";
|
||||
|
||||
@ -20,4 +20,3 @@
|
||||
*/
|
||||
|
||||
export * from "./add-cluster";
|
||||
export * from "./add-cluster.route";
|
||||
|
||||
@ -24,12 +24,13 @@ import "./helm-charts.scss";
|
||||
import React, { Component } from "react";
|
||||
import type { RouteComponentProps } from "react-router";
|
||||
import { observer } from "mobx-react";
|
||||
import { helmChartsURL, IHelmChartsRouteParams } from "./helm-charts.route";
|
||||
import { helmChartStore } from "./helm-chart.store";
|
||||
import type { HelmChart } from "../../api/endpoints/helm-charts.api";
|
||||
import { HelmChartDetails } from "./helm-chart-details";
|
||||
import { navigation } from "../../navigation";
|
||||
import { ItemListLayout } from "../item-object-list/item-list-layout";
|
||||
import { helmChartsURL } from "../../../common/routes";
|
||||
import type { HelmChartsRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -39,7 +40,7 @@ enum columnId {
|
||||
repo = "repo",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IHelmChartsRouteParams> {
|
||||
interface Props extends RouteComponentProps<HelmChartsRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -20,4 +20,3 @@
|
||||
*/
|
||||
|
||||
export * from "./helm-charts";
|
||||
export * from "./helm-charts.route";
|
||||
|
||||
@ -20,4 +20,3 @@
|
||||
*/
|
||||
|
||||
export * from "./releases";
|
||||
export * from "./release.route";
|
||||
|
||||
@ -26,7 +26,6 @@ import kebabCase from "lodash/kebabCase";
|
||||
import { disposeOnUnmount, observer } from "mobx-react";
|
||||
import type { RouteComponentProps } from "react-router";
|
||||
import { releaseStore } from "./release.store";
|
||||
import { IReleaseRouteParams, releaseURL } from "./release.route";
|
||||
import type { HelmRelease } from "../../api/endpoints/helm-releases.api";
|
||||
import { ReleaseDetails } from "./release-details";
|
||||
import { ReleaseRollbackDialog } from "./release-rollback-dialog";
|
||||
@ -35,6 +34,8 @@ import { ItemListLayout } from "../item-object-list/item-list-layout";
|
||||
import { HelmReleaseMenu } from "./release-menu";
|
||||
import { secretsStore } from "../+config-secrets/secrets.store";
|
||||
import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter";
|
||||
import type { ReleaseRouteParams } from "../../../common/routes";
|
||||
import { releaseURL } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -47,7 +48,7 @@ enum columnId {
|
||||
updated = "update"
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IReleaseRouteParams> {
|
||||
interface Props extends RouteComponentProps<ReleaseRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -21,8 +21,7 @@
|
||||
|
||||
import { navigate } from "../../navigation";
|
||||
import { commandRegistry } from "../../../extensions/registries/command-registry";
|
||||
import { helmChartsURL } from "../+apps-helm-charts";
|
||||
import { releaseURL } from "../+apps-releases";
|
||||
import { helmChartsURL, releaseURL } from "../../../common/routes";
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewHelmCharts",
|
||||
|
||||
@ -22,8 +22,9 @@
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
|
||||
import { HelmCharts, helmChartsRoute, helmChartsURL } from "../+apps-helm-charts";
|
||||
import { HelmReleases, releaseRoute, releaseURL } from "../+apps-releases";
|
||||
import { HelmCharts } from "../+apps-helm-charts";
|
||||
import { HelmReleases } from "../+apps-releases";
|
||||
import { helmChartsURL, helmChartsRoute, releaseURL, releaseRoute } from "../../../common/routes";
|
||||
|
||||
@observer
|
||||
export class Apps extends React.Component {
|
||||
|
||||
@ -20,5 +20,4 @@
|
||||
*/
|
||||
|
||||
export * from "./apps";
|
||||
export * from "./apps.route";
|
||||
export * from "./apps.command";
|
||||
|
||||
@ -37,16 +37,15 @@ import { Tab, Tabs } from "../tabs";
|
||||
import { catalogCategoryRegistry } from "../../../common/catalog";
|
||||
import { CatalogAddButton } from "./catalog-add-button";
|
||||
import type { RouteComponentProps } from "react-router";
|
||||
import type { ICatalogViewRouteParam } from "./catalog.route";
|
||||
import { Notifications } from "../notifications";
|
||||
import { Avatar } from "../avatar/avatar";
|
||||
import { MainLayout } from "../layout/main-layout";
|
||||
import { cssNames } from "../../utils";
|
||||
import { TopBar } from "../layout/topbar";
|
||||
import { welcomeURL } from "../+welcome";
|
||||
import { Icon } from "../icon";
|
||||
import { MaterialTooltip } from "../material-tooltip/material-tooltip";
|
||||
import { CatalogEntityDetails } from "./catalog-entity-details";
|
||||
import { CatalogViewRouteParam, welcomeURL } from "../../../common/routes";
|
||||
|
||||
enum sortBy {
|
||||
name = "name",
|
||||
@ -55,8 +54,7 @@ enum sortBy {
|
||||
status = "status"
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<ICatalogViewRouteParam> {}
|
||||
|
||||
interface Props extends RouteComponentProps<CatalogViewRouteParam> {}
|
||||
@observer
|
||||
export class Catalog extends React.Component<Props> {
|
||||
@observable private catalogEntityStore?: CatalogEntityStore;
|
||||
|
||||
@ -19,5 +19,4 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./catalog.route";
|
||||
export * from "./catalog";
|
||||
|
||||
@ -25,12 +25,12 @@ import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import type { RouteComponentProps } from "react-router";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import type { IHpaRouteParams } from "./hpa.route";
|
||||
import type { HorizontalPodAutoscaler } from "../../api/endpoints/hpa.api";
|
||||
import { hpaStore } from "./hpa.store";
|
||||
import { Badge } from "../badge";
|
||||
import { cssNames } from "../../utils";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { HpaRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -43,7 +43,7 @@ enum columnId {
|
||||
status = "status"
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IHpaRouteParams> {
|
||||
interface Props extends RouteComponentProps<HpaRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -21,4 +21,3 @@
|
||||
|
||||
export * from "./hpa";
|
||||
export * from "./hpa-details";
|
||||
export * from "./hpa.route";
|
||||
|
||||
@ -20,5 +20,4 @@
|
||||
*/
|
||||
|
||||
export * from "./limit-ranges";
|
||||
export * from "./limit-ranges.route";
|
||||
export * from "./limit-range-details";
|
||||
|
||||
@ -25,10 +25,10 @@ import type { RouteComponentProps } from "react-router";
|
||||
import { observer } from "mobx-react";
|
||||
import { KubeObjectListLayout } from "../kube-object/kube-object-list-layout";
|
||||
import { limitRangeStore } from "./limit-ranges.store";
|
||||
import type { LimitRangeRouteParams } from "./limit-ranges.route";
|
||||
import React from "react";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { LimitRange } from "../../api/endpoints/limit-range.api";
|
||||
import type { LimitRangeRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
|
||||
@ -27,8 +27,8 @@ import type { RouteComponentProps } from "react-router";
|
||||
import { configMapsStore } from "./config-maps.store";
|
||||
import type { ConfigMap } from "../../api/endpoints/configmap.api";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import type { IConfigMapsRouteParams } from "./config-maps.route";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { ConfigMapsRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -37,7 +37,7 @@ enum columnId {
|
||||
age = "age",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IConfigMapsRouteParams> {
|
||||
interface Props extends RouteComponentProps<ConfigMapsRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./config-maps.route";
|
||||
export * from "./config-maps";
|
||||
export * from "./config-map-details";
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./pod-disruption-budgets.route";
|
||||
export * from "./pod-disruption-budgets";
|
||||
export * from "./pod-disruption-budgets-details";
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./resource-quotas.route";
|
||||
export * from "./resource-quotas";
|
||||
export * from "./resource-quota-details";
|
||||
|
||||
@ -28,8 +28,8 @@ import { KubeObjectListLayout } from "../kube-object";
|
||||
import type { ResourceQuota } from "../../api/endpoints/resource-quota.api";
|
||||
import { AddQuotaDialog } from "./add-quota-dialog";
|
||||
import { resourceQuotaStore } from "./resource-quotas.store";
|
||||
import type { IResourceQuotaRouteParams } from "./resource-quotas.route";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { ResourceQuotaRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -37,7 +37,7 @@ enum columnId {
|
||||
age = "age"
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IResourceQuotaRouteParams> {
|
||||
interface Props extends RouteComponentProps<ResourceQuotaRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -19,7 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./secrets.route";
|
||||
export * from "./secrets";
|
||||
export * from "./secret-details";
|
||||
|
||||
|
||||
@ -26,11 +26,11 @@ import { observer } from "mobx-react";
|
||||
import type { RouteComponentProps } from "react-router";
|
||||
import type { Secret } from "../../api/endpoints";
|
||||
import { AddSecretDialog } from "./add-secret-dialog";
|
||||
import type { ISecretsRouteParams } from "./secrets.route";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import { Badge } from "../badge";
|
||||
import { secretsStore } from "./secrets.store";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { SecretsRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -41,7 +41,7 @@ enum columnId {
|
||||
age = "age",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<ISecretsRouteParams> {
|
||||
interface Props extends RouteComponentProps<SecretsRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -21,51 +21,46 @@
|
||||
|
||||
import { navigate } from "../../navigation";
|
||||
import { commandRegistry } from "../../../extensions/registries/command-registry";
|
||||
import { configMapsURL } from "../+config-maps";
|
||||
import { secretsURL } from "../+config-secrets";
|
||||
import { resourceQuotaURL } from "../+config-resource-quotas";
|
||||
import { limitRangeURL } from "../+config-limit-ranges";
|
||||
import { hpaURL } from "../+config-autoscalers";
|
||||
import { pdbURL } from "../+config-pod-disruption-budgets";
|
||||
import * as routes from "../../../common/routes";
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewConfigMaps",
|
||||
title: "Cluster: View ConfigMaps",
|
||||
scope: "entity",
|
||||
action: () => navigate(configMapsURL())
|
||||
action: () => navigate(routes.configMapsURL())
|
||||
});
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewSecrets",
|
||||
title: "Cluster: View Secrets",
|
||||
scope: "entity",
|
||||
action: () => navigate(secretsURL())
|
||||
action: () => navigate(routes.secretsURL())
|
||||
});
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewResourceQuotas",
|
||||
title: "Cluster: View ResourceQuotas",
|
||||
scope: "entity",
|
||||
action: () => navigate(resourceQuotaURL())
|
||||
action: () => navigate(routes.resourceQuotaURL())
|
||||
});
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewLimitRanges",
|
||||
title: "Cluster: View LimitRanges",
|
||||
scope: "entity",
|
||||
action: () => navigate(limitRangeURL())
|
||||
action: () => navigate(routes.limitRangeURL())
|
||||
});
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewHorizontalPodAutoscalers",
|
||||
title: "Cluster: View HorizontalPodAutoscalers (HPA)",
|
||||
scope: "entity",
|
||||
action: () => navigate(hpaURL())
|
||||
action: () => navigate(routes.hpaURL())
|
||||
});
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewPodDisruptionBudget",
|
||||
title: "Cluster: View PodDisruptionBudgets",
|
||||
scope: "entity",
|
||||
action: () => navigate(pdbURL())
|
||||
action: () => navigate(routes.pdbURL())
|
||||
});
|
||||
|
||||
@ -22,74 +22,75 @@
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
|
||||
import { ConfigMaps, configMapsRoute, configMapsURL } from "../+config-maps";
|
||||
import { Secrets, secretsRoute, secretsURL } from "../+config-secrets";
|
||||
import { resourceQuotaRoute, ResourceQuotas, resourceQuotaURL } from "../+config-resource-quotas";
|
||||
import { pdbRoute, pdbURL, PodDisruptionBudgets } from "../+config-pod-disruption-budgets";
|
||||
import { HorizontalPodAutoscalers, hpaRoute, hpaURL } from "../+config-autoscalers";
|
||||
import { ConfigMaps } from "../+config-maps";
|
||||
import { Secrets } from "../+config-secrets";
|
||||
import { ResourceQuotas } from "../+config-resource-quotas";
|
||||
import { PodDisruptionBudgets } from "../+config-pod-disruption-budgets";
|
||||
import { HorizontalPodAutoscalers } from "../+config-autoscalers";
|
||||
import { isAllowedResource } from "../../../common/rbac";
|
||||
import { LimitRanges, limitRangesRoute, limitRangeURL } from "../+config-limit-ranges";
|
||||
import { LimitRanges } from "../+config-limit-ranges";
|
||||
import * as routes from "../../../common/routes";
|
||||
|
||||
@observer
|
||||
export class Config extends React.Component {
|
||||
static get tabRoutes(): TabLayoutRoute[] {
|
||||
const routes: TabLayoutRoute[] = [];
|
||||
const tabs: TabLayoutRoute[] = [];
|
||||
|
||||
if (isAllowedResource("configmaps")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "ConfigMaps",
|
||||
component: ConfigMaps,
|
||||
url: configMapsURL(),
|
||||
routePath: configMapsRoute.path.toString(),
|
||||
url: routes.configMapsURL(),
|
||||
routePath: routes.configMapsRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("secrets")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "Secrets",
|
||||
component: Secrets,
|
||||
url: secretsURL(),
|
||||
routePath: secretsRoute.path.toString(),
|
||||
url: routes.secretsURL(),
|
||||
routePath: routes.secretsRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("resourcequotas")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "Resource Quotas",
|
||||
component: ResourceQuotas,
|
||||
url: resourceQuotaURL(),
|
||||
routePath: resourceQuotaRoute.path.toString(),
|
||||
url: routes.resourceQuotaURL(),
|
||||
routePath: routes.resourceQuotaRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("limitranges")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "Limit Ranges",
|
||||
component: LimitRanges,
|
||||
url: limitRangeURL(),
|
||||
routePath: limitRangesRoute.path.toString(),
|
||||
url: routes.limitRangeURL(),
|
||||
routePath: routes.limitRangesRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("horizontalpodautoscalers")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "HPA",
|
||||
component: HorizontalPodAutoscalers,
|
||||
url: hpaURL(),
|
||||
routePath: hpaRoute.path.toString(),
|
||||
url: routes.hpaURL(),
|
||||
routePath: routes.hpaRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("poddisruptionbudgets")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "Pod Disruption Budgets",
|
||||
component: PodDisruptionBudgets,
|
||||
url: pdbURL(),
|
||||
routePath: pdbRoute.path.toString(),
|
||||
url: routes.pdbURL(),
|
||||
routePath: routes.pdbRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
return routes;
|
||||
return tabs;
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./config.route";
|
||||
export * from "./config";
|
||||
export * from "./config.command";
|
||||
|
||||
@ -27,14 +27,14 @@ import { disposeOnUnmount, observer } from "mobx-react";
|
||||
import type { RouteComponentProps } from "react-router";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import type { KubeObject } from "../../api/kube-object";
|
||||
import type { ICRDRouteParams } from "./crd.route";
|
||||
import { autorun, computed, makeObservable } from "mobx";
|
||||
import { crdStore } from "./crd.store";
|
||||
import type { TableSortCallback } from "../table";
|
||||
import { apiManager } from "../../api/api-manager";
|
||||
import { parseJsonPath } from "../../utils/jsonPath";
|
||||
import type { CRDRouteParams } from "../../../common/routes";
|
||||
|
||||
interface Props extends RouteComponentProps<ICRDRouteParams> {
|
||||
interface Props extends RouteComponentProps<CRDRouteParams> {
|
||||
}
|
||||
|
||||
enum columnId {
|
||||
|
||||
@ -23,9 +23,9 @@ import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { Redirect, Route, Switch } from "react-router";
|
||||
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
|
||||
import { crdDefinitionsRoute, crdResourcesRoute, crdURL } from "./crd.route";
|
||||
import { CrdList } from "./crd-list";
|
||||
import { CrdResources } from "./crd-resources";
|
||||
import { crdURL, crdDefinitionsRoute, crdResourcesRoute } from "../../../common/routes";
|
||||
|
||||
@observer
|
||||
export class CustomResources extends React.Component {
|
||||
|
||||
@ -19,7 +19,6 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./crd.route";
|
||||
export * from "./crd-list";
|
||||
export * from "./crd-details";
|
||||
export * from "./crd-resources";
|
||||
|
||||
@ -31,7 +31,7 @@ import { Tabs, Tab } from "../tabs";
|
||||
import type { CatalogEntity } from "../../api/catalog-entity";
|
||||
import { catalogEntityRegistry } from "../../api/catalog-entity-registry";
|
||||
import { entitySettingRegistry } from "../../../extensions/registries";
|
||||
import type { EntitySettingsRouteParams } from "./entity-settings.route";
|
||||
import type { EntitySettingsRouteParams } from "../../../common/routes";
|
||||
import { groupBy } from "lodash";
|
||||
|
||||
interface Props extends RouteComponentProps<EntitySettingsRouteParams> {
|
||||
|
||||
@ -21,5 +21,4 @@
|
||||
|
||||
import "../cluster-settings";
|
||||
|
||||
export * from "./entity-settings.route";
|
||||
export * from "./entity-settings";
|
||||
|
||||
@ -36,7 +36,7 @@ import { Link } from "react-router-dom";
|
||||
import { cssNames, IClassName, stopPropagation } from "../../utils";
|
||||
import { Icon } from "../icon";
|
||||
import { lookupApiLink } from "../../api/kube-api";
|
||||
import { eventsURL } from "./events.route";
|
||||
import { eventsURL } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
message = "message",
|
||||
|
||||
@ -20,5 +20,4 @@
|
||||
*/
|
||||
|
||||
export * from "./events";
|
||||
export * from "./events.route";
|
||||
export * from "./event-details";
|
||||
|
||||
@ -19,5 +19,4 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./extensions.route";
|
||||
export * from "./extensions";
|
||||
|
||||
@ -19,7 +19,6 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./namespaces.route";
|
||||
export * from "./namespaces";
|
||||
export * from "./namespace-details";
|
||||
export * from "./add-namespace-dialog";
|
||||
|
||||
@ -28,9 +28,9 @@ import { TabLayout } from "../layout/tab-layout";
|
||||
import { Badge } from "../badge";
|
||||
import type { RouteComponentProps } from "react-router";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import type { INamespacesRouteParams } from "./namespaces.route";
|
||||
import { namespaceStore } from "./namespace.store";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { NamespacesRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -39,7 +39,7 @@ enum columnId {
|
||||
status = "status",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<INamespacesRouteParams> {
|
||||
interface Props extends RouteComponentProps<NamespacesRouteParams> {
|
||||
}
|
||||
|
||||
export class Namespaces extends React.Component<Props> {
|
||||
|
||||
@ -24,11 +24,11 @@ import "./endpoints.scss";
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import type { RouteComponentProps } from "react-router-dom";
|
||||
import type { EndpointRouteParams } from "./endpoints.route";
|
||||
import type { Endpoint } from "../../api/endpoints/endpoint.api";
|
||||
import { endpointStore } from "./endpoints.store";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { EndpointRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./endpoints.route";
|
||||
export * from "./endpoints";
|
||||
export * from "./endpoint-details";
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./ingresses.route";
|
||||
export * from "./ingresses";
|
||||
export * from "./ingress-details";
|
||||
|
||||
@ -24,11 +24,11 @@ import "./ingresses.scss";
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import type { RouteComponentProps } from "react-router-dom";
|
||||
import type { IngressRouteParams } from "./ingresses.route";
|
||||
import type { Ingress } from "../../api/endpoints/ingress.api";
|
||||
import { ingressStore } from "./ingress.store";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { IngressRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./network-policies.route";
|
||||
export * from "./network-policies";
|
||||
export * from "./network-policy-details";
|
||||
|
||||
@ -26,9 +26,9 @@ import { observer } from "mobx-react";
|
||||
import type { RouteComponentProps } from "react-router-dom";
|
||||
import type { NetworkPolicy } from "../../api/endpoints/network-policy.api";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import type { INetworkPoliciesRouteParams } from "./network-policies.route";
|
||||
import { networkPolicyStore } from "./network-policy.store";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { NetworkPoliciesRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -37,7 +37,7 @@ enum columnId {
|
||||
age = "age",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<INetworkPoliciesRouteParams> {
|
||||
interface Props extends RouteComponentProps<NetworkPoliciesRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./services.route";
|
||||
export * from "./services";
|
||||
export * from "./service-details";
|
||||
|
||||
@ -24,12 +24,12 @@ import "./services.scss";
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import type { RouteComponentProps } from "react-router";
|
||||
import type { IServicesRouteParams } from "./services.route";
|
||||
import type { Service } from "../../api/endpoints/service.api";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import { Badge } from "../badge";
|
||||
import { serviceStore } from "./services.store";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { ServicesRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -43,7 +43,7 @@ enum columnId {
|
||||
status = "status",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IServicesRouteParams> {
|
||||
interface Props extends RouteComponentProps<ServicesRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./network.route";
|
||||
export * from "./network";
|
||||
export * from "./network.command";
|
||||
|
||||
@ -21,35 +21,32 @@
|
||||
|
||||
import { navigate } from "../../navigation";
|
||||
import { commandRegistry } from "../../../extensions/registries/command-registry";
|
||||
import { servicesURL } from "../+network-services";
|
||||
import { endpointURL } from "../+network-endpoints";
|
||||
import { ingressURL } from "../+network-ingresses";
|
||||
import { networkPoliciesURL } from "../+network-policies";
|
||||
import * as routes from "../../../common/routes";
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewServices",
|
||||
title: "Cluster: View Services",
|
||||
scope: "entity",
|
||||
action: () => navigate(servicesURL())
|
||||
action: () => navigate(routes.servicesURL())
|
||||
});
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewEndpoints",
|
||||
title: "Cluster: View Endpoints",
|
||||
scope: "entity",
|
||||
action: () => navigate(endpointURL())
|
||||
action: () => navigate(routes.endpointURL())
|
||||
});
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewIngresses",
|
||||
title: "Cluster: View Ingresses",
|
||||
scope: "entity",
|
||||
action: () => navigate(ingressURL())
|
||||
action: () => navigate(routes.ingressURL())
|
||||
});
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewNetworkPolicies",
|
||||
title: "Cluster: View NetworkPolicies",
|
||||
scope: "entity",
|
||||
action: () => navigate(networkPoliciesURL())
|
||||
action: () => navigate(routes.networkPoliciesURL())
|
||||
});
|
||||
|
||||
@ -24,54 +24,55 @@ import "./network.scss";
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
|
||||
import { Services, servicesRoute, servicesURL } from "../+network-services";
|
||||
import { endpointRoute, Endpoints, endpointURL } from "../+network-endpoints";
|
||||
import { Ingresses, ingressRoute, ingressURL } from "../+network-ingresses";
|
||||
import { NetworkPolicies, networkPoliciesRoute, networkPoliciesURL } from "../+network-policies";
|
||||
import { Services } from "../+network-services";
|
||||
import { Endpoints } from "../+network-endpoints";
|
||||
import { Ingresses } from "../+network-ingresses";
|
||||
import { NetworkPolicies } from "../+network-policies";
|
||||
import { isAllowedResource } from "../../../common/rbac";
|
||||
import * as routes from "../../../common/routes";
|
||||
|
||||
@observer
|
||||
export class Network extends React.Component {
|
||||
static get tabRoutes(): TabLayoutRoute[] {
|
||||
const routes: TabLayoutRoute[] = [];
|
||||
const tabs: TabLayoutRoute[] = [];
|
||||
|
||||
if (isAllowedResource("services")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "Services",
|
||||
component: Services,
|
||||
url: servicesURL(),
|
||||
routePath: servicesRoute.path.toString(),
|
||||
url: routes.servicesURL(),
|
||||
routePath: routes.servicesRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("endpoints")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "Endpoints",
|
||||
component: Endpoints,
|
||||
url: endpointURL(),
|
||||
routePath: endpointRoute.path.toString(),
|
||||
url: routes.endpointURL(),
|
||||
routePath: routes.endpointRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("ingresses")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "Ingresses",
|
||||
component: Ingresses,
|
||||
url: ingressURL(),
|
||||
routePath: ingressRoute.path.toString(),
|
||||
url: routes.ingressURL(),
|
||||
routePath: routes.ingressRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("networkpolicies")) {
|
||||
routes.push({
|
||||
tabs.push({
|
||||
title: "Network Policies",
|
||||
component: NetworkPolicies,
|
||||
url: networkPoliciesURL(),
|
||||
routePath: networkPoliciesRoute.path.toString(),
|
||||
url: routes.networkPoliciesURL(),
|
||||
routePath: routes.networkPoliciesRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
return routes;
|
||||
return tabs;
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
@ -20,6 +20,5 @@
|
||||
*/
|
||||
|
||||
export * from "./nodes";
|
||||
export * from "./nodes.route";
|
||||
export * from "./node-details";
|
||||
export * from "./node.command";
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
import { navigate } from "../../navigation";
|
||||
import { commandRegistry } from "../../../extensions/registries/command-registry";
|
||||
import { nodesURL } from "./nodes.route";
|
||||
import { nodesURL } from "../../../common/routes";
|
||||
|
||||
commandRegistry.add({
|
||||
id: "cluster.viewNodes",
|
||||
|
||||
@ -28,7 +28,6 @@ import { TabLayout } from "../layout/tab-layout";
|
||||
import { nodesStore } from "./nodes.store";
|
||||
import { podsStore } from "../+workloads-pods/pods.store";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import type { INodesRouteParams } from "./nodes.route";
|
||||
import type { Node } from "../../api/endpoints/nodes.api";
|
||||
import { LineProgress } from "../line-progress";
|
||||
import { bytesToUnits } from "../../utils/convertMemory";
|
||||
@ -39,6 +38,7 @@ import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import { Badge } from "../badge/badge";
|
||||
import { kubeWatchApi } from "../../api/kube-watch-api";
|
||||
import { eventStore } from "../+events/event.store";
|
||||
import type { NodesRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -53,7 +53,7 @@ enum columnId {
|
||||
status = "status",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<INodesRouteParams> {
|
||||
interface Props extends RouteComponentProps<NodesRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -19,5 +19,4 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./preferences.route";
|
||||
export * from "./preferences";
|
||||
|
||||
@ -1,38 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2021 OpenLens Authors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
import type { RouteProps } from "react-router";
|
||||
import { commandRegistry } from "../../../extensions/registries/command-registry";
|
||||
import { buildURL } from "../../../common/utils/buildUrl";
|
||||
import { navigate } from "../../navigation";
|
||||
|
||||
export const preferencesRoute: RouteProps = {
|
||||
path: "/preferences"
|
||||
};
|
||||
|
||||
export const preferencesURL = buildURL(preferencesRoute.path);
|
||||
|
||||
commandRegistry.add({
|
||||
id: "app.showPreferences",
|
||||
title: "Preferences: Open",
|
||||
scope: "global",
|
||||
action: () => navigate(preferencesURL())
|
||||
});
|
||||
@ -19,7 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./storage-classes.route";
|
||||
export * from "./storage-classes";
|
||||
export * from "./storage-class-details";
|
||||
|
||||
|
||||
@ -26,9 +26,9 @@ import type { RouteComponentProps } from "react-router-dom";
|
||||
import { observer } from "mobx-react";
|
||||
import type { StorageClass } from "../../api/endpoints/storage-class.api";
|
||||
import { KubeObjectListLayout } from "../kube-object";
|
||||
import type { IStorageClassesRouteParams } from "./storage-classes.route";
|
||||
import { storageClassStore } from "./storage-class.store";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { StorageClassesRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -38,7 +38,7 @@ enum columnId {
|
||||
reclaimPolicy = "reclaim",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IStorageClassesRouteParams> {
|
||||
interface Props extends RouteComponentProps<StorageClassesRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -19,7 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./volume-claims.route";
|
||||
export * from "./volume-claims";
|
||||
export * from "./volume-claim-details";
|
||||
|
||||
|
||||
@ -28,11 +28,11 @@ import { volumeClaimStore } from "./volume-claim.store";
|
||||
import type { PersistentVolumeClaim } from "../../api/endpoints/persistent-volume-claims.api";
|
||||
import { podsStore } from "../+workloads-pods/pods.store";
|
||||
import { getDetailsUrl, KubeObjectListLayout } from "../kube-object";
|
||||
import type { IVolumeClaimsRouteParams } from "./volume-claims.route";
|
||||
import { unitsToBytes } from "../../utils/convertMemory";
|
||||
import { stopPropagation } from "../../utils";
|
||||
import { storageClassApi } from "../../api/endpoints";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { VolumeClaimsRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -44,7 +44,7 @@ enum columnId {
|
||||
age = "age",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IVolumeClaimsRouteParams> {
|
||||
interface Props extends RouteComponentProps<VolumeClaimsRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -19,6 +19,5 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./volumes.route";
|
||||
export * from "./volumes";
|
||||
export * from "./volume-details";
|
||||
|
||||
@ -26,11 +26,11 @@ import { observer } from "mobx-react";
|
||||
import { Link, RouteComponentProps } from "react-router-dom";
|
||||
import type { PersistentVolume } from "../../api/endpoints/persistent-volume.api";
|
||||
import { getDetailsUrl, KubeObjectListLayout } from "../kube-object";
|
||||
import type { IVolumesRouteParams } from "./volumes.route";
|
||||
import { stopPropagation } from "../../utils";
|
||||
import { volumesStore } from "./volumes.store";
|
||||
import { pvcApi, storageClassApi } from "../../api/endpoints";
|
||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||
import type { VolumesRouteParams } from "../../../common/routes";
|
||||
|
||||
enum columnId {
|
||||
name = "name",
|
||||
@ -41,7 +41,7 @@ enum columnId {
|
||||
age = "age",
|
||||
}
|
||||
|
||||
interface Props extends RouteComponentProps<IVolumesRouteParams> {
|
||||
interface Props extends RouteComponentProps<VolumesRouteParams> {
|
||||
}
|
||||
|
||||
@observer
|
||||
|
||||
@ -19,5 +19,4 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
export * from "./storage.route";
|
||||
export * from "./storage";
|
||||
|
||||
@ -24,44 +24,45 @@ import "./storage.scss";
|
||||
import React from "react";
|
||||
import { observer } from "mobx-react";
|
||||
import { TabLayout, TabLayoutRoute } from "../layout/tab-layout";
|
||||
import { PersistentVolumes, volumesRoute, volumesURL } from "../+storage-volumes";
|
||||
import { StorageClasses, storageClassesRoute, storageClassesURL } from "../+storage-classes";
|
||||
import { PersistentVolumeClaims, volumeClaimsRoute, volumeClaimsURL } from "../+storage-volume-claims";
|
||||
import { PersistentVolumes } from "../+storage-volumes";
|
||||
import { StorageClasses } from "../+storage-classes";
|
||||
import { PersistentVolumeClaims } from "../+storage-volume-claims";
|
||||
import { isAllowedResource } from "../../../common/rbac";
|
||||
import * as routes from "../../../common/routes";
|
||||
|
||||
@observer
|
||||
export class Storage extends React.Component {
|
||||
static get tabRoutes() {
|
||||
const tabRoutes: TabLayoutRoute[] = [];
|
||||
const tabs: TabLayoutRoute[] = [];
|
||||
|
||||
if (isAllowedResource("persistentvolumeclaims")) {
|
||||
tabRoutes.push({
|
||||
tabs.push({
|
||||
title: "Persistent Volume Claims",
|
||||
component: PersistentVolumeClaims,
|
||||
url: volumeClaimsURL(),
|
||||
routePath: volumeClaimsRoute.path.toString(),
|
||||
url: routes.volumeClaimsURL(),
|
||||
routePath: routes.volumeClaimsRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("persistentvolumes")) {
|
||||
tabRoutes.push({
|
||||
tabs.push({
|
||||
title: "Persistent Volumes",
|
||||
component: PersistentVolumes,
|
||||
url: volumesURL(),
|
||||
routePath: volumesRoute.path.toString(),
|
||||
url: routes.volumesURL(),
|
||||
routePath: routes.volumesRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
if (isAllowedResource("storageclasses")) {
|
||||
tabRoutes.push({
|
||||
tabs.push({
|
||||
title: "Storage Classes",
|
||||
component: StorageClasses,
|
||||
url: storageClassesURL(),
|
||||
routePath: storageClassesRoute.path.toString(),
|
||||
url: routes.storageClassesURL(),
|
||||
routePath: routes.storageClassesRoute.path.toString(),
|
||||
});
|
||||
}
|
||||
|
||||
return tabRoutes;
|
||||
return tabs;
|
||||
}
|
||||
|
||||
render() {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user