From c3e2b981793e8776a931bf1f2d72fd6d536d10ea Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Thu, 11 Feb 2021 12:23:56 +0100 Subject: [PATCH] python-common: Verify service spec is not None Fixes: https://tracker.ceph.com/issues/48325 Signed-off-by: Sebastian Wagner (cherry picked from commit 518edfae7522ada8c74b413cef6e1ae1f08a244b) --- src/python-common/ceph/deployment/service_spec.py | 4 ++++ src/python-common/ceph/tests/test_drive_group.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/src/python-common/ceph/deployment/service_spec.py b/src/python-common/ceph/deployment/service_spec.py index 013e5522dcf80..6e30e47aa7c28 100644 --- a/src/python-common/ceph/deployment/service_spec.py +++ b/src/python-common/ceph/deployment/service_spec.py @@ -531,6 +531,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 579b18975ce4d..0fd162a992792 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.", '{}' -- 2.39.5