@cardonexinc/freelens-argo-rollouts-extension
Version:
Argo Rollouts extension for Freelens
159 lines (158 loc) • 6.08 kB
JavaScript
;
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