mirror of https://github.com/docker/docker-py.git
99 lines
3.4 KiB
Python
99 lines
3.4 KiB
Python
import random
|
|
|
|
import docker
|
|
import pytest
|
|
|
|
from . import api_test
|
|
from ..base import requires_api_version
|
|
|
|
|
|
@requires_api_version('1.21')
|
|
class TestNetworks(api_test.BaseTestCase):
|
|
def create_network(self, *args, **kwargs):
|
|
net_name = 'dockerpy{}'.format(random.getrandbits(24))[:14]
|
|
net_id = self.client.create_network(net_name, *args, **kwargs)['id']
|
|
self.tmp_networks.append(net_id)
|
|
return (net_name, net_id)
|
|
|
|
def test_list_networks(self):
|
|
networks = self.client.networks()
|
|
initial_size = len(networks)
|
|
|
|
net_name, net_id = self.create_network()
|
|
|
|
networks = self.client.networks()
|
|
self.assertEqual(len(networks), initial_size + 1)
|
|
self.assertTrue(net_id in [n['id'] for n in networks])
|
|
|
|
networks_by_name = self.client.networks(names=[net_name])
|
|
self.assertEqual([n['id'] for n in networks_by_name], [net_id])
|
|
|
|
networks_by_partial_id = self.client.networks(ids=[net_id[:8]])
|
|
self.assertEqual([n['id'] for n in networks_by_partial_id], [net_id])
|
|
|
|
def test_inspect_network(self):
|
|
net_name, net_id = self.create_network()
|
|
|
|
net = self.client.inspect_network(net_id)
|
|
self.assertEqual(net, {
|
|
u'name': net_name,
|
|
u'id': net_id,
|
|
u'driver': 'bridge',
|
|
u'containers': {},
|
|
})
|
|
|
|
def test_create_network_with_host_driver_fails(self):
|
|
net_name = 'dockerpy{}'.format(random.getrandbits(24))[:14]
|
|
|
|
with pytest.raises(docker.errors.APIError):
|
|
self.client.create_network(net_name, driver='host')
|
|
|
|
def test_remove_network(self):
|
|
initial_size = len(self.client.networks())
|
|
|
|
net_name, net_id = self.create_network()
|
|
self.assertEqual(len(self.client.networks()), initial_size + 1)
|
|
|
|
self.client.remove_network(net_id)
|
|
self.assertEqual(len(self.client.networks()), initial_size)
|
|
|
|
def test_connect_and_disconnect_container(self):
|
|
net_name, net_id = self.create_network()
|
|
|
|
container = self.client.create_container('busybox', 'top')
|
|
self.tmp_containers.append(container)
|
|
self.client.start(container)
|
|
|
|
network_data = self.client.inspect_network(net_id)
|
|
self.assertFalse(network_data.get('containers'))
|
|
|
|
self.client.connect_container_to_network(container, net_id)
|
|
network_data = self.client.inspect_network(net_id)
|
|
self.assertEqual(
|
|
list(network_data['containers'].keys()),
|
|
[container['Id']])
|
|
|
|
self.client.disconnect_container_from_network(container, net_id)
|
|
network_data = self.client.inspect_network(net_id)
|
|
self.assertFalse(network_data.get('containers'))
|
|
|
|
def test_connect_on_container_create(self):
|
|
net_name, net_id = self.create_network()
|
|
|
|
container = self.client.create_container(
|
|
image='busybox',
|
|
command='top',
|
|
host_config=self.client.create_host_config(network_mode=net_name),
|
|
)
|
|
self.tmp_containers.append(container)
|
|
self.client.start(container)
|
|
|
|
network_data = self.client.inspect_network(net_id)
|
|
self.assertEqual(
|
|
list(network_data['containers'].keys()),
|
|
[container['Id']])
|
|
|
|
self.client.disconnect_container_from_network(container, net_id)
|
|
network_data = self.client.inspect_network(net_id)
|
|
self.assertFalse(network_data.get('containers'))
|