summaryrefslogtreecommitdiff
path: root/tests/unittests/test_net.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2016-03-24 11:19:41 -0400
committerScott Moser <smoser@ubuntu.com>2016-03-24 11:19:41 -0400
commitf9cae62c2f70c582a6b12a98911dc82180881364 (patch)
tree06e98b536bb6bb371be8695d148285e53a1bd224 /tests/unittests/test_net.py
parent740facb79c70cd8e3380e08acb4f5c5a285bb1ae (diff)
downloadvyos-cloud-init-f9cae62c2f70c582a6b12a98911dc82180881364.tar.gz
vyos-cloud-init-f9cae62c2f70c582a6b12a98911dc82180881364.zip
add suport for base64 encoded gzipped text on command line
add tests to show this functional.
Diffstat (limited to 'tests/unittests/test_net.py')
-rw-r--r--tests/unittests/test_net.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
index 11c0b1eb..16c44588 100644
--- a/tests/unittests/test_net.py
+++ b/tests/unittests/test_net.py
@@ -1,7 +1,12 @@
from cloudinit import util
from cloudinit import net
from .helpers import TestCase
+
+import base64
import copy
+import io
+import gzip
+import json
import os
DHCP_CONTENT_1 = """
@@ -62,6 +67,11 @@ STATIC_EXPECTED_1 = {
class TestNetConfigParsing(TestCase):
+ simple_cfg = {
+ 'config': [{"type": "physical", "name": "eth0",
+ "mac_address": "c0:d6:9f:2c:e8:80",
+ "subnets": [{"type": "dhcp4"}]}]}
+
def test_klibc_convert_dhcp(self):
found = net._klibc_to_config_entry(DHCP_CONTENT_1)
self.assertEqual(found, ('eth0', DHCP_EXPECTED_1))
@@ -93,3 +103,25 @@ class TestNetConfigParsing(TestCase):
found = net.config_from_klibc_net_cfg(files=files, mac_addrs=macs)
self.assertEqual(found, expected)
+
+ def test_cmdline_with_b64(self):
+ data = base64.b64encode(json.dumps(self.simple_cfg).encode())
+ encoded_text = data.decode()
+ cmdline = 'ro network-config=' + encoded_text + ' root=foo'
+ found = net.read_kernel_cmdline_config(cmdline=cmdline)
+ self.assertEqual(found, self.simple_cfg)
+
+ def test_cmdline_with_b64_gz(self):
+ data = _gzip_data(json.dumps(self.simple_cfg).encode())
+ encoded_text = base64.b64encode(data).decode()
+ cmdline = 'ro network-config=' + encoded_text + ' root=foo'
+ found = net.read_kernel_cmdline_config(cmdline=cmdline)
+ self.assertEqual(found, self.simple_cfg)
+
+
+def _gzip_data(data):
+ with io.BytesIO() as iobuf:
+ gzfp = gzip.GzipFile(mode="wb", fileobj=iobuf)
+ gzfp.write(data)
+ gzfp.close()
+ return iobuf.getvalue()