diff --git a/app/portainer/components/forms/stack-from-template-form/stackFromTemplateForm.html b/app/portainer/components/forms/stack-from-template-form/stackFromTemplateForm.html index 336ccb8a4..1f3907ee4 100644 --- a/app/portainer/components/forms/stack-from-template-form/stackFromTemplateForm.html +++ b/app/portainer/components/forms/stack-from-template-form/stackFromTemplateForm.html @@ -55,7 +55,7 @@
{{ $ctrl.state.formValidationError }}
-
This template type cannot be deployed on this endpoint.
diff --git a/app/portainer/views/templates/templatesController.js b/app/portainer/views/templates/templatesController.js index cdf36a38a..4ceccbb61 100644 --- a/app/portainer/views/templates/templatesController.js +++ b/app/portainer/views/templates/templatesController.js @@ -36,6 +36,9 @@ angular.module('portainer.app').controller('TemplatesController', [ StackService, endpoint ) { + const DOCKER_STANDALONE = 'DOCKER_STANDALONE'; + const DOCKER_SWARM_MODE = 'DOCKER_SWARM_MODE'; + $scope.state = { selectedTemplate: null, showAdvancedOptions: false, @@ -240,9 +243,27 @@ angular.module('portainer.app').controller('TemplatesController', [ $scope.formValues.name = template.Name ? template.Name : ''; $scope.state.selectedTemplate = template; + $scope.state.deployable = isDeployable($scope.applicationState.endpoint, template.Type); $anchorScroll('view-top'); }; + function isDeployable(endpoint, templateType) { + let deployable = false; + switch (templateType) { + case 1: + deployable = endpoint.mode.provider === DOCKER_SWARM_MODE || endpoint.mode.provider === DOCKER_STANDALONE; + break; + case 2: + deployable = endpoint.mode.provider === DOCKER_SWARM_MODE; + break; + case 3: + deployable = endpoint.mode.provider === DOCKER_STANDALONE; + break; + } + + return deployable; + } + function createTemplateConfiguration(template) { var network = $scope.formValues.network; var name = $scope.formValues.name; @@ -254,7 +275,6 @@ angular.module('portainer.app').controller('TemplatesController', [ var endpointMode = $scope.applicationState.endpoint.mode; var apiVersion = $scope.applicationState.endpoint.apiVersion; - $scope.state.provider = endpointMode.provider === 'DOCKER_STANDALONE' ? 2 : 1; $q.all({ templates: TemplateService.templates(),