Kaydet (Commit) 4890864d authored tarafından Karl Kuehn's avatar Karl Kuehn Kaydeden (comit) Ulysses Souza

add ports to containers

Signed-off-by: 's avatarKarl Kuehn <kuehn.karl@gmail.com>
üst 02e660da
......@@ -62,6 +62,13 @@ class Container(Model):
return self.attrs['State']['Status']
return self.attrs['State']
@property
def ports(self):
"""
The ports that the container exposes as a dictionary.
"""
return self.attrs.get('NetworkSettings', {}).get('Ports', {})
def attach(self, **kwargs):
"""
Attach to this container.
......
......@@ -346,6 +346,28 @@ class ContainerTest(BaseIntegrationTest):
'memory_stats', 'blkio_stats']:
assert key in stats
def test_ports(self):
client = docker.from_env(version=TEST_API_VERSION)
target_ports = {'2222/tcp': None}
container = client.containers.run(
"alpine", "sleep 100", detach=True,
ports=target_ports
)
self.tmp_containers.append(container.id)
container.reload() # required to get auto-assigned ports
actual_ports = container.ports
assert sorted(target_ports.keys()) == sorted(actual_ports.keys())
for target_client, target_host in target_ports.items():
for actual_port in actual_ports[target_client]:
actual_keys = sorted(actual_port.keys())
assert sorted(['HostIp', 'HostPort']) == actual_keys
if target_host is None:
int(actual_port['HostPort'])
elif isinstance(target_host, (list, tuple)):
raise NotImplementedError()
else:
assert actual_port['HostPort'] == target_host.split('/', 1)
def test_stop(self):
client = docker.from_env(version=TEST_API_VERSION)
container = client.containers.run("alpine", "top", detach=True)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment