Пример #1
0
    def test_network_xml(self):
        """
        Test network xml
        """
        params = {
            "name": "test",
            "forward": {
                "mode": "nat",
                "dev": ""
            },
            "net": "192.168.0.0/255.255.255.0"
        }
        xml = nxml.to_network_xml(**params)
        name = xpath_get_text(xml, "/network/name")[0]
        self.assertEquals(name, params['name'])

        forward_mode = xpath_get_text(xml, "/network/forward/@mode")[0]
        self.assertEquals(forward_mode, params['forward']['mode'])
        forward_dev = xpath_get_text(xml, "/network/forward/@dev")[0]
        self.assertEquals(forward_dev, '')

        address = xpath_get_text(xml, "/network/ip/@address")[0]
        self.assertEquals(address, params["net"].split("/")[0])
        netmask = xpath_get_text(xml, "/network/ip/@netmask")[0]
        self.assertEquals(netmask, params["net"].split("/")[1])

        dhcp_start = xpath_get_text(xml, "/network/ip/dhcp/range/@start")
        self.assertEquals(dhcp_start, [])
        dhcp_end = xpath_get_text(xml, "/network/ip/dhcp/range/@end")
        self.assertEquals(dhcp_end, [])

        # test optional params
        params['forward']['dev'] = "eth0"
        params['dhcp'] = {
            "range": {
                'start': '192.168.0.1',
                'end': '192.168.0.254'
            }
        }
        xml = nxml.to_network_xml(**params)
        forward_dev = xpath_get_text(xml, "/network/forward/@dev")[0]
        self.assertEquals(forward_dev, params['forward']['dev'])

        dhcp_start = xpath_get_text(xml, "/network/ip/dhcp/range/@start")[0]
        self.assertEquals(dhcp_start, params['dhcp']['range']['start'])
        dhcp_end = xpath_get_text(xml, "/network/ip/dhcp/range/@end")[0]
        self.assertEquals(dhcp_end, params['dhcp']['range']['end'])

        # test _get_ip_xml can accepts strings: '192.168.122.0/24',
        # which is same as "192.168.122.0/255.255.255.0"
        params["net"] = "192.168.0.0/24"
        xml = nxml.to_network_xml(**params)
        netmask = xpath_get_text(xml, "/network/ip/@netmask")[0]
        self.assertEquals(netmask,
                          str(ipaddr.IPNetwork(params["net"]).netmask))
Пример #2
0
    def test_network_xml(self):
        """
        Test network xml
        """
        params = {
            'name': 'test',
            'forward': {
                'mode': 'nat',
                'dev': ''
            },
            'net': '192.168.0.0/255.255.255.0',
        }
        xml = nxml.to_network_xml(**params)
        name = xpath_get_text(xml, '/network/name')[0]
        self.assertEqual(name, params['name'])

        forward_mode = xpath_get_text(xml, '/network/forward/@mode')[0]
        self.assertEqual(forward_mode, params['forward']['mode'])
        forward_dev = xpath_get_text(xml, '/network/forward/@dev')[0]
        self.assertEqual(forward_dev, '')

        address = xpath_get_text(xml, '/network/ip/@address')[0]
        self.assertEqual(address, params['net'].split('/')[0])
        netmask = xpath_get_text(xml, '/network/ip/@netmask')[0]
        self.assertEqual(netmask, params['net'].split('/')[1])

        dhcp_start = xpath_get_text(xml, '/network/ip/dhcp/range/@start')
        self.assertEqual(dhcp_start, [])
        dhcp_end = xpath_get_text(xml, '/network/ip/dhcp/range/@end')
        self.assertEqual(dhcp_end, [])

        # test optional params
        params['forward']['dev'] = 'eth0'
        params['dhcp'] = {
            'range': {
                'start': '192.168.0.1',
                'end': '192.168.0.254'
            }
        }
        xml = nxml.to_network_xml(**params)
        forward_dev = xpath_get_text(xml, '/network/forward/@dev')[0]
        self.assertEqual(forward_dev, params['forward']['dev'])

        dhcp_start = xpath_get_text(xml, '/network/ip/dhcp/range/@start')[0]
        self.assertEqual(dhcp_start, params['dhcp']['range']['start'])
        dhcp_end = xpath_get_text(xml, '/network/ip/dhcp/range/@end')[0]
        self.assertEqual(dhcp_end, params['dhcp']['range']['end'])

        # test _get_ip_xml can accepts strings: '192.168.122.0/24',
        # which is same as "192.168.122.0/255.255.255.0"
        params['net'] = '192.168.0.0/24'
        xml = nxml.to_network_xml(**params)
        netmask = xpath_get_text(xml, '/network/ip/@netmask')[0]
        self.assertEqual(netmask, str(ipaddr.IPNetwork(params['net']).netmask))
