ceph osd crush tree --show-shadow | grep -q '~ccc' || return 1
ceph osd crush rm-device-class 0 || return 1
ceph osd tree | grep -q 'aaa' && return 1
- ceph osd crush dump | grep -q '~aaa' && return 1
- ceph osd crush tree --show-shadow | grep -q '~aaa' && return 1
- ceph osd crush class ls | grep -q 'aaa' && return 1
+ ceph osd crush class ls | grep -q 'aaa' || return 1
ceph osd crush rm-device-class 1 || return 1
ceph osd tree | grep -q 'bbb' && return 1
- ceph osd crush dump | grep -q '~bbb' && return 1
- ceph osd crush tree --show-shadow | grep -q '~bbb' && return 1
- ceph osd crush class ls | grep -q 'bbb' && return 1
+ ceph osd crush class ls | grep -q 'bbb' || return 1
ceph osd crush rm-device-class 2 || return 1
ceph osd tree | grep -q 'ccc' && return 1
- ceph osd crush dump | grep -q '~ccc' && return 1
- ceph osd crush tree --show-shadow | grep -q '~ccc' && return 1
- ceph osd crush class ls | grep -q 'ccc' && return 1
+ ceph osd crush class ls | grep -q 'ccc' || return 1
ceph osd crush set-device-class asdf all || return 1
ceph osd tree | grep -q 'asdf' || return 1
ceph osd crush dump | grep -q '~asdf' || return 1
ceph osd crush tree --show-shadow | grep -q '~asdf' || return 1
ceph osd crush rm-device-class all || return 1
ceph osd tree | grep -q 'asdf' && return 1
- ceph osd crush dump | grep -q '~asdf' && return 1
- ceph osd crush tree --show-shadow | grep -q '~asdf' && return 1
# test 'class rm' automatically recycles shadow trees
ceph osd crush set-device-class asdf 0 1 2 || return 1
ceph osd crush dump | grep -q 'foo-host~abc' || return 1
ceph osd crush tree --show-shadow | grep -q 'foo-host~abc' || return 1
ceph osd crush rm-device-class osd.2 || return 1
- ceph osd crush dump | grep -q 'foo~abc' && return 1
- ceph osd crush tree --show-shadow | grep -q 'foo~abc' && return 1
- ceph osd crush dump | grep -q 'foo-rack~abc' && return 1
- ceph osd crush tree --show-shadow | grep -q 'foo-rack~abc' && return 1
- ceph osd crush dump | grep -q 'foo-host~abc' && return 1
- ceph osd crush tree --show-shadow | grep -q 'foo-host~abc' && return 1
# restore class, so we can continue to test create-replicated
ceph osd crush set-device-class abc osd.2 || return 1
}
class_remove_item(id);
- // note that there is no need to remove ourselves from shadow parent
- // and reweight because we are going to destroy all shadow trees
- // rebuild them all (if necessary) later.
-
- // see if there is any osds that still reference this class
- set<int> devices;
- get_devices_by_class(class_name, &devices);
- if (devices.empty()) {
- // class has no more devices
- remove_class_name(class_name);
- }
-
int r = rebuild_roots_with_classes();
if (r < 0) {
*ss << "unable to rebuild roots with class '" << class_name << "' "