]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cephadm: fix escaping/quoting of stderr-prefix arg for ceph daemons 39730/head
authorSage Weil <sage@newdream.net>
Tue, 2 Mar 2021 16:35:41 +0000 (10:35 -0600)
committerSage Weil <sage@newdream.net>
Tue, 2 Mar 2021 16:35:41 +0000 (10:35 -0600)
On some versions of podman doing

   --default-log-stderr-prefix="debug "

seems to work okay, but on others it does not, producing lines like

   /usr/bin/ceph-mon: "debug "2021-02-26T15:30:36.266+0000 7f3d8a955700  4 rocksdb:                    Options.db_write_buffer_size: 0

Quote things properly for the unit.run bash script.

Signed-off-by: Sage Weil <sage@newdream.net>
src/cephadm/cephadm

index 8b6fabbf5b938dc472caf6679eb64719005a480c..cdd7e8a76a83ca8491c1eb6f16eb0f3021849546 100755 (executable)
@@ -59,6 +59,7 @@ import os
 import platform
 import pwd
 import random
+import shlex
 import shutil
 import socket
 import string
@@ -2068,7 +2069,7 @@ def get_daemon_args(ctx, fsid, daemon_type, daemon_id):
             '--setgroup', 'ceph',
             '--default-log-to-file=false',
             '--default-log-to-stderr=true',
-            '--default-log-stderr-prefix="debug "',
+            '--default-log-stderr-prefix=debug ',
         ]
         if daemon_type == 'mon':
             r += [
@@ -2592,10 +2593,15 @@ def _write_container_cmd_to_bash(ctx, file_obj, container, comment=None, backgro
     file_obj.write('! '+ ' '.join(container.rm_cmd()) + ' 2> /dev/null\n')
     # Sometimes, `podman rm` doesn't find the container. Then you'll have to add `--storage`
     if 'podman' in ctx.container_path:
-        file_obj.write('! '+ ' '.join(container.rm_cmd(storage=True)) + ' 2> /dev/null\n')
+        file_obj.write(
+            '! '
+            + ' '.join([shlex.quote(a) for a in container.rm_cmd(storage=True)])
+            + ' 2> /dev/null\n')
 
     # container run command
-    file_obj.write(' '.join(container.run_cmd()) + (' &' if background else '') + '\n')
+    file_obj.write(
+        ' '.join([shlex.quote(a) for a in container.run_cmd()])
+        + (' &' if background else '') + '\n')
 
 
 def deploy_daemon_units(