コード例 #1
0
 def test_netdev_info_iproute_down(self, m_subp, m_which, resource,
                                   is_json):
     """Test netdev_info with ip and down interfaces."""
     m_subp.return_value = (readResource(resource), "")
     if not is_json:
         m_subp.side_effect = [
             subp.ProcessExecutionError,
             (readResource(resource), ""),
         ]
     m_which.side_effect = lambda x: x if x == "ip" else None
     assert netdev_info(".") == {
         "lo": {
             "ipv4": [{
                 "ip": "127.0.0.1",
                 "bcast": ".",
                 "mask": "255.0.0.0",
                 "scope": "host",
             }],
             "ipv6": [{
                 "ip": "::1/128",
                 "scope6": "host"
             }],
             "hwaddr":
             ".",
             "up":
             True,
         },
         "eth0": {
             "ipv4": [],
             "ipv6": [],
             "hwaddr": "00:16:3e:de:51:a6",
             "up": False,
         },
     }
コード例 #2
0
 def test_netdev_info_nettools_down(self, m_subp, m_which):
     """test netdev_info using nettools and down interfaces."""
     m_subp.return_value = (
         readResource("netinfo/new-ifconfig-output-down"),
         "",
     )
     m_which.side_effect = lambda x: x if x == "ifconfig" else None
     assert netdev_info(".") == {
         "eth0": {
             "ipv4": [],
             "ipv6": [],
             "hwaddr": "00:16:3e:de:51:a6",
             "up": False,
         },
         "lo": {
             "ipv4": [{
                 "ip": "127.0.0.1",
                 "mask": "255.0.0.0"
             }],
             "ipv6": [{
                 "ip": "::1/128",
                 "scope6": "host"
             }],
             "hwaddr": ".",
             "up": True,
         },
     }
コード例 #3
0
 def test_netdev_pformat_with_down(self, m_netdev_info):
     """test netdev_pformat when netdev_info returns 'down' interfaces."""
     m_netdev_info.return_value = {
         "lo": {
             "ipv4": [{
                 "ip": "127.0.0.1",
                 "mask": "255.0.0.0",
                 "scope": "host"
             }],
             "ipv6": [{
                 "ip": "::1/128",
                 "scope6": "host"
             }],
             "hwaddr": ".",
             "up": True,
         },
         "eth0": {
             "ipv4": [],
             "ipv6": [],
             "hwaddr": "00:16:3e:de:51:a6",
             "up": False,
         },
     }
     assert (readResource("netinfo/netdev-formatted-output-down") ==
             netdev_pformat())
コード例 #4
0
 def test_netdev_info_nettools_down(self, m_subp, m_which):
     """test netdev_info using nettools and down interfaces."""
     m_subp.return_value = (
         readResource("netinfo/new-ifconfig-output-down"), "")
     m_which.side_effect = lambda x: x if x == 'ifconfig' else None
     self.assertEqual(
         {
             'eth0': {
                 'ipv4': [],
                 'ipv6': [],
                 'hwaddr': '00:16:3e:de:51:a6',
                 'up': False
             },
             'lo': {
                 'ipv4': [{
                     'ip': '127.0.0.1',
                     'mask': '255.0.0.0'
                 }],
                 'ipv6': [{
                     'ip': '::1/128',
                     'scope6': 'host'
                 }],
                 'hwaddr': '.',
                 'up': True
             }
         }, netdev_info("."))
コード例 #5
0
 def test_netdev_info_iproute_down(self, m_subp, m_which):
     """Test netdev_info with ip and down interfaces."""
     m_subp.return_value = (
         readResource("netinfo/sample-ipaddrshow-output-down"), "")
     m_which.side_effect = lambda x: x if x == 'ip' else None
     self.assertEqual(
         {
             'lo': {
                 'ipv4': [{
                     'ip': '127.0.0.1',
                     'bcast': '.',
                     'mask': '255.0.0.0',
                     'scope': 'host'
                 }],
                 'ipv6': [{
                     'ip': '::1/128',
                     'scope6': 'host'
                 }],
                 'hwaddr':
                 '.',
                 'up':
                 True
             },
             'eth0': {
                 'ipv4': [],
                 'ipv6': [],
                 'hwaddr': '00:16:3e:de:51:a6',
                 'up': False
             }
         }, netdev_info("."))
