feat(service-details): manage bridge & ingress

pull/3546/head
itsconquest 2020-02-06 20:25:05 +13:00
parent e4254cb634
commit 77294ad731
3 changed files with 17 additions and 7 deletions

View File

@ -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,

View File

@ -26,7 +26,7 @@
</td>
<td>{{ network.Addr }}</td>
<td authorization="DockerServiceUpdate">
<button type="button" class="btn btn-xs btn-danger" ng-click="removeNetwork(service, $index)" ng-disabled="isUpdating">
<button type="button" class="btn btn-xs btn-danger" ng-click="removeNetwork(service, $index)" ng-disabled="isUpdating" ng-if="network.Name && !(network.Name == 'ingress' || network.Name == 'bridge')" >
<i class="fa fa-trash" aria-hidden="true"></i> Remove network
</button>
</td>

View File

@ -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;