Skip to content

Commit

Permalink
Use enum for default + Update network text mode
Browse files Browse the repository at this point in the history
  • Loading branch information
Dramelac committed Mar 4, 2024
1 parent 7080e9b commit aad1edc
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 14 deletions.
3 changes: 2 additions & 1 deletion exegol/config/UserConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from exegol.config.ConstantConfig import ConstantConfig
from exegol.console.ConsoleFormat import boolFormatter
from exegol.model.ExegolNetwork import ExegolNetworkMode
from exegol.utils.DataFileUtils import DataFileUtils
from exegol.utils.MetaSingleton import MetaSingleton
from exegol.utils.NetworkUtils import NetworkUtils
Expand Down Expand Up @@ -35,7 +36,7 @@ def __init__(self):
self.desktop_default_localhost: bool = True
self.desktop_default_proto: str = "http"
# Network
self.network_default_mode: str = "host"
self.network_default_mode: str = ExegolNetworkMode.host.name
self.network_fallback_mode: str = "nat"
self.network_dedicated_range: str = "" # Finding a default network can require a user interaction, loading only if needed from NetworkUtils.get_default_large_range_text().
self.network_default_netmask: int = 28
Expand Down
3 changes: 2 additions & 1 deletion exegol/console/cli/actions/GenericParameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from exegol.config.UserConfig import UserConfig
from exegol.console.cli.ExegolCompleter import ContainerCompleter, ImageCompleter, VoidCompleter, DesktopConfigCompleter
from exegol.console.cli.actions.Command import Option, GroupArg
from exegol.model.ExegolNetwork import ExegolNetworkMode
from exegol.utils.NetworkUtils import NetworkUtils


Expand Down Expand Up @@ -165,7 +166,7 @@ def __init__(self, groupArgs: List[GroupArg]):
self.network = Option("--network",
dest="network",
action="store",
default="host",
default=ExegolNetworkMode.host.name,
choices=NetworkUtils.get_options(),
help="Select the type of network to which the container will be attached (default: [blue]host[/blue])")
self.share_timezone = Option("--disable-shared-timezones",
Expand Down
2 changes: 1 addition & 1 deletion exegol/model/ContainerConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,7 @@ def setWorkspaceShare(self, host_directory):
logger.verbose(f"Config: Sharing workspace directory {path}")
self.__workspace_custom_path = str(path)

def setNetworkMode(self, network: Union[ExegolNetworkMode, str] = "host"):
def setNetworkMode(self, network: Union[ExegolNetworkMode, str] = ExegolNetworkMode.host):
"""Set container's network mode, true for host, false for bridge"""
try:
if type(network) is str:
Expand Down
25 changes: 14 additions & 11 deletions exegol/model/ExegolNetwork.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

class DockerDrivers(Enum):
"""Enum for Docker driver type"""
Disable = "none"
Disable = 'none'
Host = 'host'
Bridge = 'bridge'

Expand All @@ -25,13 +25,12 @@ class ExegolNetwork:

def __init__(self, net_mode: ExegolNetworkMode = ExegolNetworkMode.host, net_name: Optional[str] = None):
self.__net_mode: ExegolNetworkMode = net_mode
self.__net_name: str = net_name if net_name is not None else net_mode.value
if self.__net_mode == ExegolNetworkMode.disable:
self.__docker_net_mode: DockerDrivers = DockerDrivers.Disable
elif self.__net_mode == ExegolNetworkMode.host:
self.__docker_net_mode = DockerDrivers.Host
else:
try:
# Handle Disable and Host drivers
self.__docker_net_mode = DockerDrivers[self.__net_mode.value]
except KeyError:
self.__docker_net_mode = self.__DEFAULT_NETWORK_DRIVER
self.__net_name = net_name if net_name else self.__docker_net_mode.value

@classmethod
def instance_network(cls, mode: Union[ExegolNetworkMode, str], container_name: str):
Expand All @@ -51,10 +50,14 @@ def instance_network(cls, mode: Union[ExegolNetworkMode, str], container_name: s
def parse_networks(cls, networks: dict, container_name: str) -> List["ExegolNetwork"]:
results = []
for network, config in networks.items():
try:
net_mode = ExegolNetworkMode(network)
except ValueError:
net_mode = ExegolNetworkMode.nat if network == container_name else ExegolNetworkMode.attached
if network == DockerDrivers.Host.value:
net_mode = ExegolNetworkMode.host
elif network == DockerDrivers.Bridge.value:
net_mode = ExegolNetworkMode.docker
elif network == container_name:
net_mode = ExegolNetworkMode.nat
else:
net_mode = ExegolNetworkMode.attached
results.append(cls(net_mode=net_mode, net_name=network))

return results
Expand Down

0 comments on commit aad1edc

Please sign in to comment.