Skip to content

Commit

Permalink
feat: Cleanup and empty pages for jobs, cronjobs and daemonsets
Browse files Browse the repository at this point in the history
  • Loading branch information
tiithansen committed May 25, 2024
1 parent 5ccd520 commit 5d6e5a1
Show file tree
Hide file tree
Showing 7 changed files with 158 additions and 17 deletions.
33 changes: 21 additions & 12 deletions src/pages/Workloads/Workloads.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,17 @@ import { getPodsScene } from './tabs/Pods/Pods';
import { getDeploymentsScene } from './tabs/Deployments/Deployments';
import { getStatefulSetsScene } from './tabs/StatefulSets/StatefulSets';
import { getDaemonSetsScene } from './tabs/DaemonSets/DaemonSets';
import { getPodPage } from './pages/PodPage';
import { PodPage } from './pages/PodPage';
import { getCronJobsScene } from './tabs/CronJobs/CronJobs';
import { getJobsScene } from './tabs/Jobs/Jobs';
import { getOverviewScene } from './tabs/Overview/Overview';
import { usePluginProps } from 'utils/utils.plugin';
import { getDeploymentPage } from './pages/DeploymentPage';
import { getStatefulSetPage } from './pages/StatefulSetPage';
import { DeploymentPage } from './pages/DeploymentPage';
import { StatefulSetPage } from './pages/StatefulSetPage';
import { createTimeRange, createTopLevelVariables } from './variableHelpers';
import { DaemonSetPage } from './pages/DaemonSetPage';
import { CronJobPage } from './pages/CronJobPage';
import { JobPage } from './pages/JobPage';

function getScene({ datasource }: { datasource: string }) {

Expand Down Expand Up @@ -84,21 +87,27 @@ function getScene({ datasource }: { datasource: string }) {
drilldowns: [
{
routePath: prefixRoute(`${ROUTES.Workloads}/pods/:name`),
getPage(routeMatch, parent) {
return getPodPage(routeMatch, parent);
}
getPage: PodPage
},
{
routePath: prefixRoute(`${ROUTES.Workloads}/deployments/:name`),
getPage(routeMatch, parent) {
return getDeploymentPage(routeMatch, parent);
}
getPage: DeploymentPage
},
{
routePath: prefixRoute(`${ROUTES.Workloads}/statefulsets/:name`),
getPage(routeMatch, parent) {
return getStatefulSetPage(routeMatch, parent);
}
getPage: StatefulSetPage
},
{
routePath: prefixRoute(`${ROUTES.Workloads}/daemonsets/:name`),
getPage: DaemonSetPage
},
{
routePath: prefixRoute(`${ROUTES.Workloads}/cronjobs/:name`),
getPage: CronJobPage
},
{
routePath: prefixRoute(`${ROUTES.Workloads}/jobs/:name`),
getPage: JobPage
},
]
}),
Expand Down
44 changes: 44 additions & 0 deletions src/pages/Workloads/pages/CronJobPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { EmbeddedScene, SceneAppPage, SceneAppPageLike, SceneControlsSpacer, SceneFlexLayout, SceneRefreshPicker, SceneRouteMatch, SceneTimePicker, VariableValueSelectors } from "@grafana/scenes";
import { ROUTES } from "../../../constants";
import { prefixRoute } from "utils/utils.routing";
import { usePluginProps } from "utils/utils.plugin";
import { createTopLevelVariables, createTimeRange } from "../variableHelpers";

function getScene(cronJob: string) {
return new EmbeddedScene({
controls: [
new VariableValueSelectors({}),
new SceneControlsSpacer(),
new SceneTimePicker({ isOnCanvas: true }),
new SceneRefreshPicker({
intervals: ['5s', '1m', '1h'],
isOnCanvas: true,
}),
],
body: new SceneFlexLayout({
direction: 'column',
children: []
}),
})
}

export function CronJobPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {

const props = usePluginProps();

const variables = createTopLevelVariables({
datasource: props?.meta.jsonData?.datasource || 'prometheus'
})

const timeRange = createTimeRange()

return new SceneAppPage({
title: `CronJob - ${routeMatch.params.name}`,
titleIcon: 'dashboard',
$variables: variables,
$timeRange: timeRange,
url: prefixRoute(`${ROUTES.Workloads}/cronjobs/${routeMatch.params.name}`),
getScene: () => getScene(routeMatch.params.name),
getParentPage: () => parent,
})
}
44 changes: 44 additions & 0 deletions src/pages/Workloads/pages/DaemonSetPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { EmbeddedScene, SceneAppPage, SceneAppPageLike, SceneControlsSpacer, SceneFlexLayout, SceneRefreshPicker, SceneRouteMatch, SceneTimePicker, VariableValueSelectors } from "@grafana/scenes";
import { ROUTES } from "../../../constants";
import { prefixRoute } from "utils/utils.routing";
import { usePluginProps } from "utils/utils.plugin";
import { createTopLevelVariables, createTimeRange } from "../variableHelpers";

