diff --git a/qa/suites/upgrade/jewel-x/parallel/1-jewel-install/jewel.yaml b/qa/suites/upgrade/jewel-x/parallel/1-jewel-install/jewel.yaml index 61b6f81f352bb..d90dc18b5be02 100644 --- a/qa/suites/upgrade/jewel-x/parallel/1-jewel-install/jewel.yaml +++ b/qa/suites/upgrade/jewel-x/parallel/1-jewel-install/jewel.yaml @@ -11,6 +11,10 @@ tasks: - ceph: skip_mgr_daemons: true add_osds_to_crush: true + log-whitelist: + - overall HEALTH_ + - (FS_ + - (MDS_ - print: "**** done ceph" - install.upgrade: mon.a: diff --git a/qa/suites/upgrade/jewel-x/point-to-point-x/point-to-point-upgrade.yaml b/qa/suites/upgrade/jewel-x/point-to-point-x/point-to-point-upgrade.yaml index 67d57f7b3f361..d690682930aa1 100644 --- a/qa/suites/upgrade/jewel-x/point-to-point-x/point-to-point-upgrade.yaml +++ b/qa/suites/upgrade/jewel-x/point-to-point-x/point-to-point-upgrade.yaml @@ -80,6 +80,9 @@ tasks: - workload_x - upgrade-sequence_x - print: "**** done parallel -x branch" +- exec: + osd.0: + - ceph osd set-require-min-compat-client luminous # Run librados tests on the -x upgraded cluster - install.upgrade: client.1: @@ -221,6 +224,5 @@ upgrade-sequence_x: - exec: osd.0: - ceph osd require-osd-release luminous - - ceph osd set-require-min-compat-client luminous - ceph.healthy: - print: "**** done ceph.restart all -x branch mds/osd/mon" diff --git a/qa/suites/upgrade/jewel-x/stress-split-erasure-code/thrashosds-health.yaml b/qa/suites/upgrade/jewel-x/stress-split-erasure-code/thrashosds-health.yaml new file mode 120000 index 0000000000000..e0426dbe49935 --- /dev/null +++ b/qa/suites/upgrade/jewel-x/stress-split-erasure-code/thrashosds-health.yaml @@ -0,0 +1 @@ +../../../../tasks/thrashosds-health.yaml \ No newline at end of file diff --git a/qa/suites/upgrade/jewel-x/stress-split/thrashosds-health.yaml b/qa/suites/upgrade/jewel-x/stress-split/thrashosds-health.yaml new file mode 120000 index 0000000000000..e0426dbe49935 --- /dev/null +++ b/qa/suites/upgrade/jewel-x/stress-split/thrashosds-health.yaml @@ -0,0 +1 @@ +../../../../tasks/thrashosds-health.yaml \ No newline at end of file diff --git a/qa/tasks/ceph.py b/qa/tasks/ceph.py index 5318643d27a55..5fe19c1ed1f8a 100644 --- a/qa/tasks/ceph.py +++ b/qa/tasks/ceph.py @@ -1110,6 +1110,9 @@ def run_daemon(ctx, config, type_): if config.get('coverage') or config.get('valgrind') is not None: daemon_signal = 'term' + # create osds in order. (this only matters for pre-luminous, which might + # be hammer, which doesn't take an id_ argument to legacy 'osd create'). + osd_uuids = {} for remote, roles_for_host in daemons.remotes.iteritems(): is_type_ = teuthology.is_type(type_, cluster_name) for role in roles_for_host: @@ -1117,6 +1120,7 @@ def run_daemon(ctx, config, type_): continue _, _, id_ = teuthology.split_role(role) + if type_ == 'osd': datadir='/var/lib/ceph/osd/{cluster}-{id}'.format( cluster=cluster_name, id=id_) @@ -1125,29 +1129,40 @@ def run_daemon(ctx, config, type_): path=datadir + '/fsid', sudo=True, ).strip() - try: - remote.run( - args=[ - 'sudo', 'ceph', '--cluster', cluster_name, - 'osd', 'new', osd_uuid, id_, - ] - ) - except: - # fallback to pre-luminous (hammer or jewel) - remote.run( - args=[ - 'sudo', 'ceph', '--cluster', cluster_name, - 'osd', 'create', osd_uuid, - ] - ) - if config.get('add_osds_to_crush'): - remote.run( - args=[ - 'sudo', 'ceph', '--cluster', cluster_name, - 'osd', 'crush', 'create-or-move', 'osd.' + id_, - '1.0', 'host=localhost', 'root=default', - ] - ) + osd_uuids[id_] = osd_uuid + for osd_id in range(len(osd_uuids)): + id_ = str(osd_id) + osd_uuid = osd_uuids.get(id_) + try: + remote.run( + args=[ + 'sudo', 'ceph', '--cluster', cluster_name, + 'osd', 'new', osd_uuid, id_, + ] + ) + except: + # fallback to pre-luminous (hammer or jewel) + remote.run( + args=[ + 'sudo', 'ceph', '--cluster', cluster_name, + 'osd', 'create', osd_uuid, + ] + ) + if config.get('add_osds_to_crush'): + remote.run( + args=[ + 'sudo', 'ceph', '--cluster', cluster_name, + 'osd', 'crush', 'create-or-move', 'osd.' + id_, + '1.0', 'host=localhost', 'root=default', + ] + ) + + for remote, roles_for_host in daemons.remotes.iteritems(): + is_type_ = teuthology.is_type(type_, cluster_name) + for role in roles_for_host: + if not is_type_(role): + continue + _, _, id_ = teuthology.split_role(role) run_cmd = [ 'sudo',