--- a/pvl/hosts/tests.py Mon Mar 09 23:31:13 2015 +0200
+++ b/pvl/hosts/tests.py Tue Mar 10 00:11:43 2015 +0200
@@ -21,11 +21,23 @@
hosts_include_trace = None,
)
+ def assertHostExtensionEquals(self, host, extension, value):
+ host_extension = host.extensions.get(extension)
+
+ self.assertIsNotNone(host_extension, (host, extension))
+
+ for attr, value in value.iteritems():
+ self.assertEquals(getattr(host_extension, attr), value, (host, extension, value))
+
def assertHostEqual(self, host, host_str, attrs):
self.assertEquals(str(host), host_str)
for attr, value in attrs.iteritems():
- self.assertEquals(getattr(host, attr), value)
+ if attr == 'extensions':
+ for extension, value in value.iteritems():
+ self.assertHostExtensionEquals(host, extension, value)
+ else:
+ self.assertEquals(getattr(host, attr), value)
def assertHostsEqual(self, hosts, expected):
hosts = list(hosts)
@@ -75,18 +87,28 @@
def testApplyHostConfigExtensions(self):
+ @pvl.hosts.host.register_extension
+ class HostLinkTest(pvl.hosts.host.HostExtension):
+ EXTENSION = 'link'
+
+ @classmethod
+ def build(cls, uplink, downlink):
+ obj = cls()
+ obj.uplink = uplink
+ obj.downlink = downlink
+
+ return obj
+
host = config.apply_host('foo', 'test', {
- 'link:50': 'foo@test',
+ 'link:downlink.50': 'foo@test',
'link:uplink.49': 'bar@test',
})
self.assertHostEqual(host, 'foo@test', dict(
- extensions = {
- 'link': {
- '50': 'foo@test',
+ extensions = dict(link={
+ 'downlink': { '50': 'foo@test' },
'uplink': { '49': 'bar@test' },
- },
- },
+ }),
))
def testApplyHostFqdn(self):
@@ -155,7 +177,9 @@
('foo@test', dict(
ip4 = ipaddr.IPAddress('192.0.2.1'),
ethernet = { 'eth0': '00:11:22:33:44:55' },
- boot = { 'next-server': 'boot.lan', 'filename': '/pxelinux.0' },
+ extensions = dict(
+ dhcp = { 'next_server': 'boot.lan', 'filename': '/pxelinux.0' }
+ ),
)),
])