Add --purge option to lavapdu-listen

The --purge option will clear the request queue and exit

Change-Id: Iace0b13abf38ef7529ec2e7c4cc0e0147212af4f
diff --git a/lavapdu-listen b/lavapdu-listen
index be887a0..ec820ba 100755
--- a/lavapdu-listen
+++ b/lavapdu-listen
@@ -47,6 +47,7 @@
                       type="string", help="log file [%s]" % logfile)
     parser.add_option("--loglevel", dest="loglevel", action="store",
                       type="string", help="logging level [INFO]")
+    parser.add_option("--purge", dest="purge", action="store_true")
     (options, args) = parser.parse_args()
     if options.logfile:
         if os.path.exists(os.path.dirname(options.logfile)):
@@ -83,6 +84,8 @@
         files_preserve=[watched_file_handler.stream],
         stderr=watched_file_handler.stream,
         stdout=watched_file_handler.stream)
+    if options.purge:
+        settings["purge"] = True
     with context:
         logging.info("Running LAVA PDU Listener %s %s %d."
                      % (logfile,
diff --git a/lavapdu/dbhandler.py b/lavapdu/dbhandler.py
index 5526e1b..cc9e783 100644
--- a/lavapdu/dbhandler.py
+++ b/lavapdu/dbhandler.py
@@ -71,6 +71,11 @@
     def get_res(self, sql):
         return self.cursor.execute(sql)
 
+    def purge(self):
+        log.debug("Purging all jobs from database")
+        self.do_sql("delete from pdu_queue")
+        self.close()
+
     def get_next_job(self, single_pdu=False):
         now = int(time.time())
         extra_sql = ""
diff --git a/lavapdu/socketserver.py b/lavapdu/socketserver.py
index 2d93367..b5c5668 100644
--- a/lavapdu/socketserver.py
+++ b/lavapdu/socketserver.py
@@ -22,6 +22,8 @@
 import logging
 import socket
 import time
+import sys
+import os
 from lavapdu.dbhandler import DBHandler
 from lavapdu.shared import drivername_from_hostname
 log = logging.getLogger(__name__)
@@ -35,6 +37,9 @@
         listen_host = settings["hostname"]
         listen_port = settings["port"]
         log.debug("ListenerServer __init__")
+        if "purge" in config:
+            self.server.dbh.purge()
+            sys.exit(os.EX_OK)
         log.info("listening on %s:%s", listen_host, listen_port)
 
         self.server = TCPServer((listen_host, listen_port), TCPRequestHandler)
@@ -42,6 +47,7 @@
         self.server.config = config
         self.server.dbh = DBHandler(settings)
 
+
     def start(self):
         log.info("Starting the ListenerServer")
         self.server.serve_forever()