1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-23 15:29:42 +02:00
portainer/app/docker/services/volumeService.js
LP B ac5491e864
Some checks failed
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Has been cancelled
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Has been cancelled
ci / build_images (map[arch:arm platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Has been cancelled
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Has been cancelled
/ triage (push) Has been cancelled
Lint / Run linters (push) Has been cancelled
Test / test-client (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:linux]) (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Has been cancelled
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Has been cancelled
Test / test-server (map[arch:arm64 platform:linux]) (push) Has been cancelled
ci / build_manifests (push) Has been cancelled
feat(app): limit the docker API version supported by the frontend (#12295)
2024-10-08 17:13:14 +02:00

89 lines
3.1 KiB
JavaScript

import { getVolumes } from '@/react/docker/volumes/queries/useVolumes';
import { getVolume } from '@/react/docker/volumes/queries/useVolume';
import { removeVolume } from '@/react/docker/volumes/queries/useRemoveVolumeMutation';
import { createVolume } from '@/react/docker/volumes/queries/useCreateVolumeMutation';
import { VolumeViewModel } from '../models/volume';
angular.module('portainer.docker').factory('VolumeService', VolumeServiceFactory);
/* @ngInject */
function VolumeServiceFactory(AngularToReact) {
const { useAxios, injectEnvironmentId } = AngularToReact;
return {
volumes: useAxios(injectEnvironmentId(volumesAngularJS)), // dashboard + service create + service edit + volume list
volume: useAxios(injectEnvironmentId(volumeAngularJS)), // volume edit
getVolumes: useAxios(injectEnvironmentId(getVolumesAngularJS)), // template list
remove: useAxios(injectEnvironmentId(removeAngularJS)), // volume list + volume edit
createVolume: useAxios(injectEnvironmentId(createAngularJS)), // volume create
createVolumeConfiguration, // volume create
createXAutoGeneratedLocalVolumes: useAxios(injectEnvironmentId(createXAutoGeneratedLocalVolumes)), // templates list
};
/**
* @param {EnvironmentId} environmentId Injected
* @param {Filters} filters
*/
async function volumesAngularJS(environmentId, filters) {
const data = await getVolumes(environmentId, filters);
return data.map((v) => new VolumeViewModel(v));
}
/**
* @param {EnvironmentId} environmentId Injected
* @param {string} id
*/
async function volumeAngularJS(environmentId, id) {
const data = await getVolume(environmentId, id);
return new VolumeViewModel(data);
}
/**
* @param {EnvironmentId} environmentId Injected
*/
async function getVolumesAngularJS(environmentId) {
return getVolumes(environmentId);
}
/**
* @param {EnvironmentId} environmentId Injected
* @param {string} name
* @param {string?} nodeName
*/
async function removeAngularJS(environmentId, name, nodeName) {
return removeVolume(environmentId, name, { nodeName });
}
/**
* @param {string} name
* @param {string} driver
* @param {{name: string; value: string;}[]} driverOptions
*/
function createVolumeConfiguration(name, driver, driverOptions) {
return {
Name: name,
Driver: driver,
DriverOpts: driverOptions.reduce((res, { name, value }) => ({ ...res, [name]: value }), {}),
};
}
/**
* @param {EnvironmentId} environmentId Injected
* @param {VolumeConfiguration} volumeConfiguration
* @param {string?} nodeName
*/
async function createAngularJS(environmentId, volumeConfiguration, nodeName) {
const data = await createVolume(environmentId, volumeConfiguration, { nodeName });
return new VolumeViewModel(data);
}
/**
* @param {EnvironmentId} environmentId
* @param {number} count
*/
async function createXAutoGeneratedLocalVolumes(environmentId, count) {
const promises = Array(count).map(createVolume(environmentId, { Driver: 'local' }));
return Promise.all(promises);
}
}