]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
python-common: validate the service_id during apply 35493/head
authorMichael Fritch <mfritch@suse.com>
Mon, 8 Jun 2020 23:58:01 +0000 (17:58 -0600)
committerMichael Fritch <mfritch@suse.com>
Tue, 9 Jun 2020 00:13:10 +0000 (18:13 -0600)
the service_id needs to be validated during `orch apply`, but not during
`orch daemon add`

Signed-off-by: Michael Fritch <mfritch@suse.com>
src/python-common/ceph/deployment/service_spec.py
src/python-common/ceph/tests/test_service_spec.py

index e9cc58b53645dd3302de213c30889f1e57fa6ded..04594be9dc6286997245badaf1adaaf7a9540be7 100644 (file)
@@ -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',
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())