From 8b61310ce3eedeb8ac60446933cd5db548de6434 Mon Sep 17 00:00:00 2001 From: John Spray Date: Tue, 7 Apr 2015 14:14:15 +0100 Subject: [PATCH] tasks/cephfs: tweak use of mon for admin commands ... s/mon_remote/admin_remote/ and allow caller to pass in which remote they want to use for that. Enables use with ceph_deploy task which does not give admin keys to mons. Signed-off-by: John Spray --- tasks/cephfs/filesystem.py | 25 ++++++++++++++----------- tasks/cephfs/test_journal_repair.py | 2 +- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/tasks/cephfs/filesystem.py b/tasks/cephfs/filesystem.py index 74f1c1a75ac90..a30e502c27bc7 100644 --- a/tasks/cephfs/filesystem.py +++ b/tasks/cephfs/filesystem.py @@ -38,7 +38,7 @@ class Filesystem(object): * Assume a single filesystem+cluster * Assume a single MDS """ - def __init__(self, ctx): + def __init__(self, ctx, admin_remote=None): self._ctx = ctx self.mds_ids = list(misc.all_roles_of_type(ctx.cluster, 'mds')) @@ -46,8 +46,11 @@ class Filesystem(object): raise RuntimeError("This task requires at least one MDS") first_mon = misc.get_first_mon(ctx, None) - (self.mon_remote,) = ctx.cluster.only(first_mon).remotes.iterkeys() - self.mon_manager = ceph_manager.CephManager(self.mon_remote, ctx=ctx, logger=log.getChild('ceph_manager')) + if admin_remote is None: + (self.admin_remote,) = ctx.cluster.only(first_mon).remotes.iterkeys() + else: + self.admin_remote = admin_remote + self.mon_manager = ceph_manager.CephManager(self.admin_remote, ctx=ctx, logger=log.getChild('ceph_manager')) self.mds_daemons = dict([(mds_id, self._ctx.daemons.get_daemon('mds', mds_id)) for mds_id in self.mds_ids]) client_list = list(misc.all_roles_of_type(self._ctx.cluster, 'client')) @@ -59,15 +62,15 @@ class Filesystem(object): osd_count = len(list(misc.all_roles_of_type(self._ctx.cluster, 'osd'))) pgs_per_fs_pool = pg_warn_min_per_osd * osd_count - self.mon_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'create', 'metadata', pgs_per_fs_pool.__str__()]) - self.mon_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'create', 'data', pgs_per_fs_pool.__str__()]) - self.mon_remote.run(args=['sudo', 'ceph', 'fs', 'new', 'default', 'metadata', 'data']) + self.admin_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'create', 'metadata', pgs_per_fs_pool.__str__()]) + self.admin_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'create', 'data', pgs_per_fs_pool.__str__()]) + self.admin_remote.run(args=['sudo', 'ceph', 'fs', 'new', 'default', 'metadata', 'data']) def delete(self): - self.mon_remote.run(args=['sudo', 'ceph', 'fs', 'rm', 'default', '--yes-i-really-mean-it']) - self.mon_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'delete', + self.admin_remote.run(args=['sudo', 'ceph', 'fs', 'rm', 'default', '--yes-i-really-mean-it']) + self.admin_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'delete', 'metadata', 'metadata', '--yes-i-really-really-mean-it']) - self.mon_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'delete', + self.admin_remote.run(args=['sudo', 'ceph', 'osd', 'pool', 'delete', 'data', 'data', '--yes-i-really-really-mean-it']) def legacy_configured(self): @@ -76,8 +79,8 @@ class Filesystem(object): the case, the caller should avoid using Filesystem.create """ try: - proc = self.mon_remote.run(args=['sudo', 'ceph', '--format=json-pretty', 'osd', 'lspools'], - stdout=StringIO()) + proc = self.admin_remote.run(args=['sudo', 'ceph', '--format=json-pretty', 'osd', 'lspools'], + stdout=StringIO()) pools = json.loads(proc.stdout.getvalue()) metadata_pool_exists = 'metadata' in [p['poolname'] for p in pools] except CommandFailedError as e: diff --git a/tasks/cephfs/test_journal_repair.py b/tasks/cephfs/test_journal_repair.py index 99f4a5db8e376..833c4daa2f3cd 100644 --- a/tasks/cephfs/test_journal_repair.py +++ b/tasks/cephfs/test_journal_repair.py @@ -244,7 +244,7 @@ class TestJournalRepair(CephFSTestCase): self.fs.table_tool(["0", "reset", "session"]) self.fs.journal_tool(["journal", "reset"], rank=0) self.fs.erase_mds_objects(1) - self.fs.mon_remote.run(args=['sudo', 'ceph', 'fs', 'reset', 'default', '--yes-i-really-mean-it']) + self.fs.admin_remote.run(args=['sudo', 'ceph', 'fs', 'reset', 'default', '--yes-i-really-mean-it']) # Bring an MDS back online, mount a client, and see that we can walk the full # filesystem tree again -- 2.39.5