Пример #3
0
    def create(self, params):
        conn = self.conn.get()
        name = params['name']
        if name in self.get_list():
            raise InvalidOperation("KCHNET0001E", {'name': name})

        # handle connection type
        connection = params["connection"]
        if connection in ['nat', 'isolated']:
            if connection == 'nat':
                params['forward'] = {'mode': 'nat'}

            # set subnet; bridge/macvtap networks do not need subnet
            self._set_network_subnet(params)
        else:
            self._check_network_interface(params)
            if connection == 'macvtap':
                self._set_network_macvtap(params)
            elif connection == 'bridge':
                self._set_network_bridge(params)
            elif connection == 'vepa':
                self._set_network_vepa(params)

        # create network XML
        params['name'] = escape(params['name'])
        xml = to_network_xml(**params)

        try:
            network = conn.networkDefineXML(xml.encode("utf-8"))
            network.setAutostart(params.get('autostart', True))
        except libvirt.libvirtError as e:
            raise OperationFailed("KCHNET0008E",
                                  {'name': name, 'err': e.get_error_message()})

        return name
Пример #4
0
    def create(self, params):
        conn = self.conn.get()
        name = params['name']
        if name in self.get_list():
            raise InvalidOperation("KCHNET0001E", {'name': name})

        connection = params["connection"]
        # set forward mode, isolated do not need forward
        if connection != 'isolated':
            params['forward'] = {'mode': connection}

        # set subnet, bridge network do not need subnet
        if connection in ["nat", 'isolated']:
            self._set_network_subnet(params)

        # only bridge network need bridge(linux bridge) or interface(macvtap)
        if connection == 'bridge':
            self._set_network_bridge(params)

        params['name'] = escape(params['name'])
        xml = to_network_xml(**params)

        try:
            network = conn.networkDefineXML(xml.encode("utf-8"))
            network.setAutostart(True)
        except libvirt.libvirtError as e:
            raise OperationFailed("KCHNET0008E",
                                  {'name': name, 'err': e.get_error_message()})

        return name
Пример #5
0
    def create(self, params):
        conn = self.conn.get()
        name = params['name']
        if name in self.get_list():
            raise InvalidOperation("KCHNET0001E", {'name': name})

        # handle connection type
        connection = params["connection"]
        if connection in ['nat', 'isolated']:
            if connection == 'nat':
                params['forward'] = {'mode': 'nat'}

            # set subnet; bridge/macvtap networks do not need subnet
            self._set_network_subnet(params)
        else:
            self._check_network_interface(params)
            if connection == 'macvtap':
                self._set_network_macvtap(params)
            elif connection == 'bridge':
                self._set_network_bridge(params)
            elif connection == 'vepa':
                self._set_network_vepa(params)

        # create network XML
        params['name'] = escape(params['name'])
        xml = to_network_xml(**params)

        try:
            network = conn.networkDefineXML(xml.encode("utf-8"))
            network.setAutostart(True)
        except libvirt.libvirtError as e:
            raise OperationFailed("KCHNET0008E",
                                  {'name': name, 'err': e.get_error_message()})

        return name
Пример #6
0
    def test_network_xml(self):
        """
        Test network xml
        """
        params = {
            'name': 'test',
            'forward': {'mode': 'nat', 'dev': ''},
            'net': '192.168.0.0/255.255.255.0',
        }
        xml = nxml.to_network_xml(**params)
        name = xpath_get_text(xml, '/network/name')[0]
        self.assertEqual(name, params['name'])

        forward_mode = xpath_get_text(xml, '/network/forward/@mode')[0]
        self.assertEqual(forward_mode, params['forward']['mode'])
        forward_dev = xpath_get_text(xml, '/network/forward/@dev')[0]
        self.assertEqual(forward_dev, '')

        address = xpath_get_text(xml, '/network/ip/@address')[0]
        self.assertEqual(address, params['net'].split('/')[0])
        netmask = xpath_get_text(xml, '/network/ip/@netmask')[0]
        self.assertEqual(netmask, params['net'].split('/')[1])

        dhcp_start = xpath_get_text(xml, '/network/ip/dhcp/range/@start')
        self.assertEqual(dhcp_start, [])
        dhcp_end = xpath_get_text(xml, '/network/ip/dhcp/range/@end')
        self.assertEqual(dhcp_end, [])

        # test optional params
        params['forward']['dev'] = 'eth0'
        params['dhcp'] = {
            'range': {'start': '192.168.0.1', 'end': '192.168.0.254'}}
        xml = nxml.to_network_xml(**params)
        forward_dev = xpath_get_text(xml, '/network/forward/@dev')[0]
        self.assertEqual(forward_dev, params['forward']['dev'])

        dhcp_start = xpath_get_text(xml, '/network/ip/dhcp/range/@start')[0]
        self.assertEqual(dhcp_start, params['dhcp']['range']['start'])
        dhcp_end = xpath_get_text(xml, '/network/ip/dhcp/range/@end')[0]
        self.assertEqual(dhcp_end, params['dhcp']['range']['end'])

        # test _get_ip_xml can accepts strings: '192.168.122.0/24',
        # which is same as "192.168.122.0/255.255.255.0"
        params['net'] = '192.168.0.0/24'
        xml = nxml.to_network_xml(**params)
        netmask = xpath_get_text(xml, '/network/ip/@netmask')[0]
        self.assertEqual(netmask, str(ipaddr.IPNetwork(params['net']).netmask))
