From 067257df2bf5cd554810303136f54a188144369f Mon Sep 17 00:00:00 2001 From: Chaim Lev-Ari Date: Mon, 14 Dec 2020 05:27:05 +0200 Subject: [PATCH] fix(services): prevent adding volume without source and target (#4538) * feat(services): check that target mounts are non empty * feat(services): prevent creating service when no source * refactor(services): remove ng-form * fix(services): check that every volume is valid --- app/assets/css/app.css | 4 ++ .../create/createServiceController.js | 6 +++ .../views/services/create/createservice.html | 47 ++++++++++++------- .../views/services/edit/includes/mounts.html | 7 ++- .../views/services/edit/serviceController.js | 6 +++ 5 files changed, 51 insertions(+), 19 deletions(-) diff --git a/app/assets/css/app.css b/app/assets/css/app.css index d42b10ee0..4f9ca5881 100644 --- a/app/assets/css/app.css +++ b/app/assets/css/app.css @@ -1042,3 +1042,7 @@ json-tree .branch-preview { background-color: #337ab7; } /* !spinkit override */ + +.w-full { + width: 100%; +} diff --git a/app/docker/views/services/create/createServiceController.js b/app/docker/views/services/create/createServiceController.js index 2edddb658..a59d74207 100644 --- a/app/docker/views/services/create/createServiceController.js +++ b/app/docker/views/services/create/createServiceController.js @@ -520,6 +520,12 @@ angular.module('portainer.docker').controller('CreateServiceController', [ return true; } + $scope.volumesAreValid = volumesAreValid; + function volumesAreValid() { + const volumes = $scope.formValues.Volumes; + return volumes.every((volume) => volume.Target && volume.Source); + } + $scope.create = function createService() { var accessControlData = $scope.formValues.AccessControlData; diff --git a/app/docker/views/services/create/createservice.html b/app/docker/views/services/create/createservice.html index cc304b3e1..2dcdea2de 100644 --- a/app/docker/views/services/create/createservice.html +++ b/app/docker/views/services/create/createservice.html @@ -123,7 +123,7 @@ + diff --git a/app/docker/views/services/edit/serviceController.js b/app/docker/views/services/edit/serviceController.js index f3cd5ae87..b73938d74 100644 --- a/app/docker/views/services/edit/serviceController.js +++ b/app/docker/views/services/edit/serviceController.js @@ -378,6 +378,12 @@ angular.module('portainer.docker').controller('ServiceController', [ return hasChanges; }; + $scope.mountsAreValid = mountsAreValid; + function mountsAreValid() { + const mounts = $scope.service.ServiceMounts; + return mounts.every((mount) => mount.Source && mount.Target); + } + function buildChanges(service) { var config = ServiceHelper.serviceToConfig(service.Model); config.Name = service.Name;