internal.py: add global config key 'unlock_on_failure'

When testing new tasks, it's a drag to have to keep manually unlocking
the targets.  Default behavior is to keep them locked for any failure;
this allows overriding that choice for the case where the failure is
in debugging the task, where the state of the targets isn't important.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
interactive.py: add handy "pp" for prettyprinting at the prompt

Signed-off-by: Dan Mick <dan.mick@inktank.com>
README.rst: describe new pp object and unlock_on_failure option.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
install.py: look for 'local' in config directly, don't warn if not found

Fixes: #7278
Signed-off-by: Dan Mick <dan.mick@inktank.com>
valgrind: another tcmalloc suppression

With this I can run a simple job with a normal build (not
notcmalloc) and valgrind does not complain.  Fingers crossed!

Signed-off-by: Sage Weil <sage@inktank.com>
Add copy_file() to scp files between remotes

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add skeleton devstack task

Currently only installs devstack on one node, and creates some pools on
the ceph cluster.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Fix linter errors.

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add optional 'owner' arg to sudo_write_file()

This gets passed directly to chown as 'sudo chown $owner $file'

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Copy ceph auth keys over to devstack node

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Split out devstack-ceph configuration

This is starting to get long, so create configure_devstack_and_ceph()

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Add set_libvirt_secret() and split out other steps

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>