1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00
community.general/test/units/modules/cloud/misc/virt_net/conftest.py
Gonéri Le Bouder fc3064471b virt_net: idempotency of create/stop actions (#53276)
Currently, if we try to stop or start a network two time in a row, the
second call will fail. With this patch:

- we don't recreate a network, if it exists
- we only stop a network if it's active, and so we avoid an exception
  saying the network is not active

* test: mock libvirt

* add integration tests for virt_net

* test: enable virt_net test on RedHat 7 and 8

* ci: use the unsupported alias

* tests that require privileged mode are run in VM

* virt_net/create raise unexpected libvirt exception

* import mock from units.compat

* virt_net: do not call create() on "active" network

* virt_net func test: only clean up the libvirt packages

* test: virt_net: don't use assert_called()

* virt_net: add the destructive alias

* move the test in virt_net dir

* test/virt_net: clean up the network at the end
2019-03-28 21:42:35 +05:30

69 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
#
# Copyright: (c) 2019, Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
import pytest
from ansible.modules.cloud.misc import virt_net
from units.compat import mock
virt_net.libvirt = None
virt_net.HAS_VIRT = True
class DummyNetwork():
def __init__(self, name, isActive=True):
self._name = name
self._isActive = isActive
def name(self):
return self._name
def isActive(self):
return self._isActive
class DummyLibvirtConn():
def __init__(self):
self._network = [
DummyNetwork("inactive_net", isActive=False),
DummyNetwork("active_net", isActive=True)]
def listNetworks(self):
return [i.name() for i in self._network]
def networkLookupByName(self, name):
for i in self._network:
if i.name() == name:
return i
def listDefinedNetworks(self):
return []
class DummyLibvirt():
VIR_ERR_NETWORK_EXIST = 'VIR_ERR_NETWORK_EXIST'
@classmethod
def open(cls, uri):
return DummyLibvirtConn()
class libvirtError(Exception):
def __init__(self):
self.error_code
def get_error_code(self):
return self.error_code
@pytest.fixture
def dummy_libvirt(monkeypatch):
monkeypatch.setattr(virt_net, 'libvirt', DummyLibvirt)
return DummyLibvirt
@pytest.fixture
def virt_net_obj(dummy_libvirt):
return virt_net.VirtNetwork('qemu:///nowhere', mock.MagicMock())