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()
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',
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
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())