diff --git a/app/docker/helpers/serviceHelper.js b/app/docker/helpers/serviceHelper.js index 6f6fe6d79..e771d2347 100644 --- a/app/docker/helpers/serviceHelper.js +++ b/app/docker/helpers/serviceHelper.js @@ -28,16 +28,25 @@ angular.module('portainer.docker') }); } - helper.mapNetworkNameToServiceNetwork = function(service, networks) { + helper.filterServiceNetworks = function(service, networks) { for (var i = 0; i < service.ServiceNetworks.length; i++) { var serviceNetwork = service.ServiceNetworks[i]; var network = findAssociatedNetwork(serviceNetwork, networks); - if (network) { + if (network && network.Name) { serviceNetwork.Name = network.Name; } } + _.remove(service.ServiceNetworks, network => (!network.Name)); + if (!_.some(service.ServiceNetworks, network => (network.Name === 'bridge'))){ + service.ServiceNetworks.push(_.find(networks, network => network.Name === 'bridge')); + } }; + helper.translateNetworkNameToTargets = function(networks) { + _.remove(networks, network => (network.Name === 'ingress' || network.Name === 'bridge')); + return _.map(networks, ({NetworkID}) => ({ Target: NetworkID})); + } + helper.serviceToConfig = function(service) { return { Name: service.Spec.Name, diff --git a/app/docker/views/services/edit/includes/networks.html b/app/docker/views/services/edit/includes/networks.html index 0a4cba8b0..c6be034b2 100644 --- a/app/docker/views/services/edit/includes/networks.html +++ b/app/docker/views/services/edit/includes/networks.html @@ -26,7 +26,7 @@ {{ network.Addr }} - diff --git a/app/docker/views/services/edit/serviceController.js b/app/docker/views/services/edit/serviceController.js index 95643ce2d..165d43e1c 100644 --- a/app/docker/views/services/edit/serviceController.js +++ b/app/docker/views/services/edit/serviceController.js @@ -172,7 +172,7 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, if (network && !_.find(service.ServiceNetworks, {'NetworkID': network.Id})) { service.ServiceNetworks.push({NetworkID: network.Id}) updateServiceArray(service, 'ServiceNetworks', service.ServiceNetworks); - ServiceHelper.mapNetworkNameToServiceNetwork(service, $scope.networks); + ServiceHelper.filterServiceNetworks(service, $scope.networks); } }; $scope.removeNetwork = function removeNetwork(service, index) { @@ -311,7 +311,7 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, config.TaskTemplate.ContainerSpec.Image = service.Image; } if ($scope.hasChanges(service, ["ServiceNetworks"])) { - config.TaskTemplate.Networks = _.map(service.ServiceNetworks, ({NetworkID}) => ({ Target: NetworkID})); + config.TaskTemplate.Networks = ServiceHelper.translateNetworkNameToTargets(service.ServiceNetworks); } config.TaskTemplate.ContainerSpec.Secrets = service.ServiceSecrets ? service.ServiceSecrets.map(SecretHelper.secretConfig) : []; config.TaskTemplate.ContainerSpec.Configs = service.ServiceConfigs ? service.ServiceConfigs.map(ConfigHelper.configConfig) : []; @@ -566,7 +566,8 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, containers: agentProxy ? ContainerService.containers() : [], nodes: NodeService.nodes(), networks: NetworkService.networks(true, true, true), - availableNetworks: NetworkService.networks(true, true, true), + availableNetworks: NetworkService.networks(false, true, true), + test: NetworkService.networks(false, true, true), secrets: apiVersion >= 1.25 ? SecretService.secrets() : [], configs: apiVersion >= 1.30 ? ConfigService.configs() : [], availableImages: ImageService.images(), @@ -607,7 +608,7 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll, $scope.tasks = data.tasks; - ServiceHelper.mapNetworkNameToServiceNetwork(service, data.networks); + ServiceHelper.filterServiceNetworks(service, data.networks); // Set max cpu value var maxCpus = 0;