mirror of https://github.com/portainer/portainer
feat(service-details): manage bridge & ingress
parent
e4254cb634
commit
77294ad731
|
@ -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++) {
|
for (var i = 0; i < service.ServiceNetworks.length; i++) {
|
||||||
var serviceNetwork = service.ServiceNetworks[i];
|
var serviceNetwork = service.ServiceNetworks[i];
|
||||||
var network = findAssociatedNetwork(serviceNetwork, networks);
|
var network = findAssociatedNetwork(serviceNetwork, networks);
|
||||||
if (network) {
|
if (network && network.Name) {
|
||||||
serviceNetwork.Name = 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) {
|
helper.serviceToConfig = function(service) {
|
||||||
return {
|
return {
|
||||||
Name: service.Spec.Name,
|
Name: service.Spec.Name,
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
</td>
|
</td>
|
||||||
<td>{{ network.Addr }}</td>
|
<td>{{ network.Addr }}</td>
|
||||||
<td authorization="DockerServiceUpdate">
|
<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
|
<i class="fa fa-trash" aria-hidden="true"></i> Remove network
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -172,7 +172,7 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll,
|
||||||
if (network && !_.find(service.ServiceNetworks, {'NetworkID': network.Id})) {
|
if (network && !_.find(service.ServiceNetworks, {'NetworkID': network.Id})) {
|
||||||
service.ServiceNetworks.push({NetworkID: network.Id})
|
service.ServiceNetworks.push({NetworkID: network.Id})
|
||||||
updateServiceArray(service, 'ServiceNetworks', service.ServiceNetworks);
|
updateServiceArray(service, 'ServiceNetworks', service.ServiceNetworks);
|
||||||
ServiceHelper.mapNetworkNameToServiceNetwork(service, $scope.networks);
|
ServiceHelper.filterServiceNetworks(service, $scope.networks);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
$scope.removeNetwork = function removeNetwork(service, index) {
|
$scope.removeNetwork = function removeNetwork(service, index) {
|
||||||
|
@ -311,7 +311,7 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll,
|
||||||
config.TaskTemplate.ContainerSpec.Image = service.Image;
|
config.TaskTemplate.ContainerSpec.Image = service.Image;
|
||||||
}
|
}
|
||||||
if ($scope.hasChanges(service, ["ServiceNetworks"])) {
|
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.Secrets = service.ServiceSecrets ? service.ServiceSecrets.map(SecretHelper.secretConfig) : [];
|
||||||
config.TaskTemplate.ContainerSpec.Configs = service.ServiceConfigs ? service.ServiceConfigs.map(ConfigHelper.configConfig) : [];
|
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() : [],
|
containers: agentProxy ? ContainerService.containers() : [],
|
||||||
nodes: NodeService.nodes(),
|
nodes: NodeService.nodes(),
|
||||||
networks: NetworkService.networks(true, true, true),
|
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() : [],
|
secrets: apiVersion >= 1.25 ? SecretService.secrets() : [],
|
||||||
configs: apiVersion >= 1.30 ? ConfigService.configs() : [],
|
configs: apiVersion >= 1.30 ? ConfigService.configs() : [],
|
||||||
availableImages: ImageService.images(),
|
availableImages: ImageService.images(),
|
||||||
|
@ -607,7 +608,7 @@ function ($q, $scope, $transition$, $state, $location, $timeout, $anchorScroll,
|
||||||
|
|
||||||
$scope.tasks = data.tasks;
|
$scope.tasks = data.tasks;
|
||||||
|
|
||||||
ServiceHelper.mapNetworkNameToServiceNetwork(service, data.networks);
|
ServiceHelper.filterServiceNetworks(service, data.networks);
|
||||||
|
|
||||||
// Set max cpu value
|
// Set max cpu value
|
||||||
var maxCpus = 0;
|
var maxCpus = 0;
|
||||||
|
|
Loading…
Reference in New Issue