diff --git a/app/components/container/container.html b/app/components/container/container.html index 63f9529b4..e696fde8d 100644 --- a/app/components/container/container.html +++ b/app/components/container/container.html @@ -290,6 +290,22 @@
+
+
+ +
+ +
+ +
+
+ +
+
+
diff --git a/app/components/container/containerController.js b/app/components/container/containerController.js index 2bed294ff..183bb9fa8 100644 --- a/app/components/container/containerController.js +++ b/app/components/container/containerController.js @@ -197,5 +197,44 @@ function ($scope, $state, $stateParams, $filter, Container, ContainerCommit, Con }); }; + $scope.containerJoinNetwork = function containerJoinNetwork(container, networkId) { + $('#joinNetworkSpinner').show(); + Network.connect({id: networkId}, { Container: $stateParams.id }, function (d) { + if (container.message) { + $('#joinNetworkSpinner').hide(); + Notifications.error('Error', d, 'Unable to connect container to network'); + } else { + $('#joinNetworkSpinner').hide(); + Notifications.success('Container joined network', $stateParams.id); + $state.go('container', {id: $stateParams.id}, {reload: true}); + } + }, function (e) { + $('#joinNetworkSpinner').hide(); + Notifications.error('Failure', e, 'Unable to connect container to network'); + }); + }; + + Network.query({}, function (d) { + var networks = d; + if ($scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM' || $scope.applicationState.endpoint.mode.provider === 'DOCKER_SWARM_MODE') { + networks = d.filter(function (network) { + if (network.Scope === 'global') { + return network; + } + }); + $scope.globalNetworkCount = networks.length; + networks.push({Name: 'bridge'}); + networks.push({Name: 'host'}); + networks.push({Name: 'none'}); + } + networks.push({Name: 'container'}); + $scope.availableNetworks = networks; + if (!_.find(networks, {'Name': 'bridge'})) { + $scope.config.HostConfig.NetworkMode = 'nat'; + } + }, function (e) { + Notifications.error('Failure', e, 'Unable to retrieve networks'); + }); + update(); }]);