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))
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))
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
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
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
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))
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))
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)
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)
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)
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)
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)
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)
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)
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)
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