mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* add restart button to statefulsets Signed-off-by: Dan Bryant <daniel.bryant@linux.com> * use ShowCheckedErrorNotification Signed-off-by: Dan Bryant <daniel.bryant@linux.com> Signed-off-by: Dan Bryant <daniel.bryant@linux.com>
74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
import React from "react";
|
|
import type { KubeObjectMenuProps } from "../kube-object-menu";
|
|
import type { StatefulSet, StatefulSetApi } from "../../../common/k8s-api/endpoints";
|
|
import { MenuItem } from "../menu";
|
|
import { Icon } from "../icon";
|
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
|
import statefulSetApiInjectable from "../../../common/k8s-api/endpoints/stateful-set.api.injectable";
|
|
import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable";
|
|
import openConfirmDialogInjectable from "../confirm-dialog/open.injectable";
|
|
import type { ShowCheckedErrorNotification } from "../notifications/show-checked-error.injectable";
|
|
import showCheckedErrorNotificationInjectable from "../notifications/show-checked-error.injectable";
|
|
|
|
export interface StatefulSetMenuProps extends KubeObjectMenuProps<StatefulSet> {}
|
|
|
|
interface Dependencies {
|
|
statefulsetApi: StatefulSetApi;
|
|
openConfirmDialog: OpenConfirmDialog;
|
|
showCheckedErrorNotification: ShowCheckedErrorNotification;
|
|
}
|
|
|
|
const NonInjectedStatefulSetMenu = ({
|
|
statefulsetApi,
|
|
object,
|
|
toolbar,
|
|
showCheckedErrorNotification,
|
|
openConfirmDialog,
|
|
}: Dependencies & StatefulSetMenuProps) => (
|
|
<>
|
|
<MenuItem
|
|
onClick={() => openConfirmDialog({
|
|
ok: async () =>
|
|
{
|
|
try {
|
|
await statefulsetApi.restart({
|
|
namespace: object.getNs(),
|
|
name: object.getName(),
|
|
});
|
|
} catch (err) {
|
|
showCheckedErrorNotification(err, "Unknown error occured while restarting statefulset");
|
|
}
|
|
},
|
|
labelOk: "Restart",
|
|
message: (
|
|
<p>
|
|
{"Are you sure you want to restart statefulset "}
|
|
<b>{object.getName()}</b>
|
|
?
|
|
</p>
|
|
),
|
|
})}
|
|
>
|
|
<Icon
|
|
material="autorenew"
|
|
tooltip="Restart"
|
|
interactive={toolbar}
|
|
/>
|
|
<span className="title">Restart</span>
|
|
</MenuItem>
|
|
</>
|
|
);
|
|
|
|
export const StatefulSetMenu = withInjectables<Dependencies, StatefulSetMenuProps>(NonInjectedStatefulSetMenu, {
|
|
getProps: (di, props) => ({
|
|
...props,
|
|
showCheckedErrorNotification: di.inject(showCheckedErrorNotificationInjectable),
|
|
statefulsetApi: di.inject(statefulSetApiInjectable),
|
|
openConfirmDialog: di.inject(openConfirmDialogInjectable),
|
|
}),
|
|
});
|