summaryrefslogtreecommitdiffstats
path: root/src/pybind/mgr/dashboard/api
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
commit19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch)
tree42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/pybind/mgr/dashboard/api
parentInitial commit. (diff)
downloadceph-19fcec84d8d7d21e796c7624e521b60d28ee21ed.tar.xz
ceph-19fcec84d8d7d21e796c7624e521b60d28ee21ed.zip
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/pybind/mgr/dashboard/api')
-rw-r--r--src/pybind/mgr/dashboard/api/__init__.py1
-rw-r--r--src/pybind/mgr/dashboard/api/doc.py53
2 files changed, 54 insertions, 0 deletions
diff --git a/src/pybind/mgr/dashboard/api/__init__.py b/src/pybind/mgr/dashboard/api/__init__.py
new file mode 100644
index 000000000..c3961685a
--- /dev/null
+++ b/src/pybind/mgr/dashboard/api/__init__.py
@@ -0,0 +1 @@
+from __future__ import absolute_import
diff --git a/src/pybind/mgr/dashboard/api/doc.py b/src/pybind/mgr/dashboard/api/doc.py
new file mode 100644
index 000000000..172d59d0a
--- /dev/null
+++ b/src/pybind/mgr/dashboard/api/doc.py
@@ -0,0 +1,53 @@
+from enum import Enum
+from typing import Any, Dict, List, Optional
+
+
+class SchemaType(Enum):
+ """
+ Representation of the type property of a schema object:
+ http://spec.openapis.org/oas/v3.0.3.html#schema-object
+ """
+ ARRAY = 'array'
+ BOOLEAN = 'boolean'
+ INTEGER = 'integer'
+ NUMBER = 'number'
+ OBJECT = 'object'
+ STRING = 'string'
+
+ def __str__(self):
+ return str(self.value)
+
+
+class Schema:
+ """
+ Representation of a schema object:
+ http://spec.openapis.org/oas/v3.0.3.html#schema-object
+ """
+
+ def __init__(self, schema_type: SchemaType = SchemaType.OBJECT,
+ properties: Optional[Dict] = None, required: Optional[List] = None):
+ self._type = schema_type
+ self._properties = properties if properties else {}
+ self._required = required if required else []
+
+ def as_dict(self) -> Dict[str, Any]:
+ schema: Dict[str, Any] = {'type': str(self._type)}
+
+ if self._type == SchemaType.ARRAY:
+ items = Schema(properties=self._properties)
+ schema['items'] = items.as_dict()
+ else:
+ schema['properties'] = self._properties
+
+ if self._required:
+ schema['required'] = self._required
+
+ return schema
+
+
+class SchemaInput:
+ """
+ Simple DTO to transfer data in a structured manner for creating a schema object.
+ """
+ type: SchemaType
+ params: List[Any]