]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: move CephadmcOntext to cephadmlib/context.py
authorJohn Mulligan <jmulligan@redhat.com>
Thu, 10 Aug 2023 14:14:05 +0000 (10:14 -0400)
committerJohn Mulligan <jmulligan@redhat.com>
Wed, 30 Aug 2023 17:57:42 +0000 (13:57 -0400)
Signed-off-by: John Mulligan <jmulligan@redhat.com>
Pair-programmed-with: Adam King <adking@redhat.com>
Co-authored-by: Adam King <adking@redhat.com>
src/cephadm/cephadm.py
src/cephadm/cephadmlib/context.py [new file with mode: 0644]

index 54ec7328bb11e657d7bf6d51bb470b4623c0ca2a..d53e9b3c4aabd35d03a3ff66b8a5bc21a59ffd7f 100755 (executable)
@@ -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 (file)
index 0000000..d516e1e
--- /dev/null
@@ -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)