Merge remote-tracking branch 'origin/main' into gui_development

This commit is contained in:
Cian Hughes
2023-11-08 12:55:41 +00:00
8 changed files with 134 additions and 16 deletions

View File

@@ -1,5 +1,4 @@
from fnmatch import fnmatch
import ipaddress
from typing import Annotated, Optional
from docker.types import Mount
@@ -9,14 +8,10 @@ from .cli import cli_spinner
from .config import config
from .create_img import create_img
from .debug import debug_guard
from .ip_interface import IPAddress
from .utils import ensure_build_dir
# When PEP695 is supported this line should be:
# type IPAddress = ipaddress.IPv4Address | ipaddress.IPv6Address
IPAddress = ipaddress._IPAddressBase
def filter_validation_response(response: str) -> str:
"""Filters out erroneous warnings from the validation response
@@ -136,7 +131,7 @@ def create_ignition_disk(
"-ip",
help="IP address of the switch to connect to",
prompt=True,
parser=ipaddress.ip_address,
parser=IPAddress,
),
] = None,
switch_port: Annotated[

View File

@@ -1,4 +1,3 @@
import ipaddress
import json
from pathlib import Path
from typing import Annotated, Optional
@@ -9,12 +8,9 @@ from .autoignition import json_to_img
from .cli import cli_spinner
from .config import config
from .debug import debug_guard
from .ip_interface import IPAddress
from .utils import ensure_build_dir
# When PEP695 is supported this line should be:
# type IPAddress = ipaddress.IPv4Address | ipaddress.IPv6Address
IPAddress = ipaddress._IPAddressBase
def load_template() -> dict:
"""Loads the default template for the ignition configuration
@@ -121,7 +117,7 @@ def create_img(
"-ip",
help="IP address of the switch to connect to",
prompt=True,
parser=ipaddress.ip_address,
parser=IPAddress,
),
] = None,
switch_port: Annotated[

View File

@@ -44,7 +44,7 @@ def debug_guard(f: Callable) -> Callable:
debug_f = get_debug_f(f)
if kwargs.get("debug", False):
# Snoop depth is set to compensate for wrapper stack frames
return debug_f(*args, **kwargs) # noqa: F821 #* ss is installed in debug_mode
return debug_f(*args, **kwargs)
else:
return f(*args, **kwargs)

View File

@@ -0,0 +1,67 @@
from ipaddress import IPv4Address, IPv6Address, ip_address
class IPAddress:
def __init__(self, *args, **kwargs) -> None:
self.obj: IPv4Address | IPv6Address = ip_address(*args, **kwargs)
@property
def compressed(self) -> str:
return self.obj.compressed
@property
def exploded(self) -> str:
return self.obj.exploded
@property
def is_global(self) -> bool:
return self.obj.is_global
@property
def is_link_local(self) -> bool:
return self.obj.is_link_local
@property
def is_loopback(self) -> bool:
return self.obj.is_loopback
@property
def is_multicast(self) -> bool:
return self.obj.is_multicast
@property
def is_private(self) -> bool:
return self.obj.is_private
@property
def is_reserved(self) -> bool:
return self.obj.is_reserved
@property
def is_unspecified(self) -> bool:
return self.obj.is_unspecified
@property
def max_prefixlen(self) -> int:
return self.obj.max_prefixlen
@property
def packed(self) -> bytes:
return self.obj.packed
@property
def reverse_pointer(self) -> str:
return self.obj.reverse_pointer
@property
def version(self) -> int:
return self.obj.version
def __str__(self) -> str:
return str(self.obj)
def __repr__(self) -> str:
return repr(self.obj)
def __bool__(self) -> bool:
return not self.obj.is_unspecified