From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- src/pybind/mgr/dashboard/api/__init__.py | 1 + src/pybind/mgr/dashboard/api/doc.py | 53 ++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 src/pybind/mgr/dashboard/api/__init__.py create mode 100644 src/pybind/mgr/dashboard/api/doc.py (limited to 'src/pybind/mgr/dashboard/api') 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] -- cgit v1.2.3