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>
Add update_devstack_config_files()

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Split out key generation

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Use get_file() and sudo_write_file()

... instead of copy_file()

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Don't pass owner to copy_key()

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Fix typoed virsh call

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Call seek(0) on StringIO objects before reading

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Work around a bug in ConfigParser

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
Use ConfigParser.set() instead of update()

Signed-off-by: Zack Cerza <zack.cerza@inktank.com>
get_file() returns a str, not a StringIO...

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