48 lines
1.2 KiB
Python
Raw Permalink Normal View History

import docker
import pytest
from fixtures import dev, types
from fixtures.logger import setup_logger
logger = setup_logger(__name__)
@pytest.fixture(name="network", scope="package")
def network(
request: pytest.FixtureRequest, pytestconfig: pytest.Config
) -> types.Network:
"""
Package-Scoped fixture for creating a network
"""
def create() -> types.Network:
nw = types.Network()
nw.create()
return nw
def delete(nw: types.Network):
client = docker.from_env()
try:
client.networks.get(network_id=nw.id).remove()
except docker.errors.NotFound:
logger.info(
"Skipping removal of Network, Network(%s) not found. Maybe it was manually removed?",
{"name": nw.name, "id": nw.id},
)
def restore(existing: dict) -> types.Network:
nw = types.Network()
nw.id = existing.get("id")
nw.name = existing.get("name")
return nw
return dev.wrap(
request,
pytestconfig,
"network",
lambda: types.Network(), # pylint: disable=unnecessary-lambda
create,
delete,
restore,
)