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(),