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 <artur.fijalkowski@ing.com>
(cherry picked from commit 52d9d406b1)
pull/2977/head
Artur Fijalkowski 2018-08-02 13:28:44 +02:00 committed by mergify[bot]
parent 706d0b8289
commit 290035171f
1 changed files with 3 additions and 3 deletions

View File

@ -60,8 +60,8 @@ get_docker_osd_id() {
} }
# For containerized deployments, the unit file looks like: ceph-osd@sda.service # 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 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,2}|[a-z]+).service"); do 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) # First, restart daemon(s)
systemctl restart "${unit}" systemctl restart "${unit}"
# We need to wait because it may take some time for the socket to actually exists # We need to wait because it may take some time for the socket to actually exists
@ -74,7 +74,7 @@ for unit in $(systemctl list-units | grep -E "loaded * active" | grep -oE "ceph-
osd_id=$whoami osd_id=$whoami
docker_exec="docker exec $container_id" docker_exec="docker exec $container_id"
{% else %} {% 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 %} {% endif %}
SOCKET=/var/run/ceph/{{ cluster }}-osd.${osd_id}.asok SOCKET=/var/run/ceph/{{ cluster }}-osd.${osd_id}.asok
while [ $COUNT -ne 0 ]; do while [ $COUNT -ne 0 ]; do