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
|
||||
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 wsgi
|
||||
from nova.api.openstack import xmlutil
|
||||
@@ -31,7 +31,8 @@ def make_network(elem):
|
||||
ip = xmlutil.SubTemplateElement(elem, 'ip', selector=1)
|
||||
ip.set('version')
|
||||
ip.set('addr')
|
||||
|
||||
ip.set('type')
|
||||
ip.set('mac_addr')
|
||||
|
||||
network_nsmap = {None: xmlutil.XMLNS_V11}
|
||||
|
||||
@@ -56,7 +57,7 @@ class AddressesTemplate(xmlutil.TemplateBuilder):
|
||||
class IPsController(wsgi.Controller):
|
||||
"""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):
|
||||
super(IPsController, self).__init__(**kwargs)
|
||||
|
||||
@@ -24,7 +24,7 @@ import webob
|
||||
from webob import exc
|
||||
|
||||
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 import extensions
|
||||
from nova.api.openstack import wsgi
|
||||
@@ -436,7 +436,7 @@ class ServersController(wsgi.Controller):
|
||||
EXTENSION_CREATE_NAMESPACE = 'nova.api.v3.extensions.server.create'
|
||||
EXTENSION_DESERIALIZE_EXTRACT_SERVER_NAMESPACE = (
|
||||
'nova.api.v3.extensions.server.create.deserialize')
|
||||
_view_builder_class = views_servers.ViewBuilder
|
||||
_view_builder_class = views_servers.ViewBuilderV3
|
||||
|
||||
@staticmethod
|
||||
def _add_location(robj):
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
<element name="ip">
|
||||
<attribute name="version"> <text/> </attribute>
|
||||
<attribute name="addr"> <text/> </attribute>
|
||||
<attribute name="type"> <text/> </attribute>
|
||||
<attribute name="mac_addr"> <text/> </attribute>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
|
||||
@@ -40,19 +40,9 @@
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
<element name="addresses">
|
||||
<zeroOrMore>
|
||||
<element name="network">
|
||||
<attribute name="id"> <text/> </attribute>
|
||||
<zeroOrMore>
|
||||
<element name="ip">
|
||||
<attribute name="version"> <text/> </attribute>
|
||||
<attribute name="addr"> <text/> </attribute>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
</zeroOrMore>
|
||||
</element>
|
||||
<oneOrMore>
|
||||
<externalRef href="addresses.rng"/>
|
||||
</oneOrMore>
|
||||
<zeroOrMore>
|
||||
<externalRef href="../atom-link.rng"/>
|
||||
</zeroOrMore>
|
||||
|
||||
@@ -44,3 +44,15 @@ class ViewBuilder(common.ViewBuilder):
|
||||
network_dict = self.show(network, label)
|
||||
addresses[label] = network_dict[label]
|
||||
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"]
|
||||
|
||||
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": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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": {
|
||||
@@ -374,8 +376,10 @@ class ServersControllerTest(test.TestCase):
|
||||
},
|
||||
"addresses": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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": {
|
||||
@@ -443,8 +447,10 @@ class ServersControllerTest(test.TestCase):
|
||||
},
|
||||
"addresses": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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": {
|
||||
@@ -503,14 +509,20 @@ class ServersControllerTest(test.TestCase):
|
||||
expected = {
|
||||
'addresses': {
|
||||
'private': [
|
||||
{'version': 4, 'addr': '192.168.0.3'},
|
||||
{'version': 4, 'addr': '192.168.0.4'},
|
||||
{'version': 4, 'addr': '192.168.0.3',
|
||||
'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': [
|
||||
{'version': 4, 'addr': '172.19.0.1'},
|
||||
{'version': 4, 'addr': '172.19.0.2'},
|
||||
{'version': 4, 'addr': '1.2.3.4'},
|
||||
{'version': 6, 'addr': 'b33f::fdee:ddff:fecc:bbaa'},
|
||||
{'version': 4, 'addr': '172.19.0.1',
|
||||
'type': 'fixed', 'mac_addr': 'aa:aa:aa:aa:aa:aa'},
|
||||
{'version': 4, 'addr': '172.19.0.2',
|
||||
'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):
|
||||
fixture = {
|
||||
'network_2': [
|
||||
{'addr': '192.168.0.1', 'version': 4},
|
||||
{'addr': 'fe80::beef', 'version': 6},
|
||||
{'addr': '192.168.0.1', 'version': 4,
|
||||
'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)
|
||||
@@ -3990,8 +4004,10 @@ class TestAddressesXMLSerialization(test.TestCase):
|
||||
def test_show(self):
|
||||
fixture = {
|
||||
'network_2': [
|
||||
{'addr': '192.168.0.1', 'version': 4},
|
||||
{'addr': 'fe80::beef', 'version': 6},
|
||||
{'addr': '192.168.0.1', 'version': 4,
|
||||
'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)
|
||||
@@ -4005,23 +4021,31 @@ class TestAddressesXMLSerialization(test.TestCase):
|
||||
str(ip['version']))
|
||||
self.assertEqual(str(ip_elem.get('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):
|
||||
fixture = {
|
||||
'addresses': {
|
||||
'network_1': [
|
||||
{'addr': '192.168.0.3', 'version': 4},
|
||||
{'addr': '192.168.0.5', 'version': 4},
|
||||
{'addr': '192.168.0.3', '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': [
|
||||
{'addr': '192.168.0.1', 'version': 4},
|
||||
{'addr': 'fe80::beef', 'version': 6},
|
||||
{'addr': '192.168.0.1', 'version': 4,
|
||||
'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)
|
||||
root = etree.XML(output)
|
||||
xmlutil.validate_schema(root, 'addresses')
|
||||
xmlutil.validate_schema(root, 'addresses', version='v3')
|
||||
addresses_dict = fixture['addresses']
|
||||
network_elems = root.findall('{0}network'.format(NS))
|
||||
self.assertEqual(len(network_elems), 2)
|
||||
@@ -4035,6 +4059,10 @@ class TestAddressesXMLSerialization(test.TestCase):
|
||||
str(ip['version']))
|
||||
self.assertEqual(str(ip_elem.get('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):
|
||||
@@ -4068,7 +4096,7 @@ class ServersViewBuilderTest(test.TestCase):
|
||||
floaters)
|
||||
|
||||
self.uuid = self.instance['uuid']
|
||||
self.view_builder = views.servers.ViewBuilder()
|
||||
self.view_builder = views.servers.ViewBuilderV3()
|
||||
self.request = fakes.HTTPRequestV3.blank("")
|
||||
|
||||
def test_get_flavor_valid_instance_type(self):
|
||||
@@ -4162,8 +4190,10 @@ class ServersViewBuilderTest(test.TestCase):
|
||||
},
|
||||
"addresses": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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": {},
|
||||
@@ -4234,8 +4264,10 @@ class ServersViewBuilderTest(test.TestCase):
|
||||
},
|
||||
"addresses": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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": {},
|
||||
@@ -4380,8 +4412,10 @@ class ServersViewBuilderTest(test.TestCase):
|
||||
},
|
||||
"addresses": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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": {},
|
||||
@@ -4440,8 +4474,10 @@ class ServersViewBuilderTest(test.TestCase):
|
||||
},
|
||||
"addresses": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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": {},
|
||||
@@ -4502,8 +4538,10 @@ class ServersViewBuilderTest(test.TestCase):
|
||||
},
|
||||
"addresses": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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": {},
|
||||
@@ -4568,8 +4606,10 @@ class ServersViewBuilderTest(test.TestCase):
|
||||
},
|
||||
"addresses": {
|
||||
'test1': [
|
||||
{'version': 4, 'addr': '192.168.1.100'},
|
||||
{'version': 6, 'addr': '2001:db8:0:1::1'}
|
||||
{'version': 4, 'addr': '192.168.1.100',
|
||||
'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"},
|
||||
@@ -4638,20 +4678,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"addr": "::babe:67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
],
|
||||
"network_two": [
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.139",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"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,
|
||||
"addr": "67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"addr": "::babe:67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
],
|
||||
"network_two": [
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.139",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"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)
|
||||
root = etree.XML(output)
|
||||
xmlutil.validate_schema(root, 'server')
|
||||
xmlutil.validate_schema(root, 'server', version='v3')
|
||||
|
||||
server_dict = fixture['server']
|
||||
|
||||
@@ -4804,6 +4860,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
str(ip['version']))
|
||||
self.assertEqual(str(ip_elem.get('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):
|
||||
serializer = servers.FullServerTemplate()
|
||||
@@ -4845,20 +4905,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"addr": "::babe:67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
],
|
||||
"network_two": [
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.139",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"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)
|
||||
root = etree.XML(output)
|
||||
xmlutil.validate_schema(root, 'server')
|
||||
xmlutil.validate_schema(root, 'server', version='v3')
|
||||
|
||||
server_dict = fixture['server']
|
||||
|
||||
@@ -4934,6 +5002,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
str(ip['version']))
|
||||
self.assertEqual(str(ip_elem.get('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):
|
||||
serializer = servers.MinimalServersTemplate()
|
||||
@@ -4977,7 +5049,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
|
||||
output = serializer.serialize(fixture)
|
||||
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))
|
||||
self.assertEqual(len(server_elems), 2)
|
||||
for i, server_elem in enumerate(server_elems):
|
||||
@@ -5040,7 +5112,7 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
|
||||
output = serializer.serialize(fixture)
|
||||
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))
|
||||
self.assertEqual(len(server_elems), 2)
|
||||
for i, server_elem in enumerate(server_elems):
|
||||
@@ -5108,10 +5180,16 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"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,
|
||||
"addr": "67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"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)
|
||||
root = etree.XML(output)
|
||||
xmlutil.validate_schema(root, 'servers')
|
||||
xmlutil.validate_schema(root, 'servers', version='v3')
|
||||
server_elems = root.findall('{0}server'.format(NS))
|
||||
self.assertEqual(len(server_elems), 2)
|
||||
for i, server_elem in enumerate(server_elems):
|
||||
@@ -5244,6 +5328,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
str(ip['version']))
|
||||
self.assertEqual(str(ip_elem.get('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):
|
||||
serializer = servers.ServerTemplate()
|
||||
@@ -5284,20 +5372,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"addr": "::babe:67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
],
|
||||
"network_two": [
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.139",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"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)
|
||||
root = etree.XML(output)
|
||||
xmlutil.validate_schema(root, 'server')
|
||||
xmlutil.validate_schema(root, 'server', version='v3')
|
||||
|
||||
server_dict = fixture['server']
|
||||
|
||||
@@ -5379,6 +5475,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
str(ip['version']))
|
||||
self.assertEqual(str(ip_elem.get('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_dict = server_dict['fault']
|
||||
@@ -5429,20 +5529,28 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"addr": "::babe:67.23.10.138",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
],
|
||||
"network_two": [
|
||||
{
|
||||
"version": 4,
|
||||
"addr": "67.23.10.139",
|
||||
"type": "fixed",
|
||||
"mac_addr": "aa:aa:aa:aa:aa:aa"
|
||||
},
|
||||
{
|
||||
"version": 6,
|
||||
"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)
|
||||
root = etree.XML(output)
|
||||
xmlutil.validate_schema(root, 'server')
|
||||
xmlutil.validate_schema(root, 'server', version='v3')
|
||||
|
||||
server_dict = fixture['server']
|
||||
|
||||
@@ -5518,6 +5626,10 @@ class ServerXMLSerializationTest(test.TestCase):
|
||||
str(ip['version']))
|
||||
self.assertEqual(str(ip_elem.get('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):
|
||||
|
||||
Reference in New Issue
Block a user