Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide error handling when configuring a bad base_url #466

Closed
quba42 opened this issue Feb 2, 2022 · 0 comments · Fixed by #539
Closed

Provide error handling when configuring a bad base_url #466

quba42 opened this issue Feb 2, 2022 · 0 comments · Fixed by #539
Labels
bug Something isn't working (template-set)
Milestone

Comments

@quba42
Copy link
Contributor

quba42 commented Feb 2, 2022

Summary

If I configure a hostname without a schema (https://) for the base_url of the CLI, I get a stacktrace and difficult to understand error instead of a clear error message.

Steps to reproduce

  1. On a clean install of the CLI run pulp config create --base-url "host.example.com" (Using https://host.example.com would be correct).
  2. Run some CLI commands, e.g.: pulp rpm remote list

Expected behavior

A clear and concise error message, something like:

Error: Invalid server URL, please check the provided base_url.

Stacktrace/Error log/Actual behavior

# pulp rpm remote list
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pulpcore/cli/common/openapi.py", line 82, in load_api
    with open(apidoc_cache, "rb") as f:
FileNotFoundError: [Errno 2] No such file or directory: '/root/.cache/squeezer/or.deploy7.dev.atix/api.json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/pulp", line 11, in <module>
    load_entry_point('pulp-cli==0.11.0', 'console_scripts', 'pulp')()
  File "/usr/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/click/decorators.py", line 73, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/pulpcore/cli/common/generic.py", line 493, in callback
    result = entity_ctx.list(limit=limit, offset=offset, parameters=parameters)
  File "/usr/lib/python3.6/site-packages/pulpcore/cli/common/context.py", line 364, in list
    result: Dict[str, Any] = self.pulp_ctx.call(self.LIST_ID, parameters=payload)
  File "/usr/lib/python3.6/site-packages/pulpcore/cli/common/context.py", line 139, in call
    result = self.api.call(operation_id, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/pulpcore/cli/common/context.py", line 99, in api
    self._api = OpenAPI(**self._api_kwargs)
  File "/usr/lib/python3.6/site-packages/pulpcore/cli/common/openapi.py", line 68, in __init__
    self.load_api(refresh_cache=refresh_cache)
  File "/usr/lib/python3.6/site-packages/pulpcore/cli/common/openapi.py", line 87, in load_api
    data = self._download_api()
  File "/usr/lib/python3.6/site-packages/pulpcore/cli/common/openapi.py", line 109, in _download_api
    r: requests.Response = self._session.get(urljoin(self.base_url, self.doc_path))
  File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 528, in request
    prep = self.prepare_request(req)
  File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 466, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/usr/lib/python3.6/site-packages/requests/models.py", line 316, in prepare
    self.prepare_url(url, params)
  File "/usr/lib/python3.6/site-packages/requests/models.py", line 390, in prepare_url
    raise MissingSchema(error)
requests.exceptions.MissingSchema: Invalid URL '/pulp/api/v3/docs/api.json': No schema supplied. Perhaps you meant http:///pulp/api/v3/docs/api.json?

Pulp and pulp-cli version info

Pulp CLI version 0.11.0
pulpcore version 3.14.9

Additonal context

I was trying to get Pulp CLI to work on a Katello instance. Not sure if that is relevant.

@quba42 quba42 added the bug Something isn't working (template-set) label Feb 2, 2022
mdellweg added a commit to mdellweg/pulp-cli that referenced this issue Jul 27, 2022
@mdellweg mdellweg added this to the 0.16.0 milestone Jul 27, 2022
mdellweg added a commit that referenced this issue Jul 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working (template-set)
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants