UNPKG

@cardonexinc/freelens-argo-rollouts-extension

Version:
159 lines (158 loc) 6.08 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const react_jsxRuntime = require("../_virtual/react_jsx-runtime.js"); const _freelensapp_extensions = require("../_virtual/@freelensapp_extensions.js"); const errorPage = require("../components/error-page.js"); const { Component: { MenuItem } } = _freelensapp_extensions._freelensapp_extensionsExports.Renderer; const ArgoRolloutMenuItem = (props) => errorPage.withErrorPage(props, () => { const { object, api } = props; if (!object) return /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(react_jsxRuntime.react_jsxRuntimeExports.Fragment, {}); const phase = object.status?.phase; const handleAbort = async () => { if (!api) { console.error("API is not defined in props."); return; } const patch = { spec: { paused: false }, status: { abort: true } }; const resourceDescriptor = { name: object.metadata.name, namespace: object.metadata.namespace }; await api.patch(resourceDescriptor, patch, "merge"); }; const handlePromote = async () => { if (!api) { console.error("API is not defined in props."); return; } const patch = { spec: { paused: false }, status: { promoteFull: false } }; const resourceDescriptor = { name: object.metadata.name, namespace: object.metadata.namespace }; await api.patch(resourceDescriptor, patch, "merge"); }; const handlePromoteFull = async () => { if (!api) { console.error("API is not defined in props."); return; } const patch = { spec: { paused: false }, status: { promoteFull: true } }; const resourceDescriptor = { name: object.metadata.name, namespace: object.metadata.namespace }; await api.patch(resourceDescriptor, patch, "merge"); }; const handleResume = async () => { if (!api) { console.error("API is not defined in props."); return; } const patch = { spec: { paused: false } }; const resourceDescriptor = { name: object.metadata.name, namespace: object.metadata.namespace }; await api.patch(resourceDescriptor, patch, "merge"); }; const handlePause = async () => { if (!api) { console.error("API is not defined in props."); return; } const patch = { spec: { paused: true } }; const resourceDescriptor = { name: object.metadata.name, namespace: object.metadata.namespace }; await api.patch(resourceDescriptor, patch, "merge"); }; const handleRetry = async () => { if (!api) { console.error("API is not defined in props."); return; } const patch = { status: { abort: false } }; const resourceDescriptor = { name: object.metadata.name, namespace: object.metadata.namespace }; await api.patch(resourceDescriptor, patch, "merge"); }; const handleRestart = async () => { if (!api) { console.error("API is not defined in props."); return; } const restartAt = (/* @__PURE__ */ new Date()).toISOString(); const patch = { spec: { restartAt } }; const resourceDescriptor = { name: object.metadata.name, namespace: object.metadata.namespace }; await api.patch(resourceDescriptor, patch, "merge"); }; const actions = [/* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(MenuItem, { onClick: handleAbort, icon: { material: "cancel" }, disabled: !(phase === "Progressing" || phase === "Paused"), children: /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx("span", { className: "title", children: "Abort" }) }, "abort"), /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(MenuItem, { onClick: handlePromote, icon: { material: "keyboard_arrow_up" }, disabled: !(phase === "Progressing" || phase === "Paused"), children: /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx("span", { className: "title", children: "Promote" }) }, "promote"), /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(MenuItem, { onClick: handlePromoteFull, icon: { material: "keyboard_double_arrow_up" }, disabled: !(phase === "Progressing" || phase === "Paused"), children: /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx("span", { className: "title", children: "Promote Full" }) }, "promote-full"), /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(MenuItem, { onClick: handleResume, icon: { material: "play_arrow" }, disabled: !(phase === "Paused"), children: /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx("span", { className: "title", children: "Resume" }) }, "resume"), /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(MenuItem, { onClick: handlePause, icon: { material: "pause" }, disabled: !(phase === "Progressing"), children: /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx("span", { className: "title", children: "Pause" }) }, "pause"), /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(MenuItem, { onClick: handleRetry, icon: { material: "refresh" }, disabled: !(phase === "Degraded"), children: /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx("span", { className: "title", children: "Retry" }) }, "retry"), /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(MenuItem, { onClick: handleRestart, icon: { material: "restart_alt" }, disabled: !(phase === "Healthy"), children: /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx("span", { className: "title", children: "Restart" }) }, "restart")]; return /* @__PURE__ */ react_jsxRuntime.react_jsxRuntimeExports.jsx(react_jsxRuntime.react_jsxRuntimeExports.Fragment, { children: actions }); }); exports.ArgoRolloutMenuItem = ArgoRolloutMenuItem; //# sourceMappingURL=argo-rollout-menu-item.js.map