When using lava-tool submit-job manually, this error can be misleading:
ERROR: Username provided but no token found.
lava-tool
is exact about the complete URL (not just the username), so if
you added authentication using http://
then the lookup will fail if you
submit using https://
.
When submitting a job using lava-tool submit-job
, the user is requested to
enter the password to open the keyring which stores the lava token. When submitting a job from a script, the user can
skip this step by adding the credentials in the URL to the instance.
$ lava-tool submit-job http://<login>:<token>@localhost/RPC2/
You can also use XML-RPC directly:
import xmlrpclib
username = "USERNAME"
token = "TOKEN_STRING"
hostname = "HOSTNAME"
server = xmlrpclib.ServerProxy("http://%s:%s@%s/RPC2" % (username, token, hostname))
print server.system.listMethods()
$ lava-tool auth-add http://administrator@192.168.11.100/RPC2/
Paste token for http://administrator@192.168.11.100/RPC2/:
Traceback (most recent call last):
...
File "/usr/lib/python2.7/dist-packages/keyring/backend.py", line
163, in set_password
password, True)
gnomekeyring.IOError
This error occurs because the python functions that LAVA uses will store the connection credentials in the Gnome keyring, if it is available (default with current Gnome desktops). When you connect over SSH, you will be unable to unlock the keyring, and you will see this error. There are several methods available that can be used to provide remote access.
Use a server version of Debian (or a remove the Gnome Keyring)
Unset the DISPLAY environment variable in your shell (this will make the keyring library not use the GNOME keyring)
Setup and use a file-based key ring:
mkdir ~/.cache/keyring
echo '
[backend]
default-keyring=keyring.backend.CryptedFileKeyring
keyring-path=~/.cache/keyring/
' > ~/keyringrc.cfg
Use a remote xmlrpclib call:
import xmlrpclib
import yaml
config = yaml.dumps({ ... })
server=xmlrpclib.ServerProxy("http://username:API-Key@localhost:8001/RPC2/")
jobid=server.scheduler.submit_job(config)
lava-tool auth-add can fail with a message:
cannot create an item in a locked collection.
This results from a locked Gnome keyring and this can be unlocked in the python console:
Your keyring password will need to be entered into the python console to unlock and you will need to be outside of the lava instance (or call /usr/bin/python) to do it:
$ python
>>> import gnomekeyring
>>> gnomekeyring.unlock_sync(None, 'mypassword');
if that fails, see gnomekeyring.IOError above.