diff --git a/app/portainer/components/forms/template-form/template-form.js b/app/portainer/components/forms/template-form/template-form.js index 2d6e54ee9..feedf72c5 100644 --- a/app/portainer/components/forms/template-form/template-form.js +++ b/app/portainer/components/forms/template-form/template-form.js @@ -41,6 +41,7 @@ angular.module('portainer.app').component('templateForm', { }; this.addEnvVarValue = function(env) { + env.select = env.select || []; env.select.push({ name: '', value: '' }); }; @@ -49,11 +50,7 @@ angular.module('portainer.app').component('templateForm', { }; this.changeEnvVarType = function(env) { - if (env.type === 1) { - env.preset = true; - } else if (env.type === 2) { - env.preset = false; - } + env.preset = env.type === 1; }; }, bindings: { diff --git a/app/portainer/views/templates/templatesController.js b/app/portainer/views/templates/templatesController.js index 948e54b3c..5a4533fee 100644 --- a/app/portainer/views/templates/templatesController.js +++ b/app/portainer/views/templates/templatesController.js @@ -125,13 +125,18 @@ function ($scope, $q, $state, $transition$, $anchorScroll, ContainerService, Ima function createStackFromTemplate(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 env =_.filter( + _.map(template.Env, function transformEnvVar(envvar) { + return { + name: envvar.name, + value: + envvar.preset || !envvar.value ? envvar.default : envvar.value + }; + }), + function removeUndefinedVars(envvar) { + return envvar.value && envvar.name; + } + ); var repositoryOptions = { RepositoryURL: template.Repository.url, @@ -139,7 +144,7 @@ function ($scope, $q, $state, $transition$, $anchorScroll, ContainerService, Ima }; var endpointId = EndpointProvider.endpointID(); - StackService.createSwarmStackFromGitRepository(stackName, repositoryOptions, template.Env, endpointId) + StackService.createSwarmStackFromGitRepository(stackName, repositoryOptions, env, endpointId) .then(function success() { return ResourceControlService.applyResourceControl('stack', stackName, userId, accessControlData, []); })