diff --git a/public/locales/de-DE/translation.json b/public/locales/de-DE/translation.json index 5f7d6a9..e52e2b0 100644 --- a/public/locales/de-DE/translation.json +++ b/public/locales/de-DE/translation.json @@ -440,6 +440,9 @@ "empty-response": "Leere Antwort", "form-preview": "Formularvorschau", "raw-data-json": "Rohdaten (JSON)", + "actions": "Deployment-Aktionen", + "redeploy": "Erneut deployen", + "redeploy-success": "Deployment erneut bereitgestellt.", "sort": { "deploymentTime": "Deployment-Zeit", "name": "Name", diff --git a/public/locales/en-US/translation.json b/public/locales/en-US/translation.json index ac20fbe..131873b 100644 --- a/public/locales/en-US/translation.json +++ b/public/locales/en-US/translation.json @@ -440,6 +440,9 @@ "empty-response": "Empty response", "form-preview": "Form preview", "raw-data-json": "Raw data (JSON)", + "actions": "Deployment Actions", + "redeploy": "Redeploy", + "redeploy-success": "Deployment redeployed.", "sort": { "deploymentTime": "Deployment time", "name": "Name", diff --git a/src/api/resources/deployment.js b/src/api/resources/deployment.js index 206d8ed..fb53e7e 100644 --- a/src/api/resources/deployment.js +++ b/src/api/resources/deployment.js @@ -1,4 +1,4 @@ -import { GET, DELETE, GET_TEXT } from '../helper.jsx' +import { GET, DELETE, GET_TEXT, POST } from '../helper.jsx' /** * Fetches deployments sorted by deployment time, sets the first as selected @@ -33,12 +33,15 @@ const get_deployment_resource = (state, deployment_id, resource_id) => const delete_deployment = (state, deployment_id, params = {}) => DELETE(`/deployment/${deployment_id}?${new URLSearchParams(params).toString()}`, null, state, state.api.deployment.delete) +const redeploy_deployment = (state, deployment_id) => + POST(`/deployment/${deployment_id}/redeploy`, {}, state, state.api.deployment.redeploy) const deployment = { all: get_deployments, resources: get_deployment_resources, resource: get_deployment_resource, - delete: delete_deployment + delete: delete_deployment, + redeploy: redeploy_deployment, } export default deployment diff --git a/src/api/resources/deployment.test.js b/src/api/resources/deployment.test.js index 66313d3..6ae46ea 100644 --- a/src/api/resources/deployment.test.js +++ b/src/api/resources/deployment.test.js @@ -4,9 +4,10 @@ vi.mock("../helper.jsx", () => ({ GET: vi.fn(), DELETE: vi.fn(), GET_TEXT: vi.fn(), + POST: vi.fn(), })); -import { GET, DELETE, GET_TEXT } from "../helper.jsx"; +import { GET, DELETE, GET_TEXT, POST } from "../helper.jsx"; import { create_mock_state, expect_api_call } from "../../test/helpers.js"; import deployment from "./deployment.js"; @@ -65,4 +66,14 @@ describe("api/resources/deployment", () => { signal: state.api.deployment.delete, }); }); + + it("redeploy() POSTs the selected deployment", () => { + deployment.redeploy(state, "dep-1"); + expect_api_call(POST, { + url: "/deployment/dep-1/redeploy", + body: {}, + state, + signal: state.api.deployment.redeploy, + }); + }); }); diff --git a/src/pages/Deployments.jsx b/src/pages/Deployments.jsx index 6ed1b25..6f5764a 100644 --- a/src/pages/Deployments.jsx +++ b/src/pages/Deployments.jsx @@ -216,7 +216,8 @@ const DeploymentsList = () => { const ResourcesList = () => { const state = useContext(AppState), - { params } = useRoute(), + { params, query } = useRoute(), + { route } = useLocation(), [t] = useTranslation(); if (!params.deployment_id) { @@ -227,6 +228,30 @@ const ResourcesList = () => { return (
{t("deployments.redeploy-success")}
} + /> + +