From 6bfbf58cdb8c290fb3d141551763533be8983b39 Mon Sep 17 00:00:00 2001
From: fhanportainer <79428273+fhanportainer@users.noreply.github.com>
Date: Wed, 26 May 2021 04:55:50 +1200
Subject: [PATCH] fix(template): fixed disabled deploy button EE-812 (#5105)
---
.../stackFromTemplateForm.html | 4 ++--
.../views/templates/templatesController.js | 22 ++++++++++++++++++-
2 files changed, 23 insertions(+), 3 deletions(-)
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(),