]> git-server-git.apps.pok.os.sepia.ceph.com Git - teuthology.git/commitdiff
daemon-helper: send arbitrary signals via stdin
authorSage Weil <sage@inktank.com>
Sat, 6 Jul 2013 01:01:57 +0000 (18:01 -0700)
committerSage Weil <sage@inktank.com>
Mon, 8 Jul 2013 17:44:24 +0000 (10:44 -0700)
Each byte written to stdin will be interpreted as a signal.

Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit fdebf40f342d368efee7d9bdf8d0cbf1d489f097)

teuthology/task/ceph.py
teuthology/task/daemon-helper

index 223f1374fe80f6918dd3d9ce45594a83601136a6..7fab0adf1f9333f15f25cf3306fedb0268b1dfbb 100644 (file)
@@ -4,6 +4,7 @@ import argparse
 import contextlib
 import logging
 import os
+import struct
 
 from teuthology import misc as teuthology
 from teuthology import contextutil
@@ -63,6 +64,9 @@ class DaemonState(object):
         self.proc = self.remote.run(*cmd_args, **cmd_kwargs)
         self.log.info('Started')
 
+    def signal(self, sig):
+        self.proc.stdin.write(struct.pack('!b', sig))
+        self.log.info('Sent signal %d', sig)
 
     def running(self):
         return self.proc is not None
index c289d44fc00db1c495238beca68674f672447c66..12873a82fa43203aa5a9f581c06a3b72f35d8b6f 100755 (executable)
@@ -18,6 +18,7 @@ import fcntl
 import os
 import select
 import signal
+import struct
 import subprocess
 import sys
 
@@ -43,6 +44,9 @@ while True:
             saw_eof = True
             proc.send_signal(end_signal)
             break
+        else:
+            sig, = struct.unpack('!b', data)
+            proc.send_signal(sig)
 
     if proc.poll() is not None:
         # child exited