From c83144517caaf217f7f10573842f12472bef1cc2 Mon Sep 17 00:00:00 2001 From: Michael Fritch Date: Mon, 8 Jun 2020 17:58:01 -0600 Subject: [PATCH] python-common: validate the service_id during apply the service_id needs to be validated during `orch apply`, but not during `orch daemon add` Signed-off-by: Michael Fritch --- src/python-common/ceph/deployment/service_spec.py | 11 +++-------- src/python-common/ceph/tests/test_service_spec.py | 5 ++--- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index e9cc58b53645d..04594be9dc628 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -471,6 +471,9 @@ class ServiceSpec(object): if not self.service_type: raise ServiceSpecValidationError('Cannot add Service: type required') + if self.service_type in ['mds', 'rgw', 'nfs', 'iscsi'] and not self.service_id: + raise ServiceSpecValidationError('Cannot add Service: id required') + if self.placement is not None: self.placement.validate() @@ -481,14 +484,6 @@ class ServiceSpec(object): return '<{} for service_name={}>'.format(self.__class__.__name__, self.service_name()) -def servicespec_validate_add(self: ServiceSpec): - # This must not be a method of ServiceSpec, otherwise you'll hunt - # sub-interpreter affinity bugs. - ServiceSpec.validate(self) - if self.service_type in ['mds', 'rgw', 'nfs', 'iscsi'] and not self.service_id: - raise ServiceSpecValidationError('Cannot add Service: id required') - - class NFSServiceSpec(ServiceSpec): def __init__(self, service_type: str = 'nfs', diff --git a/src/python-common/ceph/tests/test_service_spec.py b/src/python-common/ceph/tests/test_service_spec.py index 7e00295b35477..e72a37fbc6327 100644 --- a/src/python-common/ceph/tests/test_service_spec.py +++ b/src/python-common/ceph/tests/test_service_spec.py @@ -5,8 +5,7 @@ import yaml import pytest from ceph.deployment.service_spec import HostPlacementSpec, PlacementSpec, \ - RGWSpec, NFSServiceSpec, IscsiServiceSpec, \ - servicespec_validate_add, ServiceSpec, ServiceSpecValidationError + ServiceSpec, ServiceSpecValidationError, RGWSpec, NFSServiceSpec, IscsiServiceSpec from ceph.deployment.drive_group import DriveGroupSpec @@ -107,6 +106,6 @@ def test_servicespec_map_test(s_type, o_spec, s_id): assert spec.placement.hosts[0].hostname == 'host1' assert spec.placement.hosts[0].network == '1.1.1.1' assert spec.placement.hosts[0].name == '' - assert servicespec_validate_add(spec) is None + assert spec.validate() is None ServiceSpec.from_json(spec.to_json()) -- 2.39.5