Kaydet (Commit) 36e302cd authored tarafından Aanand Prasad's avatar Aanand Prasad

Merge pull request #897 from aanand/network-options

Normalise/fix networking API JSON keys
...@@ -24,10 +24,10 @@ class NetworkApiMixin(object): ...@@ -24,10 +24,10 @@ class NetworkApiMixin(object):
raise TypeError('options must be a dictionary') raise TypeError('options must be a dictionary')
data = { data = {
'name': name, 'Name': name,
'driver': driver, 'Driver': driver,
'options': options, 'Options': options,
'ipam': ipam, 'IPAM': ipam,
} }
url = self._url("/networks/create") url = self._url("/networks/create")
res = self._post_json(url, data=data) res = self._post_json(url, data=data)
......
...@@ -47,17 +47,17 @@ BYTE_UNITS = { ...@@ -47,17 +47,17 @@ BYTE_UNITS = {
def create_ipam_pool(subnet=None, iprange=None, gateway=None, def create_ipam_pool(subnet=None, iprange=None, gateway=None,
aux_addresses=None): aux_addresses=None):
return { return {
'subnet': subnet, 'Subnet': subnet,
'iprange': iprange, 'IPRange': iprange,
'gateway': gateway, 'Gateway': gateway,
'auxaddresses': aux_addresses 'AuxiliaryAddresses': aux_addresses
} }
def create_ipam_config(driver='default', pool_configs=None): def create_ipam_config(driver='default', pool_configs=None):
return { return {
'driver': driver, 'Driver': driver,
'config': pool_configs or [] 'Config': pool_configs or []
} }
......
import random import random
import docker import docker
from docker.utils import create_ipam_config
from docker.utils import create_ipam_pool
import pytest import pytest
from .. import helpers from .. import helpers
...@@ -42,6 +44,45 @@ class TestNetworks(helpers.BaseTestCase): ...@@ -42,6 +44,45 @@ class TestNetworks(helpers.BaseTestCase):
self.assertEqual(net['Scope'], 'local') self.assertEqual(net['Scope'], 'local')
self.assertEqual(net['IPAM']['Driver'], 'default') self.assertEqual(net['IPAM']['Driver'], 'default')
@requires_api_version('1.21')
def test_create_network_with_ipam_config(self):
_, net_id = self.create_network(
ipam=create_ipam_config(
driver='default',
pool_configs=[
create_ipam_pool(
subnet="172.28.0.0/16",
iprange="172.28.5.0/24",
gateway="172.28.5.254",
aux_addresses={
"a": "172.28.1.5",
"b": "172.28.1.6",
"c": "172.28.1.7",
},
),
],
),
)
net = self.client.inspect_network(net_id)
ipam = net['IPAM']
assert ipam.pop('Options', None) is None
assert ipam == {
'Driver': 'default',
'Config': [{
'Subnet': "172.28.0.0/16",
'IPRange': "172.28.5.0/24",
'Gateway': "172.28.5.254",
'AuxiliaryAddresses': {
"a": "172.28.1.5",
"b": "172.28.1.6",
"c": "172.28.1.7",
},
}],
}
@requires_api_version('1.21') @requires_api_version('1.21')
def test_create_network_with_host_driver_fails(self): def test_create_network_with_host_driver_fails(self):
net_name = 'dockerpy{}'.format(random.getrandbits(24))[:14] net_name = 'dockerpy{}'.format(random.getrandbits(24))[:14]
......
...@@ -69,7 +69,7 @@ class NetworkTest(DockerClientTest): ...@@ -69,7 +69,7 @@ class NetworkTest(DockerClientTest):
self.assertEqual( self.assertEqual(
json.loads(post.call_args[1]['data']), json.loads(post.call_args[1]['data']),
{"name": "foo"}) {"Name": "foo"})
opts = { opts = {
'com.docker.network.bridge.enable_icc': False, 'com.docker.network.bridge.enable_icc': False,
...@@ -79,7 +79,7 @@ class NetworkTest(DockerClientTest): ...@@ -79,7 +79,7 @@ class NetworkTest(DockerClientTest):
self.assertEqual( self.assertEqual(
json.loads(post.call_args[1]['data']), json.loads(post.call_args[1]['data']),
{"name": "foo", "driver": "bridge", "options": opts}) {"Name": "foo", "Driver": "bridge", "Options": opts})
ipam_pool_config = create_ipam_pool(subnet="192.168.52.0/24", ipam_pool_config = create_ipam_pool(subnet="192.168.52.0/24",
gateway="192.168.52.254") gateway="192.168.52.254")
...@@ -91,15 +91,15 @@ class NetworkTest(DockerClientTest): ...@@ -91,15 +91,15 @@ class NetworkTest(DockerClientTest):
self.assertEqual( self.assertEqual(
json.loads(post.call_args[1]['data']), json.loads(post.call_args[1]['data']),
{ {
"name": "bar", "Name": "bar",
"driver": "bridge", "Driver": "bridge",
"ipam": { "IPAM": {
"driver": "default", "Driver": "default",
"config": [{ "Config": [{
"iprange": None, "IPRange": None,
"gateway": "192.168.52.254", "Gateway": "192.168.52.254",
"subnet": "192.168.52.0/24", "Subnet": "192.168.52.0/24",
"auxaddresses": None "AuxiliaryAddresses": None,
}] }]
} }
}) })
......
...@@ -442,12 +442,12 @@ class UtilsTest(base.BaseTestCase): ...@@ -442,12 +442,12 @@ class UtilsTest(base.BaseTestCase):
ipam_config = create_ipam_config(pool_configs=[ipam_pool]) ipam_config = create_ipam_config(pool_configs=[ipam_pool])
self.assertEqual(ipam_config, { self.assertEqual(ipam_config, {
'driver': 'default', 'Driver': 'default',
'config': [{ 'Config': [{
'subnet': '192.168.52.0/24', 'Subnet': '192.168.52.0/24',
'gateway': '192.168.52.254', 'Gateway': '192.168.52.254',
'auxaddresses': None, 'AuxiliaryAddresses': None,
'iprange': None 'IPRange': None,
}] }]
}) })
......
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