portainer/app/edge/services/edge-stack.js

76 lines
2.4 KiB
JavaScript

import angular from 'angular';
angular.module('portainer.edge').factory('EdgeStackService', function EdgeStackServiceFactory(EdgeStacks, FileUploadService) {
var service = {};
service.stack = function stack(id) {
return EdgeStacks.get({ id }).$promise;
};
service.stacks = function stacks() {
return EdgeStacks.query({}).$promise;
};
service.remove = function remove(id) {
return EdgeStacks.remove({ id }).$promise;
};
service.stackFile = async function stackFile(id) {
try {
const { StackFileContent } = await EdgeStacks.file({ id }).$promise;
return StackFileContent;
} catch (err) {
throw { msg: 'Unable to retrieve stack content', err };
}
};
service.updateStack = async function updateStack(id, stack) {
return EdgeStacks.update({ id }, stack);
};
service.createStackFromFileContent = async function createStackFromFileContent(name, stackFileContent, edgeGroups) {
var payload = {
Name: name,
StackFileContent: stackFileContent,
EdgeGroups: edgeGroups,
};
try {
return await EdgeStacks.create({ method: 'string' }, payload).$promise;
} catch (err) {
throw { msg: 'Unable to create the stack', err };
}
};
service.createStackFromFileUpload = async function createStackFromFileUpload(name, stackFile, edgeGroups) {
try {
return await FileUploadService.createEdgeStack(name, stackFile, edgeGroups);
} catch (err) {
throw { msg: 'Unable to create the stack', err };
}
};
service.createStackFromGitRepository = async function createStackFromGitRepository(name, repositoryOptions, edgeGroups) {
var payload = {
Name: name,
RepositoryURL: repositoryOptions.RepositoryURL,
RepositoryReferenceName: repositoryOptions.RepositoryReferenceName,
ComposeFilePathInRepository: repositoryOptions.ComposeFilePathInRepository,
RepositoryAuthentication: repositoryOptions.RepositoryAuthentication,
RepositoryUsername: repositoryOptions.RepositoryUsername,
RepositoryPassword: repositoryOptions.RepositoryPassword,
EdgeGroups: edgeGroups,
};
try {
return await EdgeStacks.create({ method: 'repository' }, payload).$promise;
} catch (err) {
throw { msg: 'Unable to create the stack', err };
}
};
service.update = function update(stack) {
return EdgeStacks.update(stack).$promise;
};
return service;
});