Fix generation of openapi with py310

in py310 response_code decorator refering to http.HTTPStatus result in
enum as such being used in openapi, while py311 does the proper
conversion.

Change-Id: I4726519f2e2e45d23ca91efecb66ac01addfda56
This commit is contained in:
Artem Goncharov
2024-08-01 09:09:06 +02:00
parent 9bf61cfd49
commit 27daac0ab0

View File

@@ -13,6 +13,7 @@
import abc
import copy
import datetime
import enum
import importlib
import inspect
import logging
@@ -729,8 +730,15 @@ class OpenStackServerSourceBase:
operation_spec.deprecated = True
if not response_code:
response_codes = getattr(func, "wsgi_code", None)
if response_codes and not isinstance(response_codes, list):
response_codes = [str(response_codes)]
if response_codes:
if not isinstance(response_codes, list):
response_codes = [response_codes]
# py starting from 3.11 magically works for str(enum.IntEnum),
# while older ones need an explicit conversion
response_codes = [
rc.value if isinstance(rc, enum.IntEnum) else rc
for rc in response_codes
]
else:
response_codes = [response_code]
if not response_codes: