]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
python-common/drive_group: handle fields outside of 'spec' even when 'spec' is provided 53115/head
authorAdam King <adking@redhat.com>
Wed, 31 May 2023 17:08:35 +0000 (13:08 -0400)
committerAdam King <adking@redhat.com>
Wed, 23 Aug 2023 20:16:29 +0000 (16:16 -0400)
commit6ae0f78c6c020534f0f0d407662e506f7fbfbce4
treea9d61cdcd127214b2c07d27bedfa955dd48d56e1
parent85d2a2eff44aa5030b6784e939b8d423e87669d4
python-common/drive_group: handle fields outside of 'spec' even when 'spec' is provided

Otherwise certain specs such as

service_type: osd
service_id: xxx
service_name: osd.xxx
placement:
  hosts:
  - vm-00
spec:
  osds_per_device: 2
data_devices:
  paths:
  - /dev/vde

fail to apply with

Error EINVAL: ServiceSpec: 'dict' object has no attribute 'validate'

which is not a useful error message. This is caused by the
spec assuming all osd specific fields are either defined
in the 'spec' section or outside of it, but not mixed in.
We could also just consider these specs to be invalid
and just raise a better error message, but it seems easier
to make the minor adjustment for it to work, given there doesn't
seem to be an issue with mixing the styles for specs for
other service types.

Fixes: https://tracker.ceph.com/issues/61533
Signed-off-by: Adam King <adking@redhat.com>
(cherry picked from commit 12901f617d9f21dcc4de9b039b7ab6484fbc99ca)
src/python-common/ceph/deployment/drive_group.py
src/python-common/ceph/tests/test_drive_group.py