major / supernova

Use novaclient with multiple OpenStack nova environments the easy way
http://supernova.readthedocs.org/
Apache License 2.0
86 stars 54 forks source link

Need even friendlier keyring errors #84

Open major opened 9 years ago

major commented 9 years ago

The start of this was added in 393eed2fd064fcdaeff8d74ad4c78ce99e58ec04 but it needs further refinement. Showing a full exception to a user isn't desirable. :/

FancyFane commented 8 years ago

Hi major,

To add to this open issue, I'm currently getting an error that ends with "No Recommended backed available" I'm not sure what is needed here to resolve this issue.

$ supernova-keyring -s mycloud OS_PASSWORD

Preparing to set a credential in the keyring for:

  - Environment  : mycloud
  - Parameter    : OS_PASSWORD

If this is correct, enter the corresponding credential to store in your keyring
or press CTRL-C to abort: 
Traceback (most recent call last):
  File "/usr/bin/supernova-keyring", line 9, in <module>
    load_entry_point('supernova==2.2.0', 'console_scripts', 'supernova-keyring')()
  File "/usr/lib/python2.7/site-packages/click-6.2-py2.7.egg/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/click-6.2-py2.7.egg/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python2.7/site-packages/click-6.2-py2.7.egg/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python2.7/site-packages/click-6.2-py2.7.egg/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/click-6.2-py2.7.egg/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/supernova/executable.py", line 286, in run_supernova_keyring
    password=credential)
  File "/usr/lib/python2.7/site-packages/supernova/credentials.py", line 94, in set_user_password
    return password_set(username, password)
  File "/usr/lib/python2.7/site-packages/supernova/credentials.py", line 102, in password_set
    result = keyring.set_password('supernova', username, password)
  File "build/bdist.linux-x86_64/egg/keyring/core.py", line 48, in set_password
  File "build/bdist.linux-x86_64/egg/keyring/backends/fail.py", line 18, in get_password
RuntimeError: No recommended backend was available
FancyFane commented 8 years ago

Hi Major,

I wanted to follow up on this issue.

$ pip2 freeze | grep keyring
keyring==8.0.1

This version of keyring is causing problems, I've installed version keyring==5.6 and the "No Recommended Backend" error went away.

$ pip2 freeze | grep keyring
keyring==5.6
major commented 8 years ago

This may help if you want to stay on keyring 8.0+:

pip install keyrings.alt

The file-based keyring storage was removed from the 8.x version. I'm going to set a cap on the keyring module in the hopes that it will help this issue until I can get a long-term fix.