no_overwrite: bool = False,
method: Optional[OSDMethod] = None,
inbuf: Optional[str] = None, # deprecated. Was deprecated before Quincy
- osd_type: Optional[OSDType] = None
+ osd_type: Optional[OSDType] = None,
+ objectstore: str = 'bluestore'
) -> HandleCommandResult:
"""
Create OSD daemon(s) on all available devices
unmanaged=unmanaged,
preview_only=dry_run,
method=method,
- osd_type=osd_type
+ osd_type=osd_type,
+ objectstore=objectstore
)
]
return self._apply_misc(dg_specs, dry_run, format, no_overwrite)
svc_arg: Optional[str] = None,
method: Optional[OSDMethod] = None,
skip_validation: bool = False,
- osd_type: Optional[OSDType] = None) -> HandleCommandResult:
+ osd_type: Optional[OSDType] = None,
+ objectstore: str = 'bluestore') -> HandleCommandResult:
"""Create OSD daemon(s) on specified host and device(s) (e.g., ceph orch daemon add osd myhost:/dev/sdb)"""
# Create one or more OSDs"""
placement=PlacementSpec(host_pattern=host_name),
method=method,
osd_type=osd_type,
+ objectstore=objectstore,
**drive_group_spec,
)
except (TypeError, KeyError, ValueError) as e:
#: A list of strings, containing paths which should back OSDs
self.data_directories = data_directories
- #: ``filestore`` or ``bluestore``
+ #: ``filestore`` or ``bluestore`` or ``seastore``
self.objectstore = objectstore
#: ``true`` or ``false``
self.service_id,
"`all` is only allowed for data_devices")
- if self.objectstore not in ('bluestore'):
+ if self.objectstore not in ['bluestore', 'seastore']:
raise DriveGroupValidationError(self.service_id,
f"{self.objectstore} is not supported. Must be "
- f"one of ('bluestore')")
+ f"one of bluestore, seastore")
if self.block_wal_size is not None and type(self.block_wal_size) not in [int, str]:
raise DriveGroupValidationError(
raise DriveGroupValidationError(
self.service_id,
'method raw only supports bluestore')
-
+ if self.method == 'raw' and self.objectstore == 'seastore':
+ raise DriveGroupValidationError(
+ self.service_id,
+ 'method raw only supports bluestore')
if self.data_devices.paths is not None:
for device in list(self.data_devices.paths):
if not device.path:
raise DriveGroupValidationError(
self.service_id,
'osd_type must be one of classic, crimson')
+ if self.objectstore == 'seastore' and self.osd_type == 'classic':
+ raise DriveGroupValidationError(
+ self.service_id,
+ 'objectstore seastore only supports osd type crimson')
yaml.add_representer(DriveGroupSpec, DriveGroupSpec.yaml_representer)