There are scenarios where the wrong spec is applied to the wrong OSDs,
likely due to some unknown process interruption or corruption of cache
data, to mitigate this issue I added a check for OSDs service_id to match
the spec service_id.
Fixes: https://tracker.ceph.com/issues/74885
Signed-off-by: Timothy Q Nguyen <timqn22@gmail.com>
if osd['tags']['ceph.cluster_fsid'] != fsid:
logger.debug('mismatched fsid, skipping %s' % osd)
continue
+ if osd['tags']['ceph.osdspec_affinity'] != spec.service_id:
+ logger.debug('mismatched service id, skipping %s' % osd)
+ continue
if osd_id in before_osd_uuid_map and osd_id not in replace_osd_ids:
# if it exists but is part of the replacement operation, don't skip
continue