Ensure OSD checks in before completing

Avoids issues where the new OSD doesn't check in; at least the
administrator will know.

Also fixes some issues with osd_db in removal.
This commit is contained in:
Joshua Boniface 2023-11-09 23:51:05 -05:00
parent d7ea705e31
commit 07026efb63
1 changed files with 27 additions and 4 deletions

View File

@ -1106,7 +1106,7 @@ def osd_worker_add_osd(
split_count=None, split_count=None,
): ):
current_stage = 0 current_stage = 0
total_stages = 4 total_stages = 5
if split_count is None: if split_count is None:
_split_count = 1 _split_count = 1
else: else:
@ -1398,7 +1398,30 @@ def osd_worker_add_osd(
] ]
) )
# 6. Log it # 6. Wait for OSD to check in
current_stage += 1
update(
celery,
"Waiting for new OSD(s) to report stats",
current=current_stage,
total=total_stages,
)
last_osd = None
for osd in created_osds:
last_osd = osd
while (
jloads(
zkhandler.read(
("osd.stats", created_osds[last_osd][0]["tags"]["ceph.osd_id"])
)
)["weight"]
== "|"
):
time.sleep(1)
# 7. Log it
current_stage += 1 current_stage += 1
return finish( return finish(
celery, celery,
@ -2020,7 +2043,7 @@ def osd_worker_remove_osd(
total_stages += 1 total_stages += 1
if not skip_zap_flag: if not skip_zap_flag:
total_stages += 2 total_stages += 2
if db_device is not None: if db_device:
total_stages += 1 total_stages += 1
start( start(
@ -2243,7 +2266,7 @@ def osd_worker_remove_osd(
) )
# 6. Remove the DB device # 6. Remove the DB device
if db_device is not None: if db_device:
current_stage += 1 current_stage += 1
update( update(
celery, celery,