Loading behave_utils/docker.py +22 −6 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ from typing import TypeVar from typing import Union from typing import overload from .json import JSONArray from .json import JSONObject from .proc import Argument from .proc import Arguments Loading Loading @@ -375,6 +376,7 @@ class Network(Item): def __init__(self, name: str|None = None) -> None: self._name = name or f"br{token_hex(6)}" self._nid: str|None = None def __str__(self) -> str: return self._name Loading Loading @@ -409,7 +411,10 @@ class Network(Item): """ Return an identifier for the Docker Network """ return self._name if self._nid is None: self.create() assert self._nid is not None return self._nid def create(self) -> None: """ Loading @@ -417,16 +422,27 @@ class Network(Item): """ subnet = self.get_free_subnet() gateway = next(subnet.hosts()) docker_quiet( try: self._nid = docker_output( "network", "create", self._name, f"--subnet={subnet}", f"--gateway={gateway}", ) except CalledProcessError: data = exec_io( [DOCKER, "network", "inspect", self._name], deserialiser=JSONArray.from_string, ) if len(data) == 0: raise self._nid = data.path("$[0].Id", str) assert self._nid is not None def destroy(self) -> None: """ Remove the network """ docker_quiet("network", "rm", self._name) if self._nid: docker_quiet("network", "rm", self._nid) @classmethod def get_free_subnet(cls) -> ipaddress.IPv4Network: Loading Loading
behave_utils/docker.py +22 −6 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ from typing import TypeVar from typing import Union from typing import overload from .json import JSONArray from .json import JSONObject from .proc import Argument from .proc import Arguments Loading Loading @@ -375,6 +376,7 @@ class Network(Item): def __init__(self, name: str|None = None) -> None: self._name = name or f"br{token_hex(6)}" self._nid: str|None = None def __str__(self) -> str: return self._name Loading Loading @@ -409,7 +411,10 @@ class Network(Item): """ Return an identifier for the Docker Network """ return self._name if self._nid is None: self.create() assert self._nid is not None return self._nid def create(self) -> None: """ Loading @@ -417,16 +422,27 @@ class Network(Item): """ subnet = self.get_free_subnet() gateway = next(subnet.hosts()) docker_quiet( try: self._nid = docker_output( "network", "create", self._name, f"--subnet={subnet}", f"--gateway={gateway}", ) except CalledProcessError: data = exec_io( [DOCKER, "network", "inspect", self._name], deserialiser=JSONArray.from_string, ) if len(data) == 0: raise self._nid = data.path("$[0].Id", str) assert self._nid is not None def destroy(self) -> None: """ Remove the network """ docker_quiet("network", "rm", self._name) if self._nid: docker_quiet("network", "rm", self._nid) @classmethod def get_free_subnet(cls) -> ipaddress.IPv4Network: Loading