← Back to team overview

sts-sponsors team mailing list archive

[Merge] ~lloydwaltersj/maas:fix-broken-oapi-param-names into maas:master

 

Jack Lloyd-Walters has proposed merging ~lloydwaltersj/maas:fix-broken-oapi-param-names into maas:master.

Commit message:
fix LP:2009140, OpenApi parameter names erroneously stripped of trailing '}'

Requested reviews:
  MAAS Lander (maas-lander): unittests
  MAAS Maintainers (maas-maintainers)
Related bugs:
  Bug #2009140 in MAAS: "MAAS OpenApi Schema cutoff variable names"
  https://bugs.launchpad.net/maas/+bug/2009140

For more details, see:
https://code.launchpad.net/~lloydwaltersj/maas/+git/maas/+merge/438279
-- 
Your team MAAS Committers is subscribed to branch maas:master.
diff --git a/src/maasserver/api/doc_oapi.py b/src/maasserver/api/doc_oapi.py
index b7e3a9d..2fba4c8 100644
--- a/src/maasserver/api/doc_oapi.py
+++ b/src/maasserver/api/doc_oapi.py
@@ -213,8 +213,9 @@ def _oapi_item_from_docstring(
             oper_obj["deprecated"] = True
         for param in ap_dict["params"]:
             description = _prettify(param["description_stripped"])
-            name = param["name"].strip("}{")
-            path_var = name in uri_params
+            # LP 2009140
+            stripped_name = re.match(r"(?<=\{)\.+(?<=\})", param["name"])
+            name = param["name"] if not stripped_name else stripped_name.group()
             required = (
                 param["options"]["required"].lower() == "true"
                 or name != param["name"]
@@ -223,7 +224,7 @@ def _oapi_item_from_docstring(
             if name != param["name"]:
                 param_dict = {
                     "name": name,
-                    "in": "path" if path_var else "query",
+                    "in": "path" if name in uri_params else "query",
                     "description": description,
                     "schema": {
                         "type": _type_to_string(param["type"]),