]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
python-common: validate the service_id during apply
authorMichael Fritch <mfritch@suse.com>
Mon, 8 Jun 2020 23:58:01 +0000 (17:58 -0600)
committerSebastian Wagner <sebastian.wagner@suse.com>
Tue, 14 Jul 2020 09:39:06 +0000 (11:39 +0200)
the service_id needs to be validated during `orch apply`, but not during
`orch daemon add`

Signed-off-by: Michael Fritch <mfritch@suse.com>
(cherry picked from commit c83144517caaf217f7f10573842f12472bef1cc2)

src/python-common/ceph/deployment/service_spec.py
src/python-common/ceph/tests/test_service_spec.py

index 139420e817ffedfb51352dcf344830c6214bd5af..4d86d6fc167f5553c416b29ccb9068a89f84da26 100644 (file)
@@ -485,6 +485,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()
 
@@ -495,14 +498,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',
index 7e00295b354774180aa249983f99f8f10afcc655..e72a37fbc632776e9bd7ce3426f4176e58f6c8cb 100644 (file)
@@ -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())