Пример #7
0
    def test_network_xml(self):
        """
        Test network xml
        """
        params = {"name": "test",
                  "forward": {"mode": "nat", "dev": ""},
                  "net": "192.168.0.0/255.255.255.0"}
        xml = nxml.to_network_xml(**params)
        name = xpath_get_text(xml, "/network/name")[0]
        self.assertEquals(name, params['name'])

        forward_mode = xpath_get_text(xml, "/network/forward/@mode")[0]
        self.assertEquals(forward_mode, params['forward']['mode'])
        forward_dev = xpath_get_text(xml, "/network/forward/@dev")[0]
        self.assertEquals(forward_dev, '')

        address = xpath_get_text(xml, "/network/ip/@address")[0]
        self.assertEquals(address, params["net"].split("/")[0])
        netmask = xpath_get_text(xml, "/network/ip/@netmask")[0]
        self.assertEquals(netmask, params["net"].split("/")[1])

        dhcp_start = xpath_get_text(xml, "/network/ip/dhcp/range/@start")
        self.assertEquals(dhcp_start, [])
        dhcp_end = xpath_get_text(xml, "/network/ip/dhcp/range/@end")
        self.assertEquals(dhcp_end, [])

        # test optional params
        params['forward']['dev'] = "eth0"
        params['dhcp'] = {"range": {'start': '192.168.0.1',
                                    'end': '192.168.0.254'}}
        xml = nxml.to_network_xml(**params)
        forward_dev = xpath_get_text(xml, "/network/forward/@dev")[0]
        self.assertEquals(forward_dev, params['forward']['dev'])

        dhcp_start = xpath_get_text(xml, "/network/ip/dhcp/range/@start")[0]
        self.assertEquals(dhcp_start, params['dhcp']['range']['start'])
        dhcp_end = xpath_get_text(xml, "/network/ip/dhcp/range/@end")[0]
        self.assertEquals(dhcp_end, params['dhcp']['range']['end'])

        # test _get_ip_xml can accepts strings: '192.168.122.0/24',
        # which is same as "192.168.122.0/255.255.255.0"
        params["net"] = "192.168.0.0/24"
        xml = nxml.to_network_xml(**params)
        netmask = xpath_get_text(xml, "/network/ip/@netmask")[0]
        self.assertEquals(netmask,
                          str(ipaddr.IPNetwork(params["net"]).netmask))
Пример #8
0
    def test_passthrough_network_singledev_xml(self):
        expected_xml = """<network>\
<name>test_passthrough</name>\
<forward mode="passthrough" dev="passthrough_interface">\
<interface dev="passthrough_interface"/>\
</forward>\
</network>"""

        params = {
            'name': 'test_passthrough',
            'forward': {'mode': 'passthrough', 'devs': ['passthrough_interface']},
        }
        xml_str = nxml.to_network_xml(**params)
        self.assertEqual(xml_str, expected_xml)
Пример #9
0
    def test_passthrough_network_singledev_xml(self):
        expected_xml = """<network>\
<name>test_passthrough</name>\
<forward mode="passthrough" dev="passthrough_interface">\
<interface dev="passthrough_interface"/>\
</forward>\
</network>"""

        params = {
            'name': 'test_passthrough',
            'forward': {'mode': 'passthrough', 'devs': ['passthrough_interface']},
        }
        xml_str = nxml.to_network_xml(**params)
        self.assertEqual(xml_str, expected_xml)
Пример #10
0
    def test_passthrough_network_singledev_xml(self):
        expected_xml = """<network>\
<name>test_passthrough</name>\
<forward mode="passthrough" dev="passthrough_interface">\
<interface dev="passthrough_interface"/>\
</forward>\
</network>"""

        params = {
            "name": "test_passthrough",
            "forward": {
                "mode": "passthrough",
                "devs": ["passthrough_interface"]
            }
        }
        xml_str = nxml.to_network_xml(**params)
        self.assertEqual(xml_str, expected_xml)
