#!/usr/bin/env python
import contextlib
import logging
+from cStringIO import StringIO
from ..orchestra import run
from teuthology import misc
pool_size = config.get('pool_size', 128)
# SETUP
- devstack_node = ctx.cluster.only(is_devstack_node).remotes[0]
- an_osd_node = ctx.cluster.only(is_osd_node).remotes[0]
+ devstack_node = ctx.cluster.only(is_devstack_node).remotes.keys()[0]
+ an_osd_node = ctx.cluster.only(is_osd_node).remotes.keys()[0]
install_devstack(devstack_node)
try:
# OTHER STUFF
misc.copy_file(an_osd_node, '/etc/ceph/ceph.conf', devstack_node)
# This is where we would install python-ceph and ceph-common but it
# appears the ceph task will do that for us.
- # ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rx pool=images'
- # ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
- # ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups'
+ ceph_auth_cmds = [
+ ['ceph', 'auth', 'get-or-create', 'client.cinder', 'mon',
+ 'allow r', 'osd', 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rx pool=images'], # noqa
+ ['ceph', 'auth', 'get-or-create', 'client.glance', 'mon',
+ 'allow r', 'osd', 'allow class-read object_prefix rbd_children, allow rwx pool=images'], # noqa
+ ['ceph', 'auth', 'get-or-create', 'client.cinder-backup', 'mon',
+ 'allow r', 'osd', 'allow class-read object_prefix rbd_children, allow rwx pool=backups'], # noqa
+ ]
+ for cmd in ceph_auth_cmds:
+ an_osd_node.run(args=cmd)
+
+ # Copy ceph auth keys to devstack node
+ def copy_key(from_remote, key_name, to_remote, dest_path, owner):
+ key_stringio = StringIO()
+ from_remote.run(
+ args=['ceph', 'auth', 'get-or-create', key_name],
+ stdout=key_stringio)
+ misc.sudo_write_file(to_remote, dest_path,
+ key_stringio, owner=owner)
+ keys = [
+ dict(name='client.glance',
+ path='/etc/ceph/ceph.client.glance.keyring',
+ owner='glance:glance'),
+ dict(name='client.cinder',
+ path='/etc/ceph/ceph.client.cinder.keyring',
+ owner='cinder:cinder'),
+ dict(name='client.cinder-backup',
+ path='/etc/ceph/ceph.client.cinder-backup.keyring',
+ owner='cinder:cinder'),
+ ]
+ for key_dict in keys:
+ copy_key(an_osd_node, key_dict['name'], devstack_node,
+ key_dict['path'], key_dict['owner'])
yield
#except Exception as e: