Signed-off-by: Lucas Meneghel Rodrigues <[email protected]>
---
client/virt/syslog_server.py | 177 ++++++++++++++++++++++++++++++++
client/virt/tests/unattended_install.py | 6 +-
client/virt/virt_syslog_server.py | 177 --------------------------------
3 files changed, 180 insertions(+), 180 deletions(-)
create mode 100644 client/virt/syslog_server.py
delete mode 100644 client/virt/virt_syslog_server.py
diff --git a/client/virt/syslog_server.py b/client/virt/syslog_server.py
new file mode 100644
index 0000000..9b926a6
--- /dev/null
+++ b/client/virt/syslog_server.py
@@ -0,0 +1,177 @@
+import os, re, logging, SocketServer
+
+
+SYSLOG_PORT = 514
+DEFAULT_FORMAT = '[AutotestSyslog (%s.%s)] %s'
+
+
+def set_default_format(message_format):
+ '''
+ Changes the default message format
+
+ @type message_format: string
+ @param message_format: a message format string with 3 placeholders:
+ facility, priority and message.
+ '''
+ global DEFAULT_FORMAT
+ DEFAULT_FORMAT = message_format
+
+
+def get_default_format():
+ '''
+ Returns the current default message format
+ '''
+ return DEFAULT_FORMAT
+
+
+class RequestHandler(SocketServer.BaseRequestHandler):
+ '''
+ A request handler that relays all received messages as DEBUG
+ '''
+
+ RECORD_RE = re.compile('\<(\d+)\>(.*)')
+
+ (LOG_EMERG,
+ LOG_ALERT,
+ LOG_CRIT,
+ LOG_ERR,
+ LOG_WARNING,
+ LOG_NOTICE,
+ LOG_INFO,
+ LOG_DEBUG) = range(8)
+
+ (LOG_KERN,
+ LOG_USER,
+ LOG_MAIL,
+ LOG_DAEMON,
+ LOG_AUTH,
+ LOG_SYSLOG,
+ LOG_LPR,
+ LOG_NEWS,
+ LOG_UUCP,
+ LOG_CRON,
+ LOG_AUTHPRIV,
+ LOG_FTP) = range(12)
+
+ (LOG_LOCAL0,
+ LOG_LOCAL1,
+ LOG_LOCAL2,
+ LOG_LOCAL3,
+ LOG_LOCAL4,
+ LOG_LOCAL5,
+ LOG_LOCAL6,
+ LOG_LOCAL7) = range(16, 24)
+
+ PRIORITY_NAMES = {
+ LOG_ALERT : "alert",
+ LOG_CRIT : "critical",
+ LOG_DEBUG : "debug",
+ LOG_EMERG : "emerg",
+ LOG_ERR : "err",
+ LOG_INFO : "info",
+ LOG_NOTICE : "notice",
+ LOG_WARNING: "warning"
+ }
+
+ FACILITY_NAMES = {
+ LOG_AUTH : "auth",
+ LOG_AUTHPRIV : "authpriv",
+ LOG_CRON : "cron",
+ LOG_DAEMON : "daemon",
+ LOG_FTP : "ftp",
+ LOG_KERN : "kern",
+ LOG_LPR : "lpr",
+ LOG_MAIL : "mail",
+ LOG_NEWS : "news",
+ LOG_AUTH : "security",
+ LOG_SYSLOG : "syslog",
+ LOG_USER : "user",
+ LOG_UUCP : "uucp",
+ LOG_LOCAL0 : "local0",
+ LOG_LOCAL1 : "local1",
+ LOG_LOCAL2 : "local2",
+ LOG_LOCAL3 : "local3",
+ LOG_LOCAL4 : "local4",
+ LOG_LOCAL5 : "local5",
+ LOG_LOCAL6 : "local6",
+ LOG_LOCAL7 : "local7",
+ }
+
+
+ def decodeFacilityPriority(self, priority):
+ '''
+ Decode both the facility and priority embedded in a syslog message
+
+ @type priority: integer
+ @param priority: an integer with facility and priority encoded
+ @return: a tuple with two strings
+ '''
+ f = priority >> 3
+ p = priority & 7
+ return (self.FACILITY_NAMES.get(f, 'unknown'),
+ self.PRIORITY_NAMES.get(p, 'unknown'))
+
+
+ def log(self, data, message_format=None):
+ '''
+ Logs the received message as a DEBUG message
+ '''
+ match = self.RECORD_RE.match(data)
+ if match:
+ if message_format is None:
+ message_format = get_default_format()
+ pri = int(match.groups()[0])
+ msg = match.groups()[1]
+ (facility_name, priority_name) = self.decodeFacilityPriority(pri)
+ logging.debug(message_format, facility_name, priority_name, msg)
+
+
+class RequestHandlerTcp(RequestHandler):
+ def handle(self):
+ '''
+ Handles a single request
+ '''
+ data = self.request.recv(4096)
+ self.log(data)
+
+
+class RequestHandlerUdp(RequestHandler):
+ def handle(self):
+ '''
+ Handles a single request
+ '''
+ data = self.request[0]
+ self.log(data)
+
+
+class SysLogServerUdp(SocketServer.UDPServer):
+ def __init__(self, address):
+ SocketServer.UDPServer.__init__(self, address, RequestHandlerUdp)
+
+
+class SysLogServerTcp(SocketServer.TCPServer):
+ def __init__(self, address):
+ SocketServer.TCPServer.__init__(self, address, RequestHandlerTcp)
+
+
+def syslog_server(address='', port=SYSLOG_PORT,
+ tcp=True, terminate_callable=None):
+ if tcp:
+ klass = SysLogServerTcp
+ else:
+ klass = SysLogServerUdp
+ syslog = klass((address, port))
+
+ while True:
+ if terminate_callable is not None:
+ terminate = terminate_callable()
+ else:
+ terminate = False
+
+ if not terminate:
+ syslog.handle_request()
+
+
+if __name__ == '__main__':
+ logging.basicConfig(level=logging.DEBUG)
+ syslog_server()
diff --git a/client/virt/tests/unattended_install.py
b/client/virt/tests/unattended_install.py
index ec53028..eb83324 100644
--- a/client/virt/tests/unattended_install.py
+++ b/client/virt/tests/unattended_install.py
@@ -4,7 +4,7 @@ import xml.dom.minidom
from autotest.client.shared import error, iso9660
from autotest.client import utils
from autotest.client.virt import virt_vm, virt_utils, virt_utils_disk
-from autotest.client.virt import kvm_monitor, remote, virt_syslog_server
+from autotest.client.virt import kvm_monitor, remote, syslog_server
from autotest.client.virt import http_server
@@ -746,13 +746,13 @@ def start_syslog_server_thread(address, port, tcp):
global _syslog_server_thread
global _syslog_server_thread_event
- virt_syslog_server.set_default_format('[UnattendedSyslog '
+ syslog_server.set_default_format('[UnattendedSyslog '
'(%s.%s)] %s')
if _syslog_server_thread is None:
_syslog_server_thread_event = threading.Event()
_syslog_server_thread = threading.Thread(
- target=virt_syslog_server.syslog_server,
+ target=syslog_server.syslog_server,
args=(address, port, tcp, terminate_syslog_server_thread))
_syslog_server_thread.start()
diff --git a/client/virt/virt_syslog_server.py
b/client/virt/virt_syslog_server.py
deleted file mode 100644
index 9b926a6..0000000
--- a/client/virt/virt_syslog_server.py
+++ /dev/null
@@ -1,177 +0,0 @@
-import os, re, logging, SocketServer
-
-
-SYSLOG_PORT = 514
-DEFAULT_FORMAT = '[AutotestSyslog (%s.%s)] %s'
-
-
-def set_default_format(message_format):
- '''
- Changes the default message format
-
- @type message_format: string
- @param message_format: a message format string with 3 placeholders:
- facility, priority and message.
- '''
- global DEFAULT_FORMAT
- DEFAULT_FORMAT = message_format
-
-
-def get_default_format():
- '''
- Returns the current default message format
- '''
- return DEFAULT_FORMAT
-
-
-class RequestHandler(SocketServer.BaseRequestHandler):
- '''
- A request handler that relays all received messages as DEBUG
- '''
-
- RECORD_RE = re.compile('\<(\d+)\>(.*)')
-
- (LOG_EMERG,
- LOG_ALERT,
- LOG_CRIT,
- LOG_ERR,
- LOG_WARNING,
- LOG_NOTICE,
- LOG_INFO,
- LOG_DEBUG) = range(8)
-
- (LOG_KERN,
- LOG_USER,
- LOG_MAIL,
- LOG_DAEMON,
- LOG_AUTH,
- LOG_SYSLOG,
- LOG_LPR,
- LOG_NEWS,
- LOG_UUCP,
- LOG_CRON,
- LOG_AUTHPRIV,
- LOG_FTP) = range(12)
-
- (LOG_LOCAL0,
- LOG_LOCAL1,
- LOG_LOCAL2,
- LOG_LOCAL3,
- LOG_LOCAL4,
- LOG_LOCAL5,
- LOG_LOCAL6,
- LOG_LOCAL7) = range(16, 24)
-
- PRIORITY_NAMES = {
- LOG_ALERT : "alert",
- LOG_CRIT : "critical",
- LOG_DEBUG : "debug",
- LOG_EMERG : "emerg",
- LOG_ERR : "err",
- LOG_INFO : "info",
- LOG_NOTICE : "notice",
- LOG_WARNING: "warning"
- }
-
- FACILITY_NAMES = {
- LOG_AUTH : "auth",
- LOG_AUTHPRIV : "authpriv",
- LOG_CRON : "cron",
- LOG_DAEMON : "daemon",
- LOG_FTP : "ftp",
- LOG_KERN : "kern",
- LOG_LPR : "lpr",
- LOG_MAIL : "mail",
- LOG_NEWS : "news",
- LOG_AUTH : "security",
- LOG_SYSLOG : "syslog",
- LOG_USER : "user",
- LOG_UUCP : "uucp",
- LOG_LOCAL0 : "local0",
- LOG_LOCAL1 : "local1",
- LOG_LOCAL2 : "local2",
- LOG_LOCAL3 : "local3",
- LOG_LOCAL4 : "local4",
- LOG_LOCAL5 : "local5",
- LOG_LOCAL6 : "local6",
- LOG_LOCAL7 : "local7",
- }
-
-
- def decodeFacilityPriority(self, priority):
- '''
- Decode both the facility and priority embedded in a syslog message
-
- @type priority: integer
- @param priority: an integer with facility and priority encoded
- @return: a tuple with two strings
- '''
- f = priority >> 3
- p = priority & 7
- return (self.FACILITY_NAMES.get(f, 'unknown'),
- self.PRIORITY_NAMES.get(p, 'unknown'))
-
-
- def log(self, data, message_format=None):
- '''
- Logs the received message as a DEBUG message
- '''
- match = self.RECORD_RE.match(data)
- if match:
- if message_format is None:
- message_format = get_default_format()
- pri = int(match.groups()[0])
- msg = match.groups()[1]
- (facility_name, priority_name) = self.decodeFacilityPriority(pri)
- logging.debug(message_format, facility_name, priority_name, msg)
-
-
-class RequestHandlerTcp(RequestHandler):
- def handle(self):
- '''
- Handles a single request
- '''
- data = self.request.recv(4096)
- self.log(data)
-
-
-class RequestHandlerUdp(RequestHandler):
- def handle(self):
- '''
- Handles a single request
- '''
- data = self.request[0]
- self.log(data)
-
-
-class SysLogServerUdp(SocketServer.UDPServer):
- def __init__(self, address):
- SocketServer.UDPServer.__init__(self, address, RequestHandlerUdp)
-
-
-class SysLogServerTcp(SocketServer.TCPServer):
- def __init__(self, address):
- SocketServer.TCPServer.__init__(self, address, RequestHandlerTcp)
-
-
-def syslog_server(address='', port=SYSLOG_PORT,
- tcp=True, terminate_callable=None):
- if tcp:
- klass = SysLogServerTcp
- else:
- klass = SysLogServerUdp
- syslog = klass((address, port))
-
- while True:
- if terminate_callable is not None:
- terminate = terminate_callable()
- else:
- terminate = False
-
- if not terminate:
- syslog.handle_request()
-
-
-if __name__ == '__main__':
- logging.basicConfig(level=logging.DEBUG)
- syslog_server()
--
1.7.11.2
_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel