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