From 25b9dedd0dd86a1437ab3b09a95d648917deb2d5 Mon Sep 17 00:00:00 2001 From: Artur Fijalkowski Date: Thu, 2 Aug 2018 13:28:44 +0200 Subject: [PATCH] Fix in regular expression matching OSD ID on non-contenerized deployment. restart_osd_daemon.sh is used to discover and restart all OSDs on a host. To do it the scripts loops the list of ceph-osd@ services in the system. This commit fixes bug in the regular expression responsile for extraction of OSDs - prior version uses `[0-9]{1,2}` expression which is ignoring all OSDS which numbers are greater than 99 (thus longer than 2 digits). Fix removed upper limit of digits in the number. This problem existed in two places in the script. Closes: #2964 Signed-off-by: Artur Fijalkowski (cherry picked from commit 52d9d406b107c4926b582905b3d442feabf1fafc) --- roles/ceph-defaults/templates/restart_osd_daemon.sh.j2 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/ceph-defaults/templates/restart_osd_daemon.sh.j2 b/roles/ceph-defaults/templates/restart_osd_daemon.sh.j2 index 59ff25970..0ca0b1958 100644 --- a/roles/ceph-defaults/templates/restart_osd_daemon.sh.j2 +++ b/roles/ceph-defaults/templates/restart_osd_daemon.sh.j2 @@ -55,8 +55,8 @@ get_docker_osd_id() { } # For containerized deployments, the unit file looks like: ceph-osd@sda.service -# For non-containerized deployments, the unit file looks like: ceph-osd@0.service -for unit in $(systemctl list-units | grep -E "loaded * active" | grep -oE "ceph-osd@([0-9]{1,2}|[a-z]+).service"); do +# For non-containerized deployments, the unit file looks like: ceph-osd@NNN.service where NNN is OSD ID +for unit in $(systemctl list-units | grep -E "loaded * active" | grep -oE "ceph-osd@([0-9]{1,}|[a-z]+).service"); do # First, restart daemon(s) systemctl restart "${unit}" # We need to wait because it may take some time for the socket to actually exists @@ -68,7 +68,7 @@ for unit in $(systemctl list-units | grep -E "loaded * active" | grep -oE "ceph- osd_id=$(get_docker_osd_id "$container_id") docker_exec="docker exec $container_id" {% else %} - osd_id=$(echo ${unit#ceph-osd@} | grep -oE '[0-9]{1,2}') + osd_id=$(echo ${unit#ceph-osd@} | grep -oE '[0-9]{1,}') {% endif %} SOCKET=/var/run/ceph/{{ cluster }}-osd.${osd_id}.asok while [ $COUNT -ne 0 ]; do -- 2.39.5