function getScene(daemonSet: string) {
return new EmbeddedScene({
controls: [
new VariableValueSelectors({}),
new SceneControlsSpacer(),
new SceneTimePicker({ isOnCanvas: true }),
new SceneRefreshPicker({
intervals: ['5s', '1m', '1h'],
isOnCanvas: true,
}),
],
body: new SceneFlexLayout({
direction: 'column',
children: []
}),
})
}

export function DaemonSetPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {

const props = usePluginProps();

const variables = createTopLevelVariables({
datasource: props?.meta.jsonData?.datasource || 'prometheus'
})

const timeRange = createTimeRange()

return new SceneAppPage({
title: `DaemonSet - ${routeMatch.params.name}`,
titleIcon: 'dashboard',
$variables: variables,
$timeRange: timeRange,
url: prefixRoute(`${ROUTES.Workloads}/daemonsets/${routeMatch.params.name}`),
getScene: () => getScene(routeMatch.params.name),
getParentPage: () => parent,
})
}
4 changes: 2 additions & 2 deletions src/pages/Workloads/pages/DeploymentPage.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EmbeddedScene, SceneAppPage, SceneAppPageLike, SceneControlsSpacer, SceneFlexLayout, SceneRefreshPicker, SceneRouteMatch, SceneTimePicker, VariableValueSelectors, sceneGraph } from "@grafana/scenes";
import { EmbeddedScene, SceneAppPage, SceneAppPageLike, SceneControlsSpacer, SceneFlexLayout, SceneRefreshPicker, SceneRouteMatch, SceneTimePicker, VariableValueSelectors } from "@grafana/scenes";
import { ROUTES } from "../../../constants";
import { prefixRoute } from "utils/utils.routing";
import { usePluginProps } from "utils/utils.plugin";
Expand All @@ -22,7 +22,7 @@ function getScene(deployment: string) {
})
}

export function getDeploymentPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {
export function DeploymentPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {

const props = usePluginProps();

Expand Down
44 changes: 44 additions & 0 deletions src/pages/Workloads/pages/JobPage.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { EmbeddedScene, SceneAppPage, SceneAppPageLike, SceneControlsSpacer, SceneFlexLayout, SceneRefreshPicker, SceneRouteMatch, SceneTimePicker, VariableValueSelectors } from "@grafana/scenes";
import { ROUTES } from "../../../constants";
import { prefixRoute } from "utils/utils.routing";
import { usePluginProps } from "utils/utils.plugin";
import { createTopLevelVariables, createTimeRange } from "../variableHelpers";

function getScene(job: string) {
return new EmbeddedScene({
controls: [
new VariableValueSelectors({}),
new SceneControlsSpacer(),
new SceneTimePicker({ isOnCanvas: true }),
new SceneRefreshPicker({
intervals: ['5s', '1m', '1h'],
isOnCanvas: true,
}),
],
body: new SceneFlexLayout({
direction: 'column',
children: []
}),
})
}

export function JobPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {

const props = usePluginProps();

const variables = createTopLevelVariables({
datasource: props?.meta.jsonData?.datasource || 'prometheus'
})

const timeRange = createTimeRange()

return new SceneAppPage({
title: `Job - ${routeMatch.params.name}`,
titleIcon: 'dashboard',
$variables: variables,
$timeRange: timeRange,
url: prefixRoute(`${ROUTES.Workloads}/jobs/${routeMatch.params.name}`),
getScene: () => getScene(routeMatch.params.name),
getParentPage: () => parent,
})
}
4 changes: 2 additions & 2 deletions src/pages/Workloads/pages/PodPage.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { EmbeddedScene, PanelBuilders, SceneAppPage, SceneAppPageLike, SceneControlsSpacer, SceneFlexItem, SceneFlexLayout, SceneQueryRunner, SceneRefreshPicker, SceneRouteMatch, SceneTimePicker, SceneTimeRange, SceneVariableSet, VariableValueSelectors, sceneGraph } from "@grafana/scenes";
import { EmbeddedScene, PanelBuilders, SceneAppPage, SceneAppPageLike, SceneControlsSpacer, SceneFlexItem, SceneFlexLayout, SceneQueryRunner, SceneRefreshPicker, SceneRouteMatch, SceneTimePicker, VariableValueSelectors } from "@grafana/scenes";
import { ROUTES } from "../../../constants";
import { prefixRoute } from "utils/utils.routing";
import { GraphTransform } from "@grafana/schema";
Expand Down Expand Up @@ -275,7 +275,7 @@ function getScene(pod: string) {
})
}

export function getPodPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {
export function PodPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {

const props = usePluginProps();

Expand Down
2 changes: 1 addition & 1 deletion src/pages/Workloads/pages/StatefulSetPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ function getScene(statefulSet: string) {
})
}

export function getStatefulSetPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {
export function StatefulSetPage(routeMatch: SceneRouteMatch<any>, parent: SceneAppPageLike) {

const props = usePluginProps();

Expand Down

0 comments on commit 5d6e5a1

Please sign in to comment.