mirror of https://github.com/portainer/portainer
119 lines
4.5 KiB
JavaScript
119 lines
4.5 KiB
JavaScript
import angular from 'angular';
|
|
import {
|
|
killContainer,
|
|
pauseContainer,
|
|
removeContainer,
|
|
renameContainer,
|
|
restartContainer,
|
|
resumeContainer,
|
|
startContainer,
|
|
stopContainer,
|
|
recreateContainer,
|
|
getContainerLogs,
|
|
} from '@/react/docker/containers/containers.service';
|
|
import { getContainers } from '@/react/docker/containers/queries/useContainers';
|
|
import { getContainer } from '@/react/docker/containers/queries/useContainer';
|
|
import { resizeTTY } from '@/react/docker/containers/queries/useContainerResizeTTYMutation';
|
|
import { updateContainer } from '@/react/docker/containers/queries/useUpdateContainer';
|
|
import { createExec } from '@/react/docker/containers/queries/useCreateExecMutation';
|
|
import { containerStats } from '@/react/docker/containers/queries/useContainerStats';
|
|
import { getContainerTop } from '@/react/docker/containers/queries/useContainerTop';
|
|
|
|
import { ContainerDetailsViewModel } from '../models/containerDetails';
|
|
import { ContainerStatsViewModel } from '../models/containerStats';
|
|
import { formatLogs } from '../helpers/logHelper';
|
|
|
|
angular.module('portainer.docker').factory('ContainerService', ContainerServiceFactory);
|
|
|
|
/* @ngInject */
|
|
function ContainerServiceFactory(AngularToReact) {
|
|
const { useAxios } = AngularToReact;
|
|
|
|
return {
|
|
killContainer: useAxios(killContainer), // container edit
|
|
pauseContainer: useAxios(pauseContainer), // container edit
|
|
renameContainer: useAxios(renameContainer), // container edit
|
|
restartContainer: useAxios(restartContainer), // container edit
|
|
resumeContainer: useAxios(resumeContainer), // container edit
|
|
startContainer: useAxios(startContainer), // container edit
|
|
stopContainer: useAxios(stopContainer), // container edit
|
|
recreateContainer: useAxios(recreateContainer), // container edit
|
|
remove: useAxios(removeContainer), // container edit
|
|
container: useAxios(getContainerAngularJS), // container console + container edit + container stats
|
|
containers: useAxios(getContainers), // dashboard + services list + service edit + voluem edit + stackservice + stack create + stack edit
|
|
resizeTTY: useAxios(resizeTTYAngularJS), // container console
|
|
updateRestartPolicy: useAxios(updateRestartPolicyAngularJS), // container edit
|
|
createExec: useAxios(createExec), // container console
|
|
containerStats: useAxios(containerStatsAngularJS), // container stats
|
|
containerTop: useAxios(getContainerTop), // container stats
|
|
inspect: useAxios(getContainer), // container inspect
|
|
logs: useAxios(containerLogsAngularJS), // container logs
|
|
};
|
|
|
|
/**
|
|
* @param {EnvironmentId} environmentId
|
|
* @param {ContainerId} id
|
|
* @param {*} param2
|
|
*/
|
|
async function getContainerAngularJS(environmentId, id, { nodeName } = {}) {
|
|
const data = await getContainer(environmentId, id, { nodeName });
|
|
return new ContainerDetailsViewModel(data);
|
|
}
|
|
|
|
/**
|
|
* @param {EnvironmentId} environmentId
|
|
* @param {string} containerId
|
|
* @param {number} width
|
|
* @param {number} height
|
|
* @param timeout DEPRECATED: Previously used in pure AJS implementation
|
|
*/
|
|
async function resizeTTYAngularJS(environmentId, containerId, width, height) {
|
|
return resizeTTY(environmentId, containerId, { width, height });
|
|
}
|
|
|
|
/**
|
|
* @param {EnvironmentId} environmentId
|
|
* @param {ContainerId} id
|
|
* @param {RestartPolicy['Name']} restartPolicy
|
|
* @param {RestartPolicy['MaximumRetryCount']} maximumRetryCounts
|
|
*/
|
|
async function updateRestartPolicyAngularJS(environmentId, id, restartPolicy, maximumRetryCounts) {
|
|
return updateContainer(environmentId, id, {
|
|
RestartPolicy: {
|
|
Name: restartPolicy,
|
|
MaximumRetryCount: maximumRetryCounts,
|
|
},
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @param {EnvironmentId} environmentId
|
|
* @param {ContainerId} id
|
|
*/
|
|
async function containerStatsAngularJS(environmentId, id) {
|
|
const data = await containerStats(environmentId, id);
|
|
return new ContainerStatsViewModel(data);
|
|
}
|
|
|
|
/**
|
|
* @param {EnvironmentId} environmentId
|
|
* @param {Containerid} id
|
|
* @param {boolean?} stdout
|
|
* @param {boolean?} stderr
|
|
* @param {boolean?} timestamps
|
|
* @param {number?} since
|
|
* @param {number?} tail
|
|
* @param {boolean?} stripHeaders
|
|
*/
|
|
async function containerLogsAngularJS(environmentId, id, stdout = false, stderr = false, timestamps = false, since = 0, tail = 'all', stripHeaders) {
|
|
const data = await getContainerLogs(environmentId, id, {
|
|
since,
|
|
stderr,
|
|
stdout,
|
|
tail,
|
|
timestamps,
|
|
});
|
|
return formatLogs(data, { stripHeaders, withTimestamps: !!timestamps });
|
|
}
|
|
}
|