From: Sebastian Wagner Date: Thu, 11 Feb 2021 11:23:56 +0000 (+0100) Subject: python-common: Verify service spec is not None X-Git-Tag: v17.1.0~2645^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=518edfae7522ada8c74b413cef6e1ae1f08a244b;p=ceph.git python-common: Verify service spec is not None Fixes: https://tracker.ceph.com/issues/48325 Signed-off-by: Sebastian Wagner --- diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 2e5762c43542..c5dd401ce80d 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -489,6 +489,10 @@ class ServiceSpec(object): :param json_spec: A valid dict with ServiceSpec """ + if not isinstance(json_spec, dict): + raise ServiceSpecValidationError( + f'Service Spec is not an (JSON or YAML) object. got "{str(json_spec)}"') + c = json_spec.copy() # kludge to make `from_json` compatible to `Orchestrator.describe_service` diff --git a/src/python-common/ceph/tests/test_drive_group.py b/src/python-common/ceph/tests/test_drive_group.py index 579b18975ce4..0fd162a99279 100644 --- a/src/python-common/ceph/tests/test_drive_group.py +++ b/src/python-common/ceph/tests/test_drive_group.py @@ -1,4 +1,6 @@ # flake8: noqa +import re + import pytest import yaml @@ -32,6 +34,10 @@ def test_DriveGroup(test_input): @pytest.mark.parametrize("match,test_input", [ + ( + re.escape('Service Spec is not an (JSON or YAML) object. got "None"'), + '' + ), ( "Failed to validate Drive Group: OSD spec needs a `placement` key.", '{}'