From: John Mulligan Date: Mon, 29 May 2023 20:54:20 +0000 (-0400) Subject: xxx: DELETEME: hack to find invalid type assignments X-Git-Tag: v19.0.0~926^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=70a67f9fbbe725b25bdf0138af59d1907e1bc96f;p=ceph-ci.git xxx: DELETEME: hack to find invalid type assignments Signed-off-by: John Mulligan --- diff --git a/src/pybind/mgr/cephadm/services/cephadmservice.py b/src/pybind/mgr/cephadm/services/cephadmservice.py index b34be195fa3..26eeb94d307 100644 --- a/src/pybind/mgr/cephadm/services/cephadmservice.py +++ b/src/pybind/mgr/cephadm/services/cephadmservice.py @@ -110,6 +110,15 @@ class CephadmDaemonDeploySpec: self.extra_container_args = extra_container_args self.extra_entrypoint_args = extra_entrypoint_args + def __setattr__(self, name: str, value: Any) -> None: + if value is not None and name in ('extra_container_args', 'extra_entrypoint_args'): + for v in value: + tname = str(type(v)) + if 'ArgumentSpec' not in tname: + raise TypeError(f"{name} is not all ArgumentSpec values: {v!r}(is {type(v)} in {value!r}") + + super().__setattr__(name, value) + def name(self) -> str: return '%s.%s' % (self.daemon_type, self.daemon_id) diff --git a/src/pybind/mgr/orchestrator/_interface.py b/src/pybind/mgr/orchestrator/_interface.py index 4c3ac44a562..044fb455db3 100644 --- a/src/pybind/mgr/orchestrator/_interface.py +++ b/src/pybind/mgr/orchestrator/_interface.py @@ -1018,6 +1018,15 @@ class DaemonDescription(object): self.extra_entrypoint_args = ArgumentSpec.from_general_args( extra_entrypoint_args) + def __setattr__(self, name: str, value: Any) -> None: + if value is not None and name in ('extra_container_args', 'extra_entrypoint_args'): + for v in value: + tname = str(type(v)) + if 'ArgumentSpec' not in tname: + raise TypeError(f"{name} is not all ArgumentSpec values: {v!r}(is {type(v)} in {value!r}") + + super().__setattr__(name, value) + @property def status(self) -> Optional[DaemonDescriptionStatus]: return self._status diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 3c9e0483b04..2f981ede5fb 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -737,6 +737,17 @@ class ServiceSpec(object): extra_entrypoint_args) self.custom_configs: Optional[List[CustomConfig]] = custom_configs + def __setattr__(self, name: str, value: Any) -> None: + if value is not None and name in ('extra_container_args', 'extra_entrypoint_args'): + for v in value: + tname = str(type(v)) + if 'ArgumentSpec' not in tname: + raise TypeError( + f"{name} is not all ArgumentSpec values:" + f" {v!r}(is {type(v)} in {value!r}") + + super().__setattr__(name, value) + @classmethod @handle_type_error def from_json(cls: Type[ServiceSpecT], json_spec: Dict) -> ServiceSpecT: