]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test: cephfs-mirror teuthology task and test yamls 36698/head
authorVenky Shankar <vshankar@redhat.com>
Tue, 4 Aug 2020 09:05:51 +0000 (05:05 -0400)
committerVenky Shankar <vshankar@redhat.com>
Tue, 19 Jan 2021 06:08:10 +0000 (01:08 -0500)
Signed-off-by: Venky Shankar <vshankar@redhat.com>
22 files changed:
qa/cephfs/begin.yaml
qa/suites/fs/mirror/% [new file with mode: 0644]
qa/suites/fs/mirror/.qa [new symlink]
qa/suites/fs/mirror/begin.yaml [new symlink]
qa/suites/fs/mirror/cephfs-mirror/+ [new file with mode: 0644]
qa/suites/fs/mirror/cephfs-mirror/one-per-cluster.yaml [new file with mode: 0644]
qa/suites/fs/mirror/clients/+ [new file with mode: 0644]
qa/suites/fs/mirror/clients/.qa [new symlink]
qa/suites/fs/mirror/clients/mirror.yaml [new file with mode: 0644]
qa/suites/fs/mirror/cluster/+ [new file with mode: 0644]
qa/suites/fs/mirror/cluster/1-node.yaml [new file with mode: 0644]
qa/suites/fs/mirror/mount/.qa [new symlink]
qa/suites/fs/mirror/mount/fuse.yaml [new file with mode: 0644]
qa/suites/fs/mirror/objectstore/.qa [new symlink]
qa/suites/fs/mirror/objectstore/bluestore-bitmap.yaml [new symlink]
qa/suites/fs/mirror/overrides/+ [new file with mode: 0644]
qa/suites/fs/mirror/overrides/.qa [new symlink]
qa/suites/fs/mirror/overrides/whitelist_health.yaml [new symlink]
qa/suites/fs/mirror/supported-random-distros$ [new symlink]
qa/suites/fs/mirror/tasks/.qa [new symlink]
qa/suites/fs/mirror/tasks/mirror.yaml [new file with mode: 0644]
qa/tasks/cephfs_mirror.py [new file with mode: 0644]

index d63591f974e7ddae61986c15d23495d363713aed..879294a1fdccf1895fd9374ff08bbd21e547ba33 100644 (file)
@@ -7,10 +7,12 @@ tasks:
         rpm:
         - python3-cephfs
         - cephfs-top
+        - cephfs-mirror
         deb:
         - python3-cephfs
         - cephfs-shell
         - cephfs-top
+        - cephfs-mirror
       # For kernel_untar_build workunit
       extra_system_packages:
         deb:
diff --git a/qa/suites/fs/mirror/% b/qa/suites/fs/mirror/%
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/qa/suites/fs/mirror/.qa b/qa/suites/fs/mirror/.qa
new file mode 120000 (symlink)
index 0000000..fea2489
--- /dev/null
@@ -0,0 +1 @@
+../.qa
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/begin.yaml b/qa/suites/fs/mirror/begin.yaml
new file mode 120000 (symlink)
index 0000000..311d404
--- /dev/null
@@ -0,0 +1 @@
+.qa/cephfs/begin.yaml
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/cephfs-mirror/+ b/qa/suites/fs/mirror/cephfs-mirror/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/qa/suites/fs/mirror/cephfs-mirror/one-per-cluster.yaml b/qa/suites/fs/mirror/cephfs-mirror/one-per-cluster.yaml
new file mode 100644 (file)
index 0000000..c355a9d
--- /dev/null
@@ -0,0 +1,5 @@
+meta:
+- desc: run one cephfs-mirror daemon on primary cluster
+tasks:
+- cephfs-mirror:
+    client: client.mirror
diff --git a/qa/suites/fs/mirror/clients/+ b/qa/suites/fs/mirror/clients/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/qa/suites/fs/mirror/clients/.qa b/qa/suites/fs/mirror/clients/.qa
new file mode 120000 (symlink)
index 0000000..fea2489
--- /dev/null
@@ -0,0 +1 @@
+../.qa
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/clients/mirror.yaml b/qa/suites/fs/mirror/clients/mirror.yaml
new file mode 100644 (file)
index 0000000..eb1ee5c
--- /dev/null
@@ -0,0 +1,18 @@
+meta:
+- desc: configure the permissions for client.mirror
+overrides:
+  ceph:
+    conf:
+      client:
+        debug cephfs_mirror: 20
+        log to stderr: false
+      # make these predictable
+      client.mirror:
+        admin socket: /var/run/ceph/cephfs-mirror.asok
+        pid file: /var/run/ceph/cephfs-mirror.pid
+tasks:
+- exec:
+    client.mirror:
+      - "sudo ceph auth caps client.mirror mon 'allow r' mds 'allow r' osd 'allow rw tag cephfs metadata=*, allow r tag cephfs data=*' mgr 'allow r'"
+    client.mirror_remote:
+      - "sudo ceph auth caps client.mirror_remote mon 'allow r' mds 'allow rwps' osd 'allow rw tag cephfs *=*' mgr 'allow r'"
diff --git a/qa/suites/fs/mirror/cluster/+ b/qa/suites/fs/mirror/cluster/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/qa/suites/fs/mirror/cluster/1-node.yaml b/qa/suites/fs/mirror/cluster/1-node.yaml
new file mode 100644 (file)
index 0000000..a9748e0
--- /dev/null
@@ -0,0 +1,17 @@
+meta:
+- desc: 1 ceph cluster with 1 mon, 1 mgr, 3 osds, 5 mdss
+roles:
+- - mon.a
+  - mgr.x
+  - mds.a
+  - mds.b
+  - mds.c
+  - mds.d
+  - mds.e
+  - osd.0
+  - osd.1
+  - osd.2
+  - client.0
+  - client.1
+  - client.mirror
+  - client.mirror_remote
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/mount/.qa b/qa/suites/fs/mirror/mount/.qa
new file mode 120000 (symlink)
index 0000000..fea2489
--- /dev/null
@@ -0,0 +1 @@
+../.qa
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/mount/fuse.yaml b/qa/suites/fs/mirror/mount/fuse.yaml
new file mode 100644 (file)
index 0000000..1fdf55a
--- /dev/null
@@ -0,0 +1,2 @@
+tasks:
+  - ceph-fuse: [client.0, client.1]
diff --git a/qa/suites/fs/mirror/objectstore/.qa b/qa/suites/fs/mirror/objectstore/.qa
new file mode 120000 (symlink)
index 0000000..fea2489
--- /dev/null
@@ -0,0 +1 @@
+../.qa
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/objectstore/bluestore-bitmap.yaml b/qa/suites/fs/mirror/objectstore/bluestore-bitmap.yaml
new file mode 120000 (symlink)
index 0000000..a59cf51
--- /dev/null
@@ -0,0 +1 @@
+.qa/objectstore/bluestore-bitmap.yaml
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/overrides/+ b/qa/suites/fs/mirror/overrides/+
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/qa/suites/fs/mirror/overrides/.qa b/qa/suites/fs/mirror/overrides/.qa
new file mode 120000 (symlink)
index 0000000..fea2489
--- /dev/null
@@ -0,0 +1 @@
+../.qa
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/overrides/whitelist_health.yaml b/qa/suites/fs/mirror/overrides/whitelist_health.yaml
new file mode 120000 (symlink)
index 0000000..3f8d0af
--- /dev/null
@@ -0,0 +1 @@
+./.qa/cephfs/overrides/whitelist_health.yaml
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/supported-random-distros$ b/qa/suites/fs/mirror/supported-random-distros$
new file mode 120000 (symlink)
index 0000000..0862b44
--- /dev/null
@@ -0,0 +1 @@
+.qa/distros/supported-random-distro$
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/tasks/.qa b/qa/suites/fs/mirror/tasks/.qa
new file mode 120000 (symlink)
index 0000000..fea2489
--- /dev/null
@@ -0,0 +1 @@
+../.qa
\ No newline at end of file
diff --git a/qa/suites/fs/mirror/tasks/mirror.yaml b/qa/suites/fs/mirror/tasks/mirror.yaml
new file mode 100644 (file)
index 0000000..af60495
--- /dev/null
@@ -0,0 +1,10 @@
+overrides:
+  ceph:
+    conf:
+      mgr:
+        debug client: 10
+
+tasks:
+  - cephfs_test_runner:
+      modules:
+        - tasks.cephfs.test_mirroring
diff --git a/qa/tasks/cephfs_mirror.py b/qa/tasks/cephfs_mirror.py
new file mode 100644 (file)
index 0000000..037f13e
--- /dev/null
@@ -0,0 +1,63 @@
+"""
+Task for running cephfs mirror daemons
+"""
+
+import logging
+
+from teuthology.orchestra import run
+from teuthology import misc
+from teuthology.exceptions import ConfigError
+from teuthology.task import Task
+from tasks.util import get_remote_for_role
+
+log = logging.getLogger(__name__)
+
+class CephFSMirror(Task):
+    def __init__(self, ctx, config):
+        super(CephFSMirror, self).__init__(ctx, config)
+        self.log = log
+
+    def setup(self):
+        super(CephFSMirror, self).setup()
+        try:
+            self.client = self.config['client']
+        except KeyError:
+            raise ConfigError('cephfs-mirror requires a client to connect')
+
+        self.cluster_name, type_, self.client_id = misc.split_role(self.client)
+        if not type_ == 'client':
+            raise ConfigError(f'client role {self.client} must be a client')
+        self.remote = get_remote_for_role(self.ctx, self.client)
+
+    def begin(self):
+        super(CephFSMirror, self).begin()
+        testdir = misc.get_testdir(self.ctx)
+
+        args = [
+            'adjust-ulimits',
+            'ceph-coverage',
+            '{tdir}/archive/coverage'.format(tdir=testdir),
+            'daemon-helper',
+            'term',
+            ]
+
+        args.extend([
+            'cephfs-mirror',
+            '--id',
+            self.client_id,
+            ])
+
+        self.ctx.daemons.add_daemon(
+            self.remote, 'cephfs-mirror', self.client,
+            args=args,
+            logger=self.log.getChild(self.client),
+            stdin=run.PIPE,
+            wait=False,
+        )
+
+    def end(self):
+        mirror_daemon = self.ctx.daemons.get_daemon('cephfs-mirror', self.client)
+        mirror_daemon.stop()
+        super(CephFSMirror, self).end()
+
+task = CephFSMirror