Port ips-extended to API-v3 ips core API Part 2
This includes on ips responses extended ip information: mac address and type, adds V3 version of the views and the tests to also test this information, which affects servers and ips core API. related to bp nova-v3-api Change-Id: I699f6e27b53663f358b63615e7dd0f1627c4730b
This commit is contained in:
@@ -19,7 +19,7 @@ from webob import exc
|
|||||||
|
|
||||||
import nova
|
import nova
|
||||||
from nova.api.openstack import common
|
from nova.api.openstack import common
|
||||||
from nova.api.openstack.compute.views import addresses as view_addresses
|
from nova.api.openstack.compute.views import addresses as views_addresses
|
||||||
from nova.api.openstack import extensions
|
from nova.api.openstack import extensions
|
||||||
from nova.api.openstack import wsgi
|
from nova.api.openstack import wsgi
|
||||||
from nova.api.openstack import xmlutil
|
from nova.api.openstack import xmlutil
|
||||||
@@ -31,7 +31,8 @@ def make_network(elem):
|
|||||||
ip = xmlutil.SubTemplateElement(elem, 'ip', selector=1)
|
ip = xmlutil.SubTemplateElement(elem, 'ip', selector=1)
|
||||||
ip.set('version')
|
ip.set('version')
|
||||||
ip.set('addr')
|
ip.set('addr')
|
||||||
|
ip.set('type')
|
||||||
|
ip.set('mac_addr')
|
||||||
|
|
||||||
network_nsmap = {None: xmlutil.XMLNS_V11}
|
network_nsmap = {None: xmlutil.XMLNS_V11}
|
||||||
|
|
||||||
@@ -56,7 +57,7 @@ class AddressesTemplate(xmlutil.TemplateBuilder):
|
|||||||
class IPsController(wsgi.Controller):
|
class IPsController(wsgi.Controller):
|
||||||
"""The servers addresses API controller for the OpenStack API."""
|
"""The servers addresses API controller for the OpenStack API."""
|
||||||
|
|
||||||
_view_builder_class = view_addresses.ViewBuilder
|
_view_builder_class = views_addresses.ViewBuilderV3
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super(IPsController, self).__init__(**kwargs)
|
super(IPsController, self).__init__(**kwargs)
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import webob
|
|||||||
from webob import exc
|
from webob import exc
|
||||||
|
|
||||||
from nova.api.openstack import common
|
from nova.api.openstack import common
|
||||||
from nova.api.openstack.compute import ips
|
from nova.api.openstack.compute.plugins.v3 import ips
|
||||||
from nova.api.openstack.compute.views import servers as views_servers
|
from nova.api.openstack.compute.views import servers as views_servers
|
||||||
from nova.api.openstack import extensions
|
from nova.api.openstack import extensions
|
||||||
from nova.api.openstack import wsgi
|
from nova.api.openstack import wsgi
|
||||||
@@ -436,7 +436,7 @@ class ServersController(wsgi.Controller):
|
|||||||
EXTENSION_CREATE_NAMESPACE = 'nova.api.v3.extensions.server.create'
|
EXTENSION_CREATE_NAMESPACE = 'nova.api.v3.extensions.server.create'
|
||||||
EXTENSION_DESERIALIZE_EXTRACT_SERVER_NAMESPACE = (
|
EXTENSION_DESERIALIZE_EXTRACT_SERVER_NAMESPACE = (
|
||||||
'nova.api.v3.extensions.server.create.deserialize')
|
'nova.api.v3.extensions.server.create.deserialize')
|
||||||
_view_builder_class = views_servers.ViewBuilder
|
_view_builder_class = views_servers.ViewBuilderV3
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _add_location(robj):
|
def _add_location(robj):
|
||||||
|
|||||||
@@ -7,6 +7,8 @@
|
|||||||
<element name="ip">
|
<element name="ip">
|
||||||
<attribute name="version"> <text/> </attribute>
|
<attribute name="version"> <text/> </attribute>
|
||||||
<attribute name="addr"> <text/> </attribute>
|
<attribute name="addr"> <text/> </attribute>
|
||||||
|
<attribute name="type"> <text/> </attribute>
|
||||||
|
<attribute name="mac_addr"> <text/> </attribute>
|
||||||
</element>
|
</element>
|
||||||
</zeroOrMore>
|
</zeroOrMore>
|
||||||
</element>
|
</element>
|
||||||
|
|||||||
@@ -40,19 +40,9 @@
|
|||||||
</element>
|
</element>
|
||||||
</zeroOrMore>
|
</zeroOrMore>
|
||||||
</element>
|
</element>
|
||||||
<element name="addresses">
|
<oneOrMore>
|
||||||
<zeroOrMore>
|
<externalRef href="addresses.rng"/>
|
||||||
<element name="network">
|
</oneOrMore>
|
||||||
<attribute name="id"> <text/> </attribute>
|
|
||||||
<zeroOrMore>
|
|
||||||
<element name="ip">
|
|
||||||
<attribute name="version"> <text/> </attribute>
|
|
||||||
<attribute name="addr"> <text/> </attribute>
|
|
||||||
</element>
|
|
||||||
</zeroOrMore>
|
|
||||||
</element>
|
|
||||||
</zeroOrMore>
|
|
||||||
</element>
|
|
||||||
<zeroOrMore>
|
<zeroOrMore>
|
||||||
<externalRef href="../atom-link.rng"/>
|
<externalRef href="../atom-link.rng"/>
|
||||||
</zeroOrMore>
|
</zeroOrMore>
|
||||||
|
|||||||
@@ -44,3 +44,15 @@ class ViewBuilder(common.ViewBuilder):
|
|||||||
network_dict = self.show(network, label)
|
network_dict = self.show(network, label)
|
||||||
addresses[label] = network_dict[label]
|
addresses[label] = network_dict[label]
|
||||||
return dict(addresses=addresses)
|
return dict(addresses=addresses)
|
||||||
|
|
||||||
|
|
||||||
|
class ViewBuilderV3(ViewBuilder):
|
||||||
|
"""Models server addresses as a dictionary."""
|
||||||
|
def basic(self, ip):
|
||||||
|
"""Return a dictionary describing an IP address."""
|
||||||
|
return {
|
||||||
|
"version": ip["version"],
|
||||||
|
"addr": ip["address"],
|
||||||
|
"type": ip["type"],
|
||||||
|
"mac_addr": ip['mac_address'],
|
||||||
|
}
|
||||||
|
|||||||
@@ -218,3 +218,11 @@ class ViewBuilder(common.ViewBuilder):
|
|||||||
fault_dict['details'] = fault["details"]
|
fault_dict['details'] = fault["details"]
|
||||||
|
|
||||||
return fault_dict
|
return fault_dict
|
||||||
|
|
||||||
|
|
||||||
|
class ViewBuilderV3(ViewBuilder):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
"""Initialize view builder."""
|
||||||
|
super(ViewBuilderV3, self).__init__()
|
||||||
|
self._address_builder = views_addresses.ViewBuilderV3()
|
||||||
|
|||||||
@@ -308,8 +308,10 @@ class ServersControllerTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {
|
"metadata": {
|
||||||
@@ -374,8 +376,10 @@ class ServersControllerTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {
|
"metadata": {
|
||||||
@@ -443,8 +447,10 @@ class ServersControllerTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {
|
"metadata": {
|
||||||
@@ -503,14 +509,20 @@ class ServersControllerTest(test.TestCase):
|
|||||||
expected = {
|
expected = {
|
||||||
'addresses': {
|
'addresses': {
|
||||||
'private': [
|
'private': [
|
||||||
{'version': 4, 'addr': '192.168.0.3'},
|
{'version': 4, 'addr': '192.168.0.3',
|
||||||
{'version': 4, 'addr': '192.168.0.4'},
|
'type': 'fixed', 'mac_addr': 'bb:bb:bb:bb:bb:bb'},
|
||||||
|
{'version': 4, 'addr': '192.168.0.4',
|
||||||
|
'type': 'fixed', 'mac_addr': 'bb:bb:bb:bb:bb:bb'},
|
||||||
],
|
],
|
||||||
'public': [
|
'public': [
|
||||||
{'version': 4, 'addr': '172.19.0.1'},
|
{'version': 4, 'addr': '172.19.0.1',
|
||||||
{'version': 4, 'addr': '172.19.0.2'},
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
{'version': 4, 'addr': '1.2.3.4'},
|
{'version': 4, 'addr': '172.19.0.2',
|
||||||
{'version': 6, 'addr': 'b33f::fdee:ddff:fecc:bbaa'},
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 4, 'addr': '1.2.3.4',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': 'b33f::fdee:ddff:fecc:bbaa',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -3979,8 +3991,10 @@ class TestAddressesXMLSerialization(test.TestCase):
|
|||||||
def test_xml_declaration(self):
|
def test_xml_declaration(self):
|
||||||
fixture = {
|
fixture = {
|
||||||
'network_2': [
|
'network_2': [
|
||||||
{'addr': '192.168.0.1', 'version': 4},
|
{'addr': '192.168.0.1', 'version': 4,
|
||||||
{'addr': 'fe80::beef', 'version': 6},
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'addr': 'fe80::beef', 'version': 6,
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
output = self.show_serializer.serialize(fixture)
|
output = self.show_serializer.serialize(fixture)
|
||||||
@@ -3990,8 +4004,10 @@ class TestAddressesXMLSerialization(test.TestCase):
|
|||||||
def test_show(self):
|
def test_show(self):
|
||||||
fixture = {
|
fixture = {
|
||||||
'network_2': [
|
'network_2': [
|
||||||
{'addr': '192.168.0.1', 'version': 4},
|
{'addr': '192.168.0.1', 'version': 4,
|
||||||
{'addr': 'fe80::beef', 'version': 6},
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'addr': 'fe80::beef', 'version': 6,
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
output = self.show_serializer.serialize(fixture)
|
output = self.show_serializer.serialize(fixture)
|
||||||
@@ -4005,23 +4021,31 @@ class TestAddressesXMLSerialization(test.TestCase):
|
|||||||
str(ip['version']))
|
str(ip['version']))
|
||||||
self.assertEqual(str(ip_elem.get('addr')),
|
self.assertEqual(str(ip_elem.get('addr')),
|
||||||
str(ip['addr']))
|
str(ip['addr']))
|
||||||
|
self.assertEqual(str(ip_elem.get('type')),
|
||||||
|
str(ip['type']))
|
||||||
|
self.assertEqual(str(ip_elem.get('mac_addr')),
|
||||||
|
str(ip['mac_addr']))
|
||||||
|
|
||||||
def test_index(self):
|
def test_index(self):
|
||||||
fixture = {
|
fixture = {
|
||||||
'addresses': {
|
'addresses': {
|
||||||
'network_1': [
|
'network_1': [
|
||||||
{'addr': '192.168.0.3', 'version': 4},
|
{'addr': '192.168.0.3', 'version': 4,
|
||||||
{'addr': '192.168.0.5', 'version': 4},
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'addr': '192.168.0.5', 'version': 4,
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}
|
||||||
],
|
],
|
||||||
'network_2': [
|
'network_2': [
|
||||||
{'addr': '192.168.0.1', 'version': 4},
|
{'addr': '192.168.0.1', 'version': 4,
|
||||||
{'addr': 'fe80::beef', 'version': 6},
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'addr': 'fe80::beef', 'version': 6,
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
output = self.index_serializer.serialize(fixture)
|
output = self.index_serializer.serialize(fixture)
|
||||||
root = etree.XML(output)
|
root = etree.XML(output)
|
||||||
xmlutil.validate_schema(root, 'addresses')
|
xmlutil.validate_schema(root, 'addresses', version='v3')
|
||||||
addresses_dict = fixture['addresses']
|
addresses_dict = fixture['addresses']
|
||||||
network_elems = root.findall('{0}network'.format(NS))
|
network_elems = root.findall('{0}network'.format(NS))
|
||||||
self.assertEqual(len(network_elems), 2)
|
self.assertEqual(len(network_elems), 2)
|
||||||
@@ -4035,6 +4059,10 @@ class TestAddressesXMLSerialization(test.TestCase):
|
|||||||
str(ip['version']))
|
str(ip['version']))
|
||||||
self.assertEqual(str(ip_elem.get('addr')),
|
self.assertEqual(str(ip_elem.get('addr')),
|
||||||
str(ip['addr']))
|
str(ip['addr']))
|
||||||
|
self.assertEqual(str(ip_elem.get('type')),
|
||||||
|
str(ip['type']))
|
||||||
|
self.assertEqual(str(ip_elem.get('mac_addr')),
|
||||||
|
str(ip['mac_addr']))
|
||||||
|
|
||||||
|
|
||||||
class ServersViewBuilderTest(test.TestCase):
|
class ServersViewBuilderTest(test.TestCase):
|
||||||
@@ -4068,7 +4096,7 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
floaters)
|
floaters)
|
||||||
|
|
||||||
self.uuid = self.instance['uuid']
|
self.uuid = self.instance['uuid']
|
||||||
self.view_builder = views.servers.ViewBuilder()
|
self.view_builder = views.servers.ViewBuilderV3()
|
||||||
self.request = fakes.HTTPRequestV3.blank("")
|
self.request = fakes.HTTPRequestV3.blank("")
|
||||||
|
|
||||||
def test_get_flavor_valid_instance_type(self):
|
def test_get_flavor_valid_instance_type(self):
|
||||||
@@ -4162,8 +4190,10 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -4234,8 +4264,10 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -4380,8 +4412,10 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -4440,8 +4474,10 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -4502,8 +4538,10 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
@@ -4568,8 +4606,10 @@ class ServersViewBuilderTest(test.TestCase):
|
|||||||
},
|
},
|
||||||
"addresses": {
|
"addresses": {
|
||||||
'test1': [
|
'test1': [
|
||||||
{'version': 4, 'addr': '192.168.1.100'},
|
{'version': 4, 'addr': '192.168.1.100',
|
||||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
|
{'version': 6, 'addr': '2001:db8:0:1::1',
|
||||||
|
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"metadata": {"Open": "Stack"},
|
"metadata": {"Open": "Stack"},
|
||||||
@@ -4638,20 +4678,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.138",
|
"addr": "67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.138",
|
"addr": "::babe:67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"network_two": [
|
"network_two": [
|
||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.139",
|
"addr": "67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.139",
|
"addr": "::babe:67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -4715,20 +4763,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.138",
|
"addr": "67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.138",
|
"addr": "::babe:67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"network_two": [
|
"network_two": [
|
||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.139",
|
"addr": "67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.139",
|
"addr": "::babe:67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -4751,7 +4807,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
root = etree.XML(output)
|
root = etree.XML(output)
|
||||||
xmlutil.validate_schema(root, 'server')
|
xmlutil.validate_schema(root, 'server', version='v3')
|
||||||
|
|
||||||
server_dict = fixture['server']
|
server_dict = fixture['server']
|
||||||
|
|
||||||
@@ -4804,6 +4860,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
str(ip['version']))
|
str(ip['version']))
|
||||||
self.assertEqual(str(ip_elem.get('addr')),
|
self.assertEqual(str(ip_elem.get('addr')),
|
||||||
str(ip['addr']))
|
str(ip['addr']))
|
||||||
|
self.assertEqual(str(ip_elem.get('type')),
|
||||||
|
str(ip['type']))
|
||||||
|
self.assertEqual(str(ip_elem.get('mac_addr')),
|
||||||
|
str(ip['mac_addr']))
|
||||||
|
|
||||||
def test_create(self):
|
def test_create(self):
|
||||||
serializer = servers.FullServerTemplate()
|
serializer = servers.FullServerTemplate()
|
||||||
@@ -4845,20 +4905,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.138",
|
"addr": "67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.138",
|
"addr": "::babe:67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"network_two": [
|
"network_two": [
|
||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.139",
|
"addr": "67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.139",
|
"addr": "::babe:67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -4881,7 +4949,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
root = etree.XML(output)
|
root = etree.XML(output)
|
||||||
xmlutil.validate_schema(root, 'server')
|
xmlutil.validate_schema(root, 'server', version='v3')
|
||||||
|
|
||||||
server_dict = fixture['server']
|
server_dict = fixture['server']
|
||||||
|
|
||||||
@@ -4934,6 +5002,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
str(ip['version']))
|
str(ip['version']))
|
||||||
self.assertEqual(str(ip_elem.get('addr')),
|
self.assertEqual(str(ip_elem.get('addr')),
|
||||||
str(ip['addr']))
|
str(ip['addr']))
|
||||||
|
self.assertEqual(str(ip_elem.get('type')),
|
||||||
|
str(ip['type']))
|
||||||
|
self.assertEqual(str(ip_elem.get('mac_addr')),
|
||||||
|
str(ip['mac_addr']))
|
||||||
|
|
||||||
def test_index(self):
|
def test_index(self):
|
||||||
serializer = servers.MinimalServersTemplate()
|
serializer = servers.MinimalServersTemplate()
|
||||||
@@ -4977,7 +5049,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
root = etree.XML(output)
|
root = etree.XML(output)
|
||||||
xmlutil.validate_schema(root, 'servers_index')
|
xmlutil.validate_schema(root, 'servers_index', version='v3')
|
||||||
server_elems = root.findall('{0}server'.format(NS))
|
server_elems = root.findall('{0}server'.format(NS))
|
||||||
self.assertEqual(len(server_elems), 2)
|
self.assertEqual(len(server_elems), 2)
|
||||||
for i, server_elem in enumerate(server_elems):
|
for i, server_elem in enumerate(server_elems):
|
||||||
@@ -5040,7 +5112,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
root = etree.XML(output)
|
root = etree.XML(output)
|
||||||
xmlutil.validate_schema(root, 'servers_index')
|
xmlutil.validate_schema(root, 'servers_index', version='v3')
|
||||||
server_elems = root.findall('{0}server'.format(NS))
|
server_elems = root.findall('{0}server'.format(NS))
|
||||||
self.assertEqual(len(server_elems), 2)
|
self.assertEqual(len(server_elems), 2)
|
||||||
for i, server_elem in enumerate(server_elems):
|
for i, server_elem in enumerate(server_elems):
|
||||||
@@ -5108,10 +5180,16 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.138",
|
"addr": "67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.138",
|
"addr": "::babe:67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -5164,10 +5242,16 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.138",
|
"addr": "67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.138",
|
"addr": "::babe:67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -5189,7 +5273,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
root = etree.XML(output)
|
root = etree.XML(output)
|
||||||
xmlutil.validate_schema(root, 'servers')
|
xmlutil.validate_schema(root, 'servers', version='v3')
|
||||||
server_elems = root.findall('{0}server'.format(NS))
|
server_elems = root.findall('{0}server'.format(NS))
|
||||||
self.assertEqual(len(server_elems), 2)
|
self.assertEqual(len(server_elems), 2)
|
||||||
for i, server_elem in enumerate(server_elems):
|
for i, server_elem in enumerate(server_elems):
|
||||||
@@ -5244,6 +5328,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
str(ip['version']))
|
str(ip['version']))
|
||||||
self.assertEqual(str(ip_elem.get('addr')),
|
self.assertEqual(str(ip_elem.get('addr')),
|
||||||
str(ip['addr']))
|
str(ip['addr']))
|
||||||
|
self.assertEqual(str(ip_elem.get('type')),
|
||||||
|
str(ip['type']))
|
||||||
|
self.assertEqual(str(ip_elem.get('mac_addr')),
|
||||||
|
str(ip['mac_addr']))
|
||||||
|
|
||||||
def test_update(self):
|
def test_update(self):
|
||||||
serializer = servers.ServerTemplate()
|
serializer = servers.ServerTemplate()
|
||||||
@@ -5284,20 +5372,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.138",
|
"addr": "67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.138",
|
"addr": "::babe:67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"network_two": [
|
"network_two": [
|
||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.139",
|
"addr": "67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.139",
|
"addr": "::babe:67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -5326,7 +5422,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
root = etree.XML(output)
|
root = etree.XML(output)
|
||||||
xmlutil.validate_schema(root, 'server')
|
xmlutil.validate_schema(root, 'server', version='v3')
|
||||||
|
|
||||||
server_dict = fixture['server']
|
server_dict = fixture['server']
|
||||||
|
|
||||||
@@ -5379,6 +5475,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
str(ip['version']))
|
str(ip['version']))
|
||||||
self.assertEqual(str(ip_elem.get('addr')),
|
self.assertEqual(str(ip_elem.get('addr')),
|
||||||
str(ip['addr']))
|
str(ip['addr']))
|
||||||
|
self.assertEqual(str(ip_elem.get('type')),
|
||||||
|
str(ip['type']))
|
||||||
|
self.assertEqual(str(ip_elem.get('mac_addr')),
|
||||||
|
str(ip['mac_addr']))
|
||||||
|
|
||||||
fault_root = root.find('{0}fault'.format(NS))
|
fault_root = root.find('{0}fault'.format(NS))
|
||||||
fault_dict = server_dict['fault']
|
fault_dict = server_dict['fault']
|
||||||
@@ -5429,20 +5529,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.138",
|
"addr": "67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.138",
|
"addr": "::babe:67.23.10.138",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"network_two": [
|
"network_two": [
|
||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"addr": "67.23.10.139",
|
"addr": "67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"version": 6,
|
"version": 6,
|
||||||
"addr": "::babe:67.23.10.139",
|
"addr": "::babe:67.23.10.139",
|
||||||
|
"type": "fixed",
|
||||||
|
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@@ -5465,7 +5573,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
|
|
||||||
output = serializer.serialize(fixture)
|
output = serializer.serialize(fixture)
|
||||||
root = etree.XML(output)
|
root = etree.XML(output)
|
||||||
xmlutil.validate_schema(root, 'server')
|
xmlutil.validate_schema(root, 'server', version='v3')
|
||||||
|
|
||||||
server_dict = fixture['server']
|
server_dict = fixture['server']
|
||||||
|
|
||||||
@@ -5518,6 +5626,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
|||||||
str(ip['version']))
|
str(ip['version']))
|
||||||
self.assertEqual(str(ip_elem.get('addr')),
|
self.assertEqual(str(ip_elem.get('addr')),
|
||||||
str(ip['addr']))
|
str(ip['addr']))
|
||||||
|
self.assertEqual(str(ip_elem.get('type')),
|
||||||
|
str(ip['type']))
|
||||||
|
self.assertEqual(str(ip_elem.get('mac_addr')),
|
||||||
|
str(ip['mac_addr']))
|
||||||
|
|
||||||
|
|
||||||
class ServersAllExtensionsTestCase(test.TestCase):
|
class ServersAllExtensionsTestCase(test.TestCase):
|
||||||
|
|||||||
Reference in New Issue
Block a user