Пример #11
0
    def test_passthrough_network_singledev_xml(self):
        expected_xml = """<network>\
<name>test_passthrough</name>\
<forward mode="passthrough" dev="passthrough_interface">\
<interface dev="passthrough_interface"/>\
</forward>\
</network>"""

        params = {
            "name": "test_passthrough",
            "forward": {
                "mode": "passthrough",
                "devs": ["passthrough_interface"]
            }
        }
        xml_str = nxml.to_network_xml(**params)
        self.assertEqual(xml_str, expected_xml)
Пример #12
0
    def test_vepa_network_multipledevs_xml(self):
        expected_xml = """<network>\
<name>test_vepa</name>\
<forward mode="vepa" dev="vepa_switch_interface1">\
<interface dev="vepa_switch_interface1"/>\
<interface dev="vepa_switch_interface2"/>\
<interface dev="vepa_switch_interface3"/>\
</forward>\
</network>"""

        params = {
            "name": "test_vepa",
            "forward": {
                "mode":
                "vepa",
                "devs": [
                    "vepa_switch_interface1", "vepa_switch_interface2",
                    "vepa_switch_interface3"
                ]
            }
        }
        xml_str = nxml.to_network_xml(**params)
        self.assertEqual(xml_str, expected_xml)
Пример #13
0
    def test_vepa_network_multipledevs_xml(self):
        expected_xml = """<network>\
<name>test_vepa</name>\
<forward mode="vepa" dev="vepa_switch_interface1">\
<interface dev="vepa_switch_interface1"/>\
<interface dev="vepa_switch_interface2"/>\
<interface dev="vepa_switch_interface3"/>\
</forward>\
</network>"""

        params = {
            'name': 'test_vepa',
            'forward': {
                'mode': 'vepa',
                'devs': [
                    'vepa_switch_interface1',
                    'vepa_switch_interface2',
                    'vepa_switch_interface3',
                ],
            },
        }
        xml_str = nxml.to_network_xml(**params)
        self.assertEqual(xml_str, expected_xml)
Пример #14
0
    def test_vepa_network_multipledevs_xml(self):
        expected_xml = """<network>\
<name>test_vepa</name>\
<forward mode="vepa" dev="vepa_switch_interface1">\
<interface dev="vepa_switch_interface1"/>\
<interface dev="vepa_switch_interface2"/>\
<interface dev="vepa_switch_interface3"/>\
</forward>\
</network>"""

        params = {
            'name': 'test_vepa',
            'forward': {
                'mode': 'vepa',
                'devs': [
                    'vepa_switch_interface1',
                    'vepa_switch_interface2',
                    'vepa_switch_interface3',
                ],
            },
        }
        xml_str = nxml.to_network_xml(**params)
        self.assertEqual(xml_str, expected_xml)
Пример #15
0
    def test_vepa_network_multipledevs_xml(self):
        expected_xml = """<network>\
<name>test_vepa</name>\
<forward mode="vepa" dev="vepa_switch_interface1">\
<interface dev="vepa_switch_interface1"/>\
<interface dev="vepa_switch_interface2"/>\
<interface dev="vepa_switch_interface3"/>\
</forward>\
</network>"""

        params = {
            "name": "test_vepa",
            "forward": {
                "mode": "vepa",
                "devs": [
                    "vepa_switch_interface1",
                    "vepa_switch_interface2",
                    "vepa_switch_interface3"
                ]
            }
        }
        xml_str = nxml.to_network_xml(**params)
        self.assertEqual(xml_str, expected_xml)
Пример #16
0
    def create(self, params):
        conn = self.conn.get()
        name = params['name']
        if name in self.get_list():
            raise InvalidOperation('KCHNET0001E', {'name': name})

        # handle connection type
        connection = params['connection']
        if connection in ['nat', 'isolated']:
            if connection == 'nat':
                params['forward'] = {'mode': 'nat'}

            # set subnet; bridge/macvtap networks do not need subnet
            self._set_network_subnet(params)
        else:
            self._check_network_interface(params)
            if connection == 'macvtap':
                self._set_network_macvtap(params)
            elif connection == 'bridge':
                self._set_network_bridge(params)
            elif connection in ['passthrough', 'vepa']:
                self._set_network_multiple_interfaces(params)

        # create network XML
        xml = to_network_xml(**params)

        try:
            network = conn.networkDefineXML(xml)
            network.setAutostart(params.get('autostart', True))
        except libvirt.libvirtError as e:
            raise OperationFailed('KCHNET0008E', {
                'name': name,
                'err': e.get_error_message()
            })

        return name