diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/pybind/mgr/dashboard/api/doc.py | |
parent | Initial commit. (diff) | |
download | ceph-upstream/16.2.11+ds.tar.xz ceph-upstream/16.2.11+ds.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 '')
-rw-r--r-- | src/pybind/mgr/dashboard/api/doc.py | 53 |
1 files changed, 53 insertions, 0 deletions
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] |