diff --git a/app/components/network/network.html b/app/components/network/network.html
index 289f1a5e9..ae0cc846d 100644
--- a/app/components/network/network.html
+++ b/app/components/network/network.html
@@ -65,3 +65,34 @@
+
+
+
+
+
+
+
+
+
+ Container Name |
+ IPv4 Address |
+ IPv6 Address |
+ MacAddress |
+ Actions |
+
+
+
+ {{ container.Name }} |
+ {{ container.IPv4Address || '-' }} |
+ {{ container.IPv6Address || '-' }} |
+ {{ container.MacAddress || '-' }} |
+
+
+ |
+
+
+
+
+
+
+
diff --git a/app/components/network/networkController.js b/app/components/network/networkController.js
index d5e93b7ff..656a6b062 100644
--- a/app/components/network/networkController.js
+++ b/app/components/network/networkController.js
@@ -1,6 +1,6 @@
angular.module('network', [])
-.controller('NetworkController', ['$scope', '$state', '$stateParams', 'Network', 'Messages',
-function ($scope, $state, $stateParams, Network, Messages) {
+.controller('NetworkController', ['$scope', '$state', '$stateParams', 'Network', 'Container', 'ContainerHelper', 'Messages',
+function ($scope, $state, $stateParams, Network, Container, ContainerHelper, Messages) {
$scope.removeNetwork = function removeNetwork(networkId) {
$('#loadingViewSpinner').show();
@@ -19,12 +19,53 @@ function ($scope, $state, $stateParams, Network, Messages) {
});
};
- $('#loadingViewSpinner').show();
- Network.get({id: $stateParams.id}, function (d) {
- $scope.network = d;
- $('#loadingViewSpinner').hide();
- }, function (e) {
- $('#loadingViewSpinner').hide();
- Messages.error("Failure", e, "Unable to retrieve network info");
- });
+ $scope.containerLeaveNetwork = function containerLeaveNetwork(network, containerId) {
+ $('#loadingViewSpinner').show();
+ Network.disconnect({id: $stateParams.id}, { Container: containerId, Force: false }, function (d) {
+ if (d.message) {
+ $('#loadingViewSpinner').hide();
+ Messages.send("Error", {}, d.message);
+ } else {
+ $('#loadingViewSpinner').hide();
+ Messages.send("Container left network", $stateParams.id);
+ $state.go('network', {id: network.Id}, {reload: true});
+ }
+ }, function (e) {
+ $('#loadingViewSpinner').hide();
+ Messages.error("Failure", e, "Unable to disconnect container from network");
+ });
+ };
+
+ function getNetwork() {
+ $('#loadingViewSpinner').show();
+ Network.get({id: $stateParams.id}, function (d) {
+ $scope.network = d;
+ getContainersInNetwork(d);
+ $('#loadingViewSpinner').hide();
+ }, function (e) {
+ $('#loadingViewSpinner').hide();
+ Messages.error("Failure", e, "Unable to retrieve network info");
+ });
+ }
+
+ function getContainersInNetwork(network) {
+ if (network.Containers) {
+ Container.query({
+ filters: {network: [$stateParams.id]}
+ }, function (containersInNetworkResult) {
+ if ($scope.containersToHideLabels) {
+ containersInNetworkResult = ContainerHelper.hideContainers(containersInNetworkResult, $scope.containersToHideLabels);
+ }
+ var containersInNetwork = [];
+ containersInNetworkResult.forEach(function(container) {
+ var containerInNetwork = network.Containers[container.Id];
+ containerInNetwork.Id = container.Id;
+ containersInNetwork.push(containerInNetwork);
+ });
+ $scope.containersInNetwork = containersInNetwork;
+ });
+ }
+ }
+
+ getNetwork();
}]);
diff --git a/app/shared/services.js b/app/shared/services.js
index 67fb2aa39..71091ab0d 100644
--- a/app/shared/services.js
+++ b/app/shared/services.js
@@ -6,7 +6,7 @@ angular.module('portainer.services', ['ngResource', 'ngSanitize'])
return $resource(Settings.url + '/containers/:id/:action', {
name: '@name'
}, {
- query: {method: 'GET', params: {all: 0, action: 'json'}, isArray: true},
+ query: {method: 'GET', params: {all: 0, action: 'json', filters: '@filters' }, isArray: true},
get: {method: 'GET', params: {action: 'json'}},
stop: {method: 'POST', params: {id: '@id', t: 5, action: 'stop'}},
restart: {method: 'POST', params: {id: '@id', t: 5, action: 'restart'}},