1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-23 07:19:41 +02:00

refactor(containers): migrate create view to react [EE-2307] (#9175)

This commit is contained in:
Chaim Lev-Ari 2023-10-19 13:45:50 +02:00 committed by GitHub
parent bc0050a7b4
commit d970f0e2bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
71 changed files with 2612 additions and 1399 deletions

View file

@ -1,89 +1,173 @@
import { AxiosRequestHeaders } from 'axios';
import { EnvironmentId } from '@/react/portainer/environments/types';
import PortainerError from '@/portainer/error';
import axios from '@/portainer/services/axios';
import axios, { parseAxiosError } from '@/portainer/services/axios';
import { genericHandler } from '@/docker/rest/response/handlers';
import { ContainerId, DockerContainer } from './types';
import { ContainerId } from './types';
export async function startContainer(
endpointId: EnvironmentId,
id: ContainerId
environmentId: EnvironmentId,
id: ContainerId,
{ nodeName }: { nodeName?: string } = {}
) {
await axios.post<void>(
urlBuilder(endpointId, id, 'start'),
{},
{ transformResponse: genericHandler }
);
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
try {
await axios.post<void>(
urlBuilder(environmentId, id, 'start'),
{},
{ transformResponse: genericHandler, headers }
);
} catch (e) {
throw parseAxiosError(e, 'Failed starting container');
}
}
export async function stopContainer(
endpointId: EnvironmentId,
id: ContainerId
id: ContainerId,
{ nodeName }: { nodeName?: string } = {}
) {
await axios.post<void>(urlBuilder(endpointId, id, 'stop'), {});
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
await axios.post<void>(urlBuilder(endpointId, id, 'stop'), {}, { headers });
}
export async function recreateContainer(
endpointId: EnvironmentId,
id: ContainerId,
pullImage: boolean
pullImage: boolean,
{ nodeName }: { nodeName?: string } = {}
) {
await axios.post<void>(`/docker/${endpointId}/containers/${id}/recreate`, {
PullImage: pullImage,
});
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
await axios.post<void>(
`/docker/${endpointId}/containers/${id}/recreate`,
{
PullImage: pullImage,
},
{ headers }
);
}
export async function restartContainer(
endpointId: EnvironmentId,
id: ContainerId
id: ContainerId,
{ nodeName }: { nodeName?: string } = {}
) {
await axios.post<void>(urlBuilder(endpointId, id, 'restart'), {});
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
await axios.post<void>(
urlBuilder(endpointId, id, 'restart'),
{},
{ headers }
);
}
export async function killContainer(
endpointId: EnvironmentId,
id: ContainerId
id: ContainerId,
{ nodeName }: { nodeName?: string } = {}
) {
await axios.post<void>(urlBuilder(endpointId, id, 'kill'), {});
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
await axios.post<void>(urlBuilder(endpointId, id, 'kill'), {}, { headers });
}
export async function pauseContainer(
endpointId: EnvironmentId,
id: ContainerId
id: ContainerId,
{ nodeName }: { nodeName?: string } = {}
) {
await axios.post<void>(urlBuilder(endpointId, id, 'pause'), {});
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
await axios.post<void>(urlBuilder(endpointId, id, 'pause'), {}, { headers });
}
export async function resumeContainer(
endpointId: EnvironmentId,
id: ContainerId
id: ContainerId,
{ nodeName }: { nodeName?: string } = {}
) {
await axios.post<void>(urlBuilder(endpointId, id, 'unpause'), {});
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
await axios.post<void>(
urlBuilder(endpointId, id, 'unpause'),
{},
{ headers }
);
}
export async function renameContainer(
endpointId: EnvironmentId,
id: ContainerId,
name: string
name: string,
{ nodeName }: { nodeName?: string } = {}
) {
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
await axios.post<void>(
urlBuilder(endpointId, id, 'rename'),
{},
{ params: { name }, transformResponse: genericHandler }
{ params: { name }, transformResponse: genericHandler, headers }
);
}
export async function removeContainer(
endpointId: EnvironmentId,
container: DockerContainer,
removeVolumes: boolean
containerId: string,
{
nodeName,
removeVolumes,
}: { removeVolumes?: boolean; nodeName?: string } = {}
) {
try {
const headers: AxiosRequestHeaders = {};
if (nodeName) {
headers['X-PortainerAgent-Target'] = nodeName;
}
const { data } = await axios.delete<null | { message: string }>(
urlBuilder(endpointId, container.Id),
urlBuilder(endpointId, containerId),
{
params: { v: removeVolumes ? 1 : 0, force: true },
transformResponse: genericHandler,
headers,
}
);