from quantum import manager
from quantum import quota
+
RESOURCE_NAME = "network-gateway"
COLLECTION_NAME = "%ss" % RESOURCE_NAME
EXT_ALIAS = RESOURCE_NAME
return msg
try:
for device in data:
+ key_specs = {DEVICE_ID_ATTR:
+ {'type:regex': attributes.UUID_PATTERN,
+ 'required': True},
+ IFACE_NAME_ATTR:
+ {'type:string': None,
+ 'required': False}}
err_msg = attributes._validate_dict(
- device,
- key_specs={DEVICE_ID_ATTR:
- {'type:regex': attributes.UUID_PATTERN,
- 'required': True},
- IFACE_NAME_ATTR:
- {'type:string': None,
- 'required': False}})
+ device, key_specs=key_specs)
if err_msg:
return err_msg
+ unexpected_keys = [key for key in device if key not in key_specs]
+ if unexpected_keys:
+ err_msg = ("Unexpected keys found in device description:%s",
+ ",".join(unexpected_keys))
+ return err_msg
except TypeError:
return (_("%s: provided data are not iterable") %
_validate_device_list.__name__)
nw_gw = res.json[self._resource]
self.assertEqual(nw_gw['id'], nw_gw_id)
+ def _test_network_gateway_create_with_error(
+ self, data, error_code=exc.HTTPBadRequest.code):
+ res = self.api.post_json(_get_path(networkgw.COLLECTION_NAME), data,
+ expect_errors=True)
+ self.assertEqual(res.status_int, error_code)
+
+ def test_network_gateway_create_invalid_device_spec(self):
+ data = {self._resource: {'name': 'nw-gw',
+ 'tenant_id': _uuid(),
+ 'devices': [{'id': _uuid(),
+ 'invalid': 'xxx'}]}}
+ self._test_network_gateway_create_with_error(data)
+
+ def test_network_gateway_create_extra_attr_in_device_spec(self):
+ data = {self._resource: {'name': 'nw-gw',
+ 'tenant_id': _uuid(),
+ 'devices': [{'id': _uuid(),
+ 'interface_name': 'xxx',
+ 'extra_attr': 'onetoomany'}]}}
+ self._test_network_gateway_create_with_error(data)
+
def test_network_gateway_update(self):
nw_gw_name = 'updated'
data = {self._resource: {'name': nw_gw_name}}