diff --git a/salt/modules/virt.py b/salt/modules/virt.py index d3e7666b8232..bbaa8bf8ce38 100644 --- a/salt/modules/virt.py +++ b/salt/modules/virt.py @@ -4584,6 +4584,30 @@ def _net_get_leases(net): return result +def network_get_xml(name, **kwargs): + ''' + Return the XML definition of a virtual network + + :param name: libvirt network name + :param connection: libvirt connection URI, overriding defaults + :param username: username to connect with, overriding defaults + :param password: password to connect with, overriding defaults + + .. versionadded:: Neon + + CLI Example: + + .. code-block:: bash + + salt '*' virt.network_get_xml default + ''' + conn = __get_conn(**kwargs) + try: + return conn.networkLookupByName(name).XMLDesc() + finally: + conn.close() + + def network_start(name, **kwargs): ''' Start a defined virtual network. diff --git a/tests/unit/modules/test_virt.py b/tests/unit/modules/test_virt.py index 6f472c656cd6..95b691182ee6 100644 --- a/tests/unit/modules/test_virt.py +++ b/tests/unit/modules/test_virt.py @@ -2348,6 +2348,16 @@ def test_network_info_notfound(self): net = virt.network_info('foo') self.assertEqual({}, net) + def test_network_get_xml(self): + ''' + Test virt.network_get_xml + ''' + network_mock = MagicMock() + network_mock.XMLDesc.return_value = 'Raw XML' + self.mock_conn.networkLookupByName.return_value = network_mock + + self.assertEqual('Raw XML', virt.network_get_xml('default')) + def test_pool(self): ''' Test virt._gen_pool_xml()