]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
python-common: Verify service spec is not None 39410/head
authorSebastian Wagner <sebastian.wagner@suse.com>
Thu, 11 Feb 2021 11:23:56 +0000 (12:23 +0100)
committerSebastian Wagner <sebastian.wagner@suse.com>
Fri, 5 Mar 2021 11:22:29 +0000 (12:22 +0100)
Fixes: https://tracker.ceph.com/issues/48325
Signed-off-by: Sebastian Wagner <sebastian.wagner@suse.com>
src/python-common/ceph/deployment/service_spec.py
src/python-common/ceph/tests/test_drive_group.py

index 2e5762c43542bd54df98f79aa15c24d676b95c5f..c5dd401ce80d6b4dc0e32701815146d9a475b967 100644 (file)
@@ -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`
index 579b18975ce4d9c6d04d5b0ba763faebb7a25399..0fd162a99279227ddcd9101b495f51089f9aa953 100644 (file)
@@ -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.",
         '{}'