Project

Profile

Help

Issue #8715

closed

openapi generation replaces entire url of endpoints with path_params with {*_href} urls

Added by alikins almost 3 years ago. Updated over 2 years ago.

Status:
CLOSED - DUPLICATE
Priority:
Normal
Assignee:
-
Category:
-
Sprint/Milestone:
-
Start date:
Due date:
Estimated time:
Severity:
2. Medium
Version:
Platform Release:
OS:
Triaged:
Yes
Groomed:
No
Sprint Candidate:
No
Tags:
Sprint:
Quarter:

Description

Ticket moved to GitHub: "pulp/pulpcore/1991":https://github.com/pulp/pulpcore/issues/1991


For example:

/api/automation-hub/v3/namespaces/{name}/

gets transformed to

{galaxy_namespace_href}

This happens for any urls with a path param unless they bound to 'list' or 'create' actions. ie, except for POST and GET list'y things, all the endpoint urls in the generated spec get replaced.

I think the reason why the generated openapi schema is so weird and wrong (like for the spec generated for galaxy namespaces mentioned in https://issues.redhat.com/browse/AAH-450). If a url path has any path param in it, pulpcore.openapi.PulpSchemaGenerator.convert_endpoint_path_params() replaces it with some variation of {blah_href}.

For ex, GET /api/automation-hub/v3/namespaces/{name}/ is mogrified into GET {galaxy_namespace_href}. But 'list' and 'create' actions dont get modified

So except for 'list' and 'create' actions all of the galaxy_ng endpoint urls in the spec are broken. For galaxy_ng, this can be confirmed by looking at /api/automation-hub/v3/swagger-ui/

Some output from logging the spec generation for the /api/automation-hub/v3/namespaces/ endpoints:

 pulpcore.openapi __init__.parse:381   165 - path=/api/automation-hub/v3/namespaces/
 pulpcore.openapi __init__.parse:382   165 - path_regex=api/automation-hub/v3/^namespaces/$
 pulpcore.openapi __init__.parse:383   165 - method=POST
 pulpcore.openapi __init__.parse:384   165 - view=<galaxy_ng.app.api.v3.viewsets.namespace.NamespaceViewSet object at 0x7f5a4e729ef0>
 pulpcore.openapi __init__.parse:396   165 - path2=/api/automation-hub/v3/namespaces/
^ -- path not munged for a POST / 'create'

 pulpcore.openapi __init__.parse:400   165 - operation={'operationId': 'api_automation_hub_v3_namespaces_create', 'description': 'Override to validate for name duplication before serializer validation.', 'summary': 'Create a namespace', 'tags': ['Api: Automation-Hub Namespaces'], 'requestBody': {'content': {'application/json': {'schema': {'$ref': '#/components/schemas/Namespace'}}, 'application/x-www-form-urlencoded': {'schema': {'$ref': '#/components/schemas/Namespace'}}, 'multipart/form-data': {'schema': {'$ref': '#/components/schemas/Namespace'}}}, 'required': True}, 'security': [{'cookieAuth': []}, {'tokenAuth': []}], 'responses': {'201': {'content': {'application/json': {'schema': {'$ref': '#/components/schemas/NamespaceResponse'}}}, 'description': ''}}}
 pulpcore.openapi __init__.parse:401   165 - schema.method=POST

 pulpcore.openapi __init__.parse:381   165 - path=/api/automation-hub/v3/namespaces/{name}/
 pulpcore.openapi __init__.parse:382   165 - path_regex=api/automation-hub/v3/^namespaces/(?P<name>[^/.]+)/$
 pulpcore.openapi __init__.parse:383   165 - method=GET
 pulpcore.openapi __init__.parse:384   165 - view=<galaxy_ng.app.api.v3.viewsets.namespace.NamespaceViewSet object at 0x7f5a4e729f28>
 pulpcore.openapi __init__.convert_endpoint_path_params:345   165 - view=<galaxy_ng.app.api.v3.viewsets.namespace.NamespaceViewSet object at 0x7f5a4e729f28>, parent_viewset=None
 pulpcore.openapi __init__.parse:396   165 - path2={galaxy_namespace_href}
 ^ -- path is munged for a GET /  'retrieve'

 pulpcore.openapi __init__.parse:400   165 - operation={'operationId': 'namespace_instance_read', 'description': '', 'summary': 'Inspect a namespace', 'parameters': [{'in': 'path', 'name': 'galaxy_namespace_href', 'schema': {'type': 'string'}, 'required': True}], 'tags': ['Namespace: Instance'], 'security': [{'cookieAuth': []}, {'tokenAuth': []}], 'responses': {'200': {'content': {'application/json': {'schema': {'$ref': '#/components/schemas/NamespaceResponse'}}}, 'description': ''}}}
 pulpcore.openapi __init__.parse:401   165 - schema.method=GET
Actions #1

Updated by alikins almost 3 years ago

I forgot to mention this is observed with the pulpcore 3.11 branch.

Actions #2

Updated by fao89 almost 3 years ago

  • Triaged changed from No to Yes
Actions #3

Updated by pulpbot over 2 years ago

  • Description updated (diff)
  • Status changed from NEW to CLOSED - DUPLICATE

Also available in: Atom PDF