コード例 #6
0
 def test_netdev_pformat_with_down(self, m_netdev_info):
     """test netdev_pformat when netdev_info returns 'down' interfaces."""
     m_netdev_info.return_value = ({
         'lo': {
             'ipv4': [{
                 'ip': '127.0.0.1',
                 'mask': '255.0.0.0',
                 'scope': 'host'
             }],
             'ipv6': [{
                 'ip': '::1/128',
                 'scope6': 'host'
             }],
             'hwaddr': '.',
             'up': True
         },
         'eth0': {
             'ipv4': [],
             'ipv6': [],
             'hwaddr': '00:16:3e:de:51:a6',
             'up': False
         }
     })
     self.assertEqual(readResource("netinfo/netdev-formatted-output-down"),
                      netdev_pformat())
コード例 #7
0
 def testIndexes(self):
     test_data = helpers.readResource('filter_cloud_multipart.yaml')
     ud_proc = ud.UserDataProcessor(self.getCloudPaths())
     message = ud_proc.process(test_data)
     start_count = count_messages(message)
     self.assertTrue(start_count > 0)
     # This file should have the following
     # indexes -> amount mapping in it
     expected_counts = {
         2: 2,
         3: 2,
         1: 2,
         0: 1,
         4: 1,
         7: 0,
         -1: 0,
         100: 0,
         # None should just give all back
         None: start_count,
         # Non ints should be ignored
         'c': start_count,
         # Strings should be converted
         '1': 2,
     }
     self.assertCounts(message, expected_counts)
コード例 #8
0
 def test_netdev_info_iproute_down(self, m_subp, m_which):
     """Test netdev_info with ip and down interfaces."""
     m_subp.return_value = (
         readResource("netinfo/sample-ipaddrshow-output-down"),
         "",
     )
     m_which.side_effect = lambda x: x if x == "ip" else None
     self.assertEqual(
         {
             "lo": {
                 "ipv4": [{
                     "ip": "127.0.0.1",
                     "bcast": ".",
                     "mask": "255.0.0.0",
                     "scope": "host",
                 }],
                 "ipv6": [{
                     "ip": "::1/128",
                     "scope6": "host"
                 }],
                 "hwaddr":
                 ".",
                 "up":
                 True,
             },
             "eth0": {
                 "ipv4": [],
                 "ipv6": [],
                 "hwaddr": "00:16:3e:de:51:a6",
                 "up": False,
             },
         },
         netdev_info("."),
     )
コード例 #9
0
 def testNoneIndex(self):
     test_data = helpers.readResource('filter_cloud_multipart.yaml')
     ud_proc = ud.UserDataProcessor(self.getCloudPaths())
     message = ud_proc.process(test_data)
     start_count = count_messages(message)
     self.assertTrue(start_count > 0)
     filtered_message = launch_index.Filter(None).apply(message)
     self.assertTrue(self.equivalentMessage(message, filtered_message))
コード例 #10
0
 def testConfigEmailIndex(self):
     test_data = helpers.readResource('filter_cloud_multipart_1.email')
     ud_proc = ud.UserDataProcessor(self.getCloudPaths())
     message = ud_proc.process(test_data)
     self.assertTrue(count_messages(message) > 0)
     # This file should have the following
     # indexes -> amount mapping in it
     expected_counts = {
         2: 1,
         -1: 0,
         None: 1,
     }
     self.assertCounts(message, expected_counts)
コード例 #11
0
    def test_none_ds(self):
        new_root = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, new_root)
        self.replicateTestRoot("simple_ubuntu", new_root)
        cfg = {
            "datasource_list": ["None"],
            "cloud_init_modules": ["write-files"],
            "system_info": {
                "paths": {
                    "run_dir": new_root
                }
            },
        }
        ud = helpers.readResource("user_data.1.txt")
        cloud_cfg = safeyaml.dumps(cfg)
        util.ensure_dir(os.path.join(new_root, "etc", "cloud"))
        util.write_file(os.path.join(new_root, "etc", "cloud", "cloud.cfg"),
                        cloud_cfg)
        self._patchIn(new_root)

        # Now start verifying whats created
        initer = stages.Init()
        initer.read_cfg()
        initer.initialize()
        initer.fetch()
        initer.datasource.userdata_raw = ud
        initer.instancify()
        initer.update()
        initer.cloudify().run(
            "consume_data",
            initer.consume_data,
            args=[PER_INSTANCE],
            freq=PER_INSTANCE,
        )
        mirrors = initer.distro.get_option("package_mirrors")
        self.assertEqual(1, len(mirrors))
        mirror = mirrors[0]
        self.assertEqual(mirror["arches"], ["i386", "amd64", "blah"])
        mods = stages.Modules(initer)
        (which_ran, failures) = mods.run_section("cloud_init_modules")
        self.assertTrue(len(failures) == 0)
        self.assertTrue(os.path.exists("/etc/blah.ini"))
        self.assertIn("write-files", which_ran)
        contents = util.load_file("/etc/blah.ini")
        self.assertEqual(contents, "blah")
コード例 #12
0
    def test_none_ds(self):
        new_root = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, new_root)
        self.replicateTestRoot('simple_ubuntu', new_root)
        cfg = {
            'datasource_list': ['None'],
            'cloud_init_modules': ['write-files'],
            'system_info': {'paths': {'run_dir': new_root}}
        }
        ud = helpers.readResource('user_data.1.txt')
        cloud_cfg = safeyaml.dumps(cfg)
        util.ensure_dir(os.path.join(new_root, 'etc', 'cloud'))
        util.write_file(os.path.join(new_root, 'etc',
                                     'cloud', 'cloud.cfg'), cloud_cfg)
        self._patchIn(new_root)

        # Now start verifying whats created
        initer = stages.Init()
        initer.read_cfg()
        initer.initialize()
        initer.fetch()
        initer.datasource.userdata_raw = ud
        initer.instancify()
        initer.update()
        initer.cloudify().run('consume_data',
                              initer.consume_data,
                              args=[PER_INSTANCE],
                              freq=PER_INSTANCE)
        mirrors = initer.distro.get_option('package_mirrors')
        self.assertEqual(1, len(mirrors))
        mirror = mirrors[0]
        self.assertEqual(mirror['arches'], ['i386', 'amd64', 'blah'])
        mods = stages.Modules(initer)
        (which_ran, failures) = mods.run_section('cloud_init_modules')
        self.assertTrue(len(failures) == 0)
        self.assertTrue(os.path.exists('/etc/blah.ini'))
        self.assertIn('write-files', which_ran)
        contents = util.load_file('/etc/blah.ini')
        self.assertEqual(contents, 'blah')
コード例 #13
0
import json
from copy import copy

import pytest

from cloudinit import subp
from cloudinit.netinfo import (
    _netdev_info_iproute_json,
    netdev_info,
    netdev_pformat,
    route_pformat,
)
from tests.unittests.helpers import mock, readResource

# Example ifconfig and route output
SAMPLE_OLD_IFCONFIG_OUT = readResource("netinfo/old-ifconfig-output")
SAMPLE_NEW_IFCONFIG_OUT = readResource("netinfo/new-ifconfig-output")
SAMPLE_FREEBSD_IFCONFIG_OUT = readResource("netinfo/freebsd-ifconfig-output")
SAMPLE_IPADDRSHOW_OUT = readResource("netinfo/sample-ipaddrshow-output")
SAMPLE_IPADDRSHOW_JSON = readResource("netinfo/sample-ipaddrshow-json")
SAMPLE_ROUTE_OUT_V4 = readResource("netinfo/sample-route-output-v4")
SAMPLE_ROUTE_OUT_V6 = readResource("netinfo/sample-route-output-v6")
SAMPLE_IPROUTE_OUT_V4 = readResource("netinfo/sample-iproute-output-v4")
SAMPLE_IPROUTE_OUT_V6 = readResource("netinfo/sample-iproute-output-v6")
NETDEV_FORMATTED_OUT = readResource("netinfo/netdev-formatted-output")
ROUTE_FORMATTED_OUT = readResource("netinfo/route-formatted-output")
FREEBSD_NETDEV_OUT = readResource("netinfo/freebsd-netdev-formatted-output")


class TestNetInfo:
    @mock.patch("cloudinit.netinfo.subp.which")
コード例 #14
0
import os

import cloudinit.net
import cloudinit.net.network_state
from cloudinit import safeyaml
from tests.unittests.helpers import (CiTestCase, mock, readResource, dir2dict)

SAMPLE_FREEBSD_IFCONFIG_OUT = readResource("netinfo/freebsd-ifconfig-output")
V1 = """
config:
-   id: eno1
    mac_address: 08:94:ef:51:ae:e0
    mtu: 1470
    name: eno1
    subnets:
    -   address: 172.20.80.129/25
        type: static
    type: physical
version: 1
"""


class TestInterfacesByMac(CiTestCase):
    @mock.patch('cloudinit.subp.subp')
    @mock.patch('cloudinit.util.is_FreeBSD')
    def test_get_interfaces_by_mac(self, mock_is_FreeBSD, mock_subp):
        mock_is_FreeBSD.return_value = True
        mock_subp.return_value = (SAMPLE_FREEBSD_IFCONFIG_OUT, 0)
        a = cloudinit.net.get_interfaces_by_mac()
        assert a == {
            '52:54:00:50:b7:0d': 'vtnet0',