Add OpenStack request-body schemas and nested console PARAM sync.

This commit is contained in:
2026-07-18 08:47:16 +03:00
parent 6033967e6a
commit 2a8ce3a287
101 changed files with 150428 additions and 612 deletions
+18
View File
@@ -9,6 +9,7 @@ from pathlib import Path
from typing import Any
from app.openstack.opspec import OperationSpec, SeriesManifest, ServicePack
from app.openstack.request_bodies import attach_request_schemas, clear_request_body_cache
_CONTRACTS_ROOT = Path(__file__).resolve().parents[2] / "contracts" / "openstack"
@@ -43,6 +44,17 @@ def list_series() -> list[dict[str, Any]]:
if not man.is_file():
continue
data = json.loads(man.read_text())
microversions = [
{
"name": str(svc.get("name") or ""),
"default_microversion": svc.get("default_microversion"),
"max_microversion": svc.get("max_microversion"),
}
for svc in data.get("services") or []
if isinstance(svc, dict)
and svc.get("name")
and (svc.get("default_microversion") or svc.get("max_microversion"))
]
result.append(
{
"series": data.get("series", path.name),
@@ -51,6 +63,7 @@ def list_series() -> list[dict[str, Any]]:
"service_count": data.get("service_count", 0),
"checksum": data.get("checksum", ""),
"generated_at": data.get("generated_at", ""),
"microversions": microversions,
}
)
return result
@@ -92,6 +105,7 @@ def load_series_pack(series: str) -> dict[str, ServicePack]:
data = json.loads(api.read_text())
name = str(data["service"])
ops = [_op_from_dict(name, raw) for raw in data.get("operations") or []]
ops = attach_request_schemas(name, ops)
packs[name] = ServicePack(
name=name,
typ=str(data.get("type") or name),
@@ -129,9 +143,13 @@ class ContractRuntime:
def reload(self, series: str | None = None) -> dict[str, Any]:
with self._lock:
clear_request_body_cache()
target = (series or self.series).lower()
series_changed = target != self.series
self.packs = load_series_pack(target)
self.series = target
if series_changed:
self.microversion_overrides.clear()
man = load_manifest(target)
return {
"series": man.series,