From: John Mulligan Date: Thu, 10 Aug 2023 14:14:05 +0000 (-0400) Subject: cephadm: move CephadmcOntext to cephadmlib/context.py X-Git-Tag: v19.0.0~561^2~23 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f7f3dd652fc520d5473177bda65572b6a1705565;p=ceph.git cephadm: move CephadmcOntext to cephadmlib/context.py Signed-off-by: John Mulligan Pair-programmed-with: Adam King Co-authored-by: Adam King --- diff --git a/src/cephadm/cephadm.py b/src/cephadm/cephadm.py index 54ec7328bb11..d53e9b3c4aab 100755 --- a/src/cephadm/cephadm.py +++ b/src/cephadm/cephadm.py @@ -90,6 +90,7 @@ from cephadmlib.constants import ( SYSCTL_DIR, UNIT_DIR, ) +from cephadmlib.context import CephadmContext FuncT = TypeVar('FuncT', bound=Callable) @@ -185,67 +186,6 @@ class DeploymentType(Enum): RECONFIG = 'Reconfig' -class BaseConfig: - - def __init__(self) -> None: - self.image: str = '' - self.docker: bool = False - self.data_dir: str = DATA_DIR - self.log_dir: str = LOG_DIR - self.logrotate_dir: str = LOGROTATE_DIR - self.sysctl_dir: str = SYSCTL_DIR - self.unit_dir: str = UNIT_DIR - self.verbose: bool = False - self.timeout: Optional[int] = DEFAULT_TIMEOUT - self.retry: int = DEFAULT_RETRY - self.env: List[str] = [] - self.memory_request: Optional[int] = None - self.memory_limit: Optional[int] = None - self.log_to_journald: Optional[bool] = None - - self.container_init: bool = CONTAINER_INIT - self.container_engine: Optional[ContainerEngine] = None - - def set_from_args(self, args: argparse.Namespace) -> None: - argdict: Dict[str, Any] = vars(args) - for k, v in argdict.items(): - if hasattr(self, k): - setattr(self, k, v) - - -class CephadmContext: - - def __init__(self) -> None: - self.__dict__['_args'] = None - self.__dict__['_conf'] = BaseConfig() - - def set_args(self, args: argparse.Namespace) -> None: - self._conf.set_from_args(args) - self._args = args - - def has_function(self) -> bool: - return 'func' in self._args - - def __contains__(self, name: str) -> bool: - return hasattr(self, name) - - def __getattr__(self, name: str) -> Any: - if '_conf' in self.__dict__ and hasattr(self._conf, name): - return getattr(self._conf, name) - elif '_args' in self.__dict__ and hasattr(self._args, name): - return getattr(self._args, name) - else: - return super().__getattribute__(name) - - def __setattr__(self, name: str, value: Any) -> None: - if hasattr(self._conf, name): - setattr(self._conf, name, value) - elif hasattr(self._args, name): - setattr(self._args, name, value) - else: - super().__setattr__(name, value) - - class ContainerEngine: def __init__(self) -> None: self.path = find_program(self.EXE) diff --git a/src/cephadm/cephadmlib/context.py b/src/cephadm/cephadmlib/context.py new file mode 100644 index 000000000000..d516e1e88db3 --- /dev/null +++ b/src/cephadm/cephadmlib/context.py @@ -0,0 +1,77 @@ +# context.py - cephadm application context support classes + +import argparse +from typing import Any, Dict, List, Optional + +from .constants import ( + CONTAINER_INIT, + DATA_DIR, + DEFAULT_RETRY, + DEFAULT_TIMEOUT, + LOGROTATE_DIR, + LOG_DIR, + SYSCTL_DIR, + UNIT_DIR, +) + + +class BaseConfig: + + def __init__(self) -> None: + self.image: str = '' + self.docker: bool = False + self.data_dir: str = DATA_DIR + self.log_dir: str = LOG_DIR + self.logrotate_dir: str = LOGROTATE_DIR + self.sysctl_dir: str = SYSCTL_DIR + self.unit_dir: str = UNIT_DIR + self.verbose: bool = False + self.timeout: Optional[int] = DEFAULT_TIMEOUT + self.retry: int = DEFAULT_RETRY + self.env: List[str] = [] + self.memory_request: Optional[int] = None + self.memory_limit: Optional[int] = None + self.log_to_journald: Optional[bool] = None + + self.container_init: bool = CONTAINER_INIT + # FIXME(refactor) : should be Optional[ContainerEngine] + self.container_engine: Any = None + + def set_from_args(self, args: argparse.Namespace) -> None: + argdict: Dict[str, Any] = vars(args) + for k, v in argdict.items(): + if hasattr(self, k): + setattr(self, k, v) + + +class CephadmContext: + + def __init__(self) -> None: + self.__dict__['_args'] = None + self.__dict__['_conf'] = BaseConfig() + + def set_args(self, args: argparse.Namespace) -> None: + self._conf.set_from_args(args) + self._args = args + + def has_function(self) -> bool: + return 'func' in self._args + + def __contains__(self, name: str) -> bool: + return hasattr(self, name) + + def __getattr__(self, name: str) -> Any: + if '_conf' in self.__dict__ and hasattr(self._conf, name): + return getattr(self._conf, name) + elif '_args' in self.__dict__ and hasattr(self._args, name): + return getattr(self._args, name) + else: + return super().__getattribute__(name) + + def __setattr__(self, name: str, value: Any) -> None: + if hasattr(self._conf, name): + setattr(self._conf, name, value) + elif hasattr(self._args, name): + setattr(self._args, name, value) + else: + super().__setattr__(name, value)