mirror of
https://github.com/portainer/portainer.git
synced 2025-08-02 20:35:25 +02:00
feat(templates): support env variables in Compose stacks
This commit is contained in:
parent
c8c54cf991
commit
e15da005a5
8 changed files with 58 additions and 19 deletions
|
@ -223,8 +223,8 @@ function StackServiceFactory($q, Stack, ResourceControlService, FileUploadServic
|
|||
return Stack.update({ endpointId: stack.EndpointId }, { id: stack.Id, StackFileContent: stackFile, Env: env, Prune: prune }).$promise;
|
||||
};
|
||||
|
||||
service.createComposeStackFromFileUpload = function(name, stackFile, endpointId) {
|
||||
return FileUploadService.createComposeStack(name, stackFile, endpointId);
|
||||
service.createComposeStackFromFileUpload = function(name, stackFile, env, endpointId) {
|
||||
return FileUploadService.createComposeStack(name, stackFile, env, endpointId);
|
||||
};
|
||||
|
||||
service.createSwarmStackFromFileUpload = function(name, stackFile, env, endpointId) {
|
||||
|
@ -245,10 +245,11 @@ function StackServiceFactory($q, Stack, ResourceControlService, FileUploadServic
|
|||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.createComposeStackFromFileContent = function(name, stackFileContent, endpointId) {
|
||||
service.createComposeStackFromFileContent = function(name, stackFileContent, env, endpointId) {
|
||||
var payload = {
|
||||
Name: name,
|
||||
StackFileContent: stackFileContent
|
||||
StackFileContent: stackFileContent,
|
||||
Env: env
|
||||
};
|
||||
return Stack.create({ method: 'string', type: 2, endpointId: endpointId }, payload).$promise;
|
||||
};
|
||||
|
@ -277,14 +278,15 @@ function StackServiceFactory($q, Stack, ResourceControlService, FileUploadServic
|
|||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.createComposeStackFromGitRepository = function(name, repositoryOptions, endpointId) {
|
||||
service.createComposeStackFromGitRepository = function(name, repositoryOptions, env, endpointId) {
|
||||
var payload = {
|
||||
Name: name,
|
||||
RepositoryURL: repositoryOptions.RepositoryURL,
|
||||
ComposeFilePathInRepository: repositoryOptions.ComposeFilePathInRepository,
|
||||
RepositoryAuthentication: repositoryOptions.RepositoryAuthentication,
|
||||
RepositoryUsername: repositoryOptions.RepositoryUsername,
|
||||
RepositoryPassword: repositoryOptions.RepositoryPassword
|
||||
RepositoryPassword: repositoryOptions.RepositoryPassword,
|
||||
Env: env
|
||||
};
|
||||
return Stack.create({ method: 'repository', type: 2, endpointId: endpointId }, payload).$promise;
|
||||
};
|
||||
|
|
|
@ -41,12 +41,13 @@ angular.module('portainer.app')
|
|||
});
|
||||
};
|
||||
|
||||
service.createComposeStack = function(stackName, file, endpointId) {
|
||||
service.createComposeStack = function(stackName, file, env, endpointId) {
|
||||
return Upload.upload({
|
||||
url: 'api/stacks?method=file&type=2&endpointId=' + endpointId,
|
||||
data: {
|
||||
file: file,
|
||||
Name: stackName
|
||||
Name: stackName,
|
||||
Env: Upload.json(env)
|
||||
},
|
||||
ignoreLoadingBar: true
|
||||
});
|
||||
|
|
|
@ -65,14 +65,15 @@ function ($scope, $state, StackService, Authentication, Notifications, FormValid
|
|||
}
|
||||
|
||||
function createComposeStack(name, method) {
|
||||
var env = FormHelper.removeInvalidEnvVars($scope.formValues.Env);
|
||||
var endpointId = EndpointProvider.endpointID();
|
||||
|
||||
if (method === 'editor') {
|
||||
var stackFileContent = $scope.formValues.StackFileContent;
|
||||
return StackService.createComposeStackFromFileContent(name, stackFileContent, endpointId);
|
||||
return StackService.createComposeStackFromFileContent(name, stackFileContent, env, endpointId);
|
||||
} else if (method === 'upload') {
|
||||
var stackFile = $scope.formValues.StackFile;
|
||||
return StackService.createComposeStackFromFileUpload(name, stackFile, endpointId);
|
||||
return StackService.createComposeStackFromFileUpload(name, stackFile, env, endpointId);
|
||||
} else if (method === 'repository') {
|
||||
var repositoryOptions = {
|
||||
RepositoryURL: $scope.formValues.RepositoryURL,
|
||||
|
@ -81,7 +82,7 @@ function ($scope, $state, StackService, Authentication, Notifications, FormValid
|
|||
RepositoryUsername: $scope.formValues.RepositoryUsername,
|
||||
RepositoryPassword: $scope.formValues.RepositoryPassword
|
||||
};
|
||||
return StackService.createComposeStackFromGitRepository(name, repositoryOptions, endpointId);
|
||||
return StackService.createComposeStackFromGitRepository(name, repositoryOptions, env, endpointId);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -160,7 +160,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<!-- environment-variables -->
|
||||
<div ng-if="state.StackType === 1">
|
||||
<div>
|
||||
<div class="col-sm-12 form-section-title">
|
||||
Environment
|
||||
</div>
|
||||
|
|
|
@ -94,13 +94,20 @@ function ($scope, $q, $state, $transition$, $anchorScroll, ContainerService, Ima
|
|||
function createComposeStackFromTemplate(template, userId, accessControlData) {
|
||||
var stackName = $scope.formValues.name;
|
||||
|
||||
for (var i = 0; i < template.Env.length; i++) {
|
||||
var envvar = template.Env[i];
|
||||
if (envvar.preset) {
|
||||
envvar.value = envvar.default;
|
||||
}
|
||||
}
|
||||
|
||||
var repositoryOptions = {
|
||||
RepositoryURL: template.Repository.url,
|
||||
ComposeFilePathInRepository: template.Repository.stackfile
|
||||
};
|
||||
|
||||
var endpointId = EndpointProvider.endpointID();
|
||||
StackService.createComposeStackFromGitRepository(stackName, repositoryOptions, endpointId)
|
||||
StackService.createComposeStackFromGitRepository(stackName, repositoryOptions, template.Env, endpointId)
|
||||
.then(function success(data) {
|
||||
return ResourceControlService.applyResourceControl('stack', stackName, userId, accessControlData, []);
|
||||
})
|
||||
|
@ -121,8 +128,8 @@ function ($scope, $q, $state, $transition$, $anchorScroll, ContainerService, Ima
|
|||
|
||||
for (var i = 0; i < template.Env.length; i++) {
|
||||
var envvar = template.Env[i];
|
||||
if (envvar.set) {
|
||||
envvar.value = envvar.set;
|
||||
if (envvar.preset) {
|
||||
envvar.value = envvar.default;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue