PEP8? More like PEP-hate...

PyLint: --disable=duplicate-code,locally-disabled,
          missing-docstring,too-few-public-methods,invalid-name

Change-Id: I207c4b303cc78a88b42a44d976d7f4ae4f5ab445
diff --git a/lavapdu-listen b/lavapdu-listen
index c8e08ff..be887a0 100755
--- a/lavapdu-listen
+++ b/lavapdu-listen
@@ -19,13 +19,11 @@
 #  MA 02110-1301, USA.
 
 import logging
-import json
 import os
 import sys
 import optparse
-from logging.handlers import WatchedFileHandler
-from lavapdu.shared import getDaemonLogger
-from lavapdu.shared import readSettings
+from lavapdu.shared import get_daemon_logger
+from lavapdu.shared import read_settings
 
 import daemon
 try:
@@ -37,14 +35,13 @@
 
 
 if __name__ == '__main__':
-    # instance settings come from django - the coordinator doesn't use django and is
-    # not necessarily per-instance, so use the command line and a default conf file.
     pidfile = "/var/run/lavapdu-listen.pid"
     logfile = "/var/log/lavapdu-listener.log"
     conffile = "/etc/lavapdu/lavapdu.conf"
-    settings = readSettings(conffile)
+    settings = read_settings(conffile)
     usage = "Usage: %prog [--logfile] --[loglevel]"
-    description = "LAVA PDU request listener server, host and port are handled in %s" % conffile
+    description = "LAVA PDU request listener server," \
+                  "host and port are handled in %s" % conffile
     parser = optparse.OptionParser(usage=usage, description=description)
     parser.add_option("--logfile", dest="logfile", action="store",
                       type="string", help="log file [%s]" % logfile)
@@ -67,8 +64,10 @@
         level = logging.ERROR
     if daemon_settings["logging_level"] == "INFO":
         level = logging.INFO
-    client_logger, watched_file_handler = getDaemonLogger(logfile, loglevel=level,
-                                                          log_format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')
+    client_logger, watched_file_handler = get_daemon_logger(
+        logfile,
+        loglevel=level,
+        log_format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')
     if isinstance(client_logger, Exception):
         print("Fatal error creating client_logger: " + str(client_logger))
         sys.exit(os.EX_OSERR)
@@ -86,5 +85,7 @@
         stdout=watched_file_handler.stream)
     with context:
         logging.info("Running LAVA PDU Listener %s %s %d."
-                     % (logfile, daemon_settings['hostname'], daemon_settings['port']))
+                     % (logfile,
+                        daemon_settings['hostname'],
+                        daemon_settings['port']))
         ListenerServer(settings).start()
diff --git a/lavapdu-runner b/lavapdu-runner
index 463db1d..fea53e8 100755
--- a/lavapdu-runner
+++ b/lavapdu-runner
@@ -19,13 +19,11 @@
 #  MA 02110-1301, USA.
 
 import logging
-import json
 import os
 import sys
 import optparse
-from logging.handlers import WatchedFileHandler
-from lavapdu.shared import getDaemonLogger
-from lavapdu.shared import readSettings
+from lavapdu.shared import get_daemon_logger
+from lavapdu.shared import read_settings
 
 import daemon
 try:
@@ -37,14 +35,13 @@
 
 
 if __name__ == '__main__':
-    # instance settings come from django - the coordinator doesn't use django and is
-    # not necessarily per-instance, so use the command line and a default conf file.
     pidfile = "/var/run/lavapdu-runner.pid"
     logfile = "/var/log/lavapdu-runner.log"
     conffile = "/etc/lavapdu/lavapdu.conf"
-    settings = readSettings(conffile)
+    settings = read_settings(conffile)
     usage = "Usage: %prog [--logfile] --[loglevel]"
-    description = "LAVA PDU request listener server, host and port are handled in %s" % conffile
+    description = "LAVA PDU request listener server, " \
+                  "host and port are handled in %s" % conffile
     parser = optparse.OptionParser(usage=usage, description=description)
     parser.add_option("--logfile", dest="logfile", action="store",
                       type="string", help="log file [%s]" % logfile)
@@ -67,8 +64,10 @@
         level = logging.ERROR
     if daemon_settings["logging_level"] == "INFO":
         level = logging.INFO
-    client_logger, watched_file_handler = getDaemonLogger(logfile, loglevel=level,
-                                                          log_format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')
+    client_logger, watched_file_handler = get_daemon_logger(
+        logfile,
+        loglevel=level,
+        log_format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')
     if isinstance(client_logger, Exception):
         print("Fatal error creating client_logger: " + str(client_logger))
         sys.exit(os.EX_OSERR)
diff --git a/lavapdu/dbhandler.py b/lavapdu/dbhandler.py
index 1154fb7..7b0364b 100644
--- a/lavapdu/dbhandler.py
+++ b/lavapdu/dbhandler.py
@@ -22,21 +22,24 @@
 import psycopg2
 import time
 
+
 class DBHandler(object):
     def __init__(self, config):
-        logging.debug("Creating new DBHandler: %s" % config["dbhost"])
+        logging.debug("Creating new DBHandler: %s", config["dbhost"])
         logging.getLogger().name = "DBHandler"
-        self.conn = psycopg2.connect(database=config["dbname"], user=config["dbuser"],
-                                     password=config["dbpass"], host=config["dbhost"])
+        self.conn = psycopg2.connect(database=config["dbname"],
+                                     user=config["dbuser"],
+                                     password=config["dbpass"],
+                                     host=config["dbhost"])
         self.cursor = self.conn.cursor()
 
     def do_sql(self, sql):
-        logging.debug("executing sql: %s" % sql)
+        logging.debug("executing sql: %s", sql)
         self.cursor.execute(sql)
         self.conn.commit()
 
     def do_sql_with_fetch(self, sql):
-        logging.debug("executing sql: %s" % sql)
+        logging.debug("executing sql: %s", sql)
         self.cursor.execute(sql)
         row = self.cursor.fetchone()
         self.conn.commit()
@@ -59,7 +62,7 @@
         self.conn.commit()
 
     def delete_row(self, row_id):
-        logging.debug("deleting row %i" % row_id)
+        logging.debug("deleting row %i", row_id)
         self.do_sql("delete from pdu_queue where id=%i" % row_id)
 
     def get_res(self, sql):
@@ -67,10 +70,13 @@
 
     def get_next_job(self):
         now = int(time.time())
-        row = self.do_sql_with_fetch("select id,hostname,port,request from pdu_queue where (exectime < %i or exectime is null) order by id asc limit 1" % now)
+        row = self.do_sql_with_fetch("select id, hostname, port, "
+                                     "request from pdu_queue where "
+                                     "(exectime < %i or exectime is null)"
+                                     "order by id asc limit 1" % now)
         return row
 
     def close(self):
         logging.debug("Closing DBHandler")
         self.cursor.close()
-        self.conn.close()
\ No newline at end of file
+        self.conn.close()
diff --git a/lavapdu/drivers/__init__.py b/lavapdu/drivers/__init__.py
index fe05efd..fe1f8f3 100644
--- a/lavapdu/drivers/__init__.py
+++ b/lavapdu/drivers/__init__.py
@@ -16,4 +16,4 @@
 #  You should have received a copy of the GNU General Public License
 #  along with this program; if not, write to the Free Software
 #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
-#  MA 02110-1301, USA.
\ No newline at end of file
+#  MA 02110-1301, USA.
diff --git a/lavapdu/drivers/apc7952.py b/lavapdu/drivers/apc7952.py
index 4b9b234..79c2148 100644
--- a/lavapdu/drivers/apc7952.py
+++ b/lavapdu/drivers/apc7952.py
@@ -39,7 +39,7 @@
         logging.debug("Returning to main menu")
         self.connection.send("\r")
         self.connection.expect('>')
-        for i in range(1, 20):
+        for _ in range(1, 20):
             self.connection.send("\x1B")
             self.connection.send("\r")
             res = self.connection.expect(["4- Logout", "> "])
@@ -50,7 +50,7 @@
     def _enter_outlet(self, outlet, enter_needed=True):
         outlet = "%s" % outlet
         logging.debug("Attempting to enter outlet %s", outlet)
-        if (enter_needed):
+        if enter_needed:
             self.connection.expect("Press <ENTER> to continue...")
         logging.debug("Sending enter")
         self.connection.send("\r")
@@ -61,8 +61,9 @@
         logging.debug("Finished entering outlet")
 
     def _port_interaction(self, command, port_number):
-        print("Attempting command: %s port: %i" % (command, port_number))
-        ### make sure in main menu here
+        logging.debug("Attempting command: %s port: %i",
+                      command, port_number)
+        # make sure in main menu here
         self._back_to_main()
         self.connection.send("\r")
         self.connection.expect("1- Device Manager")
@@ -71,7 +72,7 @@
         self.connection.send("1\r")
         self.connection.expect("------- Device Manager")
         self.connection.send("2\r")
-        res = self.connection.expect("1- Outlet Control/Configuration")
+        self.connection.expect("1- Outlet Control/Configuration")
         self.connection.expect("> ")
         self.connection.send("1\r")
         self._enter_outlet(port_number, False)
@@ -94,7 +95,8 @@
             logging.debug("Unknown command!")
 
     def _do_it(self):
-        self.connection.expect("Enter 'YES' to continue or <ENTER> to cancel :")
+        self.connection.expect("Enter 'YES' to continue or "
+                               "<ENTER> to cancel :")
         self.connection.send("YES\r")
         self.connection.expect("Press <ENTER> to continue...")
-        self.connection.send("\r")
\ No newline at end of file
+        self.connection.send("\r")
diff --git a/lavapdu/drivers/apc8959.py b/lavapdu/drivers/apc8959.py
index e37559d..e4bcf54 100644
--- a/lavapdu/drivers/apc8959.py
+++ b/lavapdu/drivers/apc8959.py
@@ -25,9 +25,6 @@
 class APC8959(APCBase):
     pdu_commands = {"off": "olOff", "on": "olOn"}
 
-#    def __init__(self, hostname):
-#        super(APC8959, self).__init__(hostname)
-
     @classmethod
     def accepts(cls, drivername):
         if drivername == "apc8959":
@@ -46,9 +43,10 @@
         self.connection.expect('apc>')
 
     def _port_interaction(self, command, port_number):
-        logging.debug("Attempting %s on port %i" % (command, port_number))
+        logging.debug("Attempting %s on port %i", command, port_number)
         self._pdu_get_to_prompt()
-        self.connection.sendline(self.pdu_commands[command] + (" %i" % port_number))
+        self.connection.sendline(self.pdu_commands[command] +
+                                 (" %i" % port_number))
         self.connection.expect("E000: Success")
         self._pdu_get_to_prompt()
-        logging.debug("done")
\ No newline at end of file
+        logging.debug("done")
diff --git a/lavapdu/drivers/apc9210.py b/lavapdu/drivers/apc9210.py
index b86339a..a817842 100644
--- a/lavapdu/drivers/apc9210.py
+++ b/lavapdu/drivers/apc9210.py
@@ -31,8 +31,8 @@
         return False
 
     def _port_interaction(self, command, port_number):
-        print("Attempting command: %s port: %i" % (command, port_number))
-        ### make sure in main menu here
+        logging.debug("Attempting command: %s port: %i", command, port_number)
+        # make sure in main menu here
         self._back_to_main()
         self.connection.send("\r")
         self.connection.expect("1- Outlet Manager")
@@ -42,7 +42,8 @@
         self.connection.expect("------- Outlet Manager")
         logging.debug("Got to Device Manager")
         self._enter_outlet(port_number, False)
-        self.connection.expect(["1- Control of Outlet", "1- Outlet Control/Configuration"])
+        self.connection.expect(["1- Control of Outlet",
+                                "1- Outlet Control/Configuration"])
         self.connection.expect("> ")
         self.connection.send("1\r")
         self.connection.expect("Turn Outlet On")
@@ -56,4 +57,4 @@
             self.connection.expect("Turn Outlet Off")
             self._do_it()
         else:
-            logging.debug("Unknown command!")
\ No newline at end of file
+            logging.debug("Unknown command!")
diff --git a/lavapdu/drivers/apc9218.py b/lavapdu/drivers/apc9218.py
index 8d3a7a1..382bd7d 100644
--- a/lavapdu/drivers/apc9218.py
+++ b/lavapdu/drivers/apc9218.py
@@ -26,13 +26,13 @@
 
     @classmethod
     def accepts(cls, drivername):
-        models = ["ap9606","apc9606","ap9218","apc9218"]
+        models = ["ap9606", "apc9606", "ap9218", "apc9218"]
         if drivername.lower() in models:
             return True
         return False
 
     def _port_interaction(self, command, port_number):
-        ### make sure in main menu here
+        # make sure in main menu here
         self._back_to_main()
         self.connection.send("\r")
         self.connection.expect("1- Device Manager")
@@ -42,7 +42,8 @@
         self.connection.expect("------- Device Manager")
         logging.debug("Got to Device Manager")
         self._enter_outlet(port_number, False)
-        res = self.connection.expect(["1- Control Outlet", "1- Outlet Control/Configuration"])
+        self.connection.expect(["1- Control Outlet",
+                                "1- Outlet Control/Configuration"])
         self.connection.expect("> ")
         self.connection.send("1\r")
         res = self.connection.expect(["> ", "Press <ENTER> to continue..."])
@@ -50,7 +51,8 @@
             logging.debug("Stupid paging thingmy detected, pressing enter")
             self.connection.send("\r")
         self.connection.send("\r")
-        res = self.connection.expect(["Control Outlet %s" % port_number, "Control Outlet"])
+        self.connection.expect(["Control Outlet %s" % port_number,
+                                "Control Outlet"])
         self.connection.expect("3- Immediate Reboot")
         self.connection.expect("> ")
         if command == "on":
@@ -62,4 +64,4 @@
             self.connection.expect("Immediate Off")
             self._do_it()
         else:
-            logging.debug("Unknown command!")
\ No newline at end of file
+            logging.debug("Unknown command!")
diff --git a/lavapdu/drivers/apcbase.py b/lavapdu/drivers/apcbase.py
index aaa19c5..1946b62 100644
--- a/lavapdu/drivers/apcbase.py
+++ b/lavapdu/drivers/apcbase.py
@@ -40,31 +40,34 @@
 
     @classmethod
     def accepts(cls, drivername):
+        logging.debug(drivername)
         return False
 
     def port_interaction(self, command, port_number):
         logging.debug("Running port_interaction from APCBase")
-        self._port_interaction(command, port_number)
-        #self._cleanup()
+        self._port_interaction(command,  # pylint: disable=no-member
+                               port_number)
 
     def get_connection(self):
-        logging.debug("Connecting to APC PDU with: %s" % self.exec_string)
+        logging.debug("Connecting to APC PDU with: %s", self.exec_string)
         if logging.getLogger().getEffectiveLevel() == logging.DEBUG:
-            self.connection = pexpect.spawn(self.exec_string, logfile=sys.stdout)
+            self.connection = pexpect.spawn(self.exec_string,
+                                            logfile=sys.stdout)
         else:
             self.connection = pexpect.spawn(self.exec_string)
-        self._pdu_login("apc","apc")
+        self._pdu_login("apc", "apc")
 
     def _cleanup(self):
-        self._pdu_logout()
+        self._pdu_logout()  # pylint: disable=no-member
 
     def _bombout(self):
-        logging.debug("Bombing out of driver: %s" % self.connection)
+        logging.debug("Bombing out of driver: %s", self.connection)
         self.connection.close(force=True)
-        del(self)
+        del self
 
     def _pdu_login(self, username, password):
-        logging.debug("attempting login with username %s, password %s" % (username, password))
+        logging.debug("attempting login with username %s, password %s",
+                      username, password)
         self.connection.send("\r")
         self.connection.expect("User Name :")
         self.connection.send("%s\r" % username)
diff --git a/lavapdu/drivers/driver.py b/lavapdu/drivers/driver.py
index f93974e..a56fea6 100644
--- a/lavapdu/drivers/driver.py
+++ b/lavapdu/drivers/driver.py
@@ -30,26 +30,32 @@
 
     @classmethod
     def select(cls, drivername):
-        logging.debug("adding PDUDriver subclasses: %s" % cls.__subclasses__())
+        logging.debug("adding PDUDriver subclasses: %s",
+                      cls.__subclasses__())  # pylint: disable=no-member
         candidates = cls.__subclasses__()  # pylint: disable=no-member
-        for subc in cls.__subclasses__():
-            logging.debug("adding %s subclasses: %s" % (subc,subc.__subclasses__()))
+        for subc in cls.__subclasses__():  # pylint: disable=no-member
+            logging.debug("adding %s subclasses: %s", subc,
+                          subc.__subclasses__())
             candidates = candidates + (subc.__subclasses__())
             for subsubc in subc.__subclasses__():
-                logging.debug("adding %s subclasses: %s" % (subsubc,subsubc.__subclasses__()))
+                logging.debug("adding %s subclasses: %s", subsubc,
+                              subsubc.__subclasses__())
                 candidates = candidates + (subsubc.__subclasses__())
         logging.debug(candidates)
         willing = [c for c in candidates if c.accepts(drivername)]
         if len(willing) == 0:
             raise NotImplementedError(
                 "No driver accepted the request "
-                "'%s' with the specified job parameters. %s" % (drivername, cls)
+                "'%s' with the specified job parameters. %s" %
+                (drivername, cls)
             )
-        logging.debug("%s accepted the request" % willing[0])
+        logging.debug("%s accepted the request", willing[0])
         return willing[0]
 
     def handle(self, request, port_number, delay=0):
-        logging.debug("Driving PDU hostname: %s PORT: %s REQUEST: %s (delay %s)" %(self.hostname,port_number,request,delay))
+        logging.debug("Driving PDU hostname: %s "
+                      "PORT: %s REQUEST: %s (delay %s)",
+                      self.hostname, port_number, request, delay)
         if request == "on":
             self.port_on(port_number)
         elif request == "off":
@@ -57,15 +63,21 @@
         else:
             logging.debug("Unknown request to handle - oops")
             raise NotImplementedError(
-                "Driver doesn't know how to %s " % (request)
+                "Driver doesn't know how to %s " % request
             )
         self._cleanup()
 
-    #def _port_interaction(self, command, port_number):
-    #    super(PDUDriver, self).port_interaction(command,port_number)
-
     def port_on(self, port_number):
         self.port_interaction("on", port_number)
 
     def port_off(self, port_number):
-        self.port_interaction("off", port_number)
\ No newline at end of file
+        self.port_interaction("off", port_number)
+
+    def port_interaction(self, command, port_number):
+        pass
+
+    def _bombout(self):
+        pass
+
+    def _cleanup(self):
+        pass
diff --git a/lavapdu/drivers/strategies.py b/lavapdu/drivers/strategies.py
index 962eaf3..df3db3e 100644
--- a/lavapdu/drivers/strategies.py
+++ b/lavapdu/drivers/strategies.py
@@ -18,7 +18,12 @@
 #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 #  MA 02110-1301, USA.
 
-from lavapdu.drivers.apc7952 import APC7952
-from lavapdu.drivers.apc9218 import APC9218
-from lavapdu.drivers.apc8959 import APC8959
-from lavapdu.drivers.apc9210 import APC9210
\ No newline at end of file
+from lavapdu.drivers.apc7952 import APC7952  # pylint: disable=W0611
+from lavapdu.drivers.apc9218 import APC9218  # pylint: disable=W0611
+from lavapdu.drivers.apc8959 import APC8959  # pylint: disable=W0611
+from lavapdu.drivers.apc9210 import APC9210  # pylint: disable=W0611
+
+assert APC7952
+assert APC9218
+assert APC8959
+assert APC9210
diff --git a/lavapdu/pdurunner.py b/lavapdu/pdurunner.py
index 0e8727b..843c6b2 100644
--- a/lavapdu/pdurunner.py
+++ b/lavapdu/pdurunner.py
@@ -24,8 +24,10 @@
 import traceback
 from lavapdu.dbhandler import DBHandler
 from lavapdu.drivers.driver import PDUDriver
-import lavapdu.drivers.strategies
+import lavapdu.drivers.strategies  # pylint: disable=W0611
 from lavapdu.shared import drivername_from_hostname
+assert lavapdu.drivers.strategies
+
 
 class PDURunner(object):
 
@@ -41,8 +43,9 @@
         if job:
             job_id, hostname, port, request = job
             logging.debug(job)
-            logging.info("Processing queue item: (%s %s) on hostname: %s" % (request, port, hostname))
-            res = self.do_job(hostname, port, request)
+            logging.info("Processing queue item: (%s %s) on hostname: %s",
+                         request, port, hostname)
+            self.do_job(hostname, port, request)
             db.delete_row(job_id)
         else:
             logging.debug("Found nothing to do in database")
@@ -59,13 +62,13 @@
             try:
                 driver = self.driver_from_hostname(hostname)
                 return driver.handle(request, port, delay)
-            except Exception as e:
+            except Exception as e:  # pylint: disable=broad-except
                 logging.warn(traceback.format_exc())
-                logging.warn("Failed to execute job: %s %s %s (attempts left %i) error was %s" %
-                             (hostname, port, request, retries, e.message))
+                logging.warn("Failed to execute job: %s %s %s "
+                             "(attempts left %i) error was %s",
+                             hostname, port, request, retries, e.message)
                 if driver:
-                    #driver._cleanup()
-                    driver._bombout()
+                    driver._bombout()  # pylint: disable=no-member,protected-access
                 time.sleep(5)
                 retries -= 1
         return False
@@ -76,17 +79,16 @@
             db = DBHandler(self.settings)
             self.get_one(db)
             db.close()
-            del(db)
+            del db
             time.sleep(2)
 
 if __name__ == "__main__":
     settings = {}
     filename = "/etc/lavapdu/lavapdu.conf"
-    print("Reading settings from %s" % filename)
+    print("Reading settings from %s", filename)
     with open(filename) as stream:
         jobdata = stream.read()
         json_data = json.loads(jobdata)
 
     p = PDURunner(json_data)
-    #p.do_job("192.168.10.5",18,"reboot",2)
     p.run_me()
diff --git a/lavapdu/shared.py b/lavapdu/shared.py
index 86d155d..39c281b 100644
--- a/lavapdu/shared.py
+++ b/lavapdu/shared.py
@@ -3,34 +3,33 @@
 from logging.handlers import WatchedFileHandler
 
 
-def getDaemonLogger(filePath, log_format=None, loglevel=logging.INFO):
+def get_daemon_logger(filepath, log_format=None, loglevel=logging.INFO):
     logger = logging.getLogger()
     logger.setLevel(loglevel)
     try:
-        watchedHandler = WatchedFileHandler(filePath)
-    except Exception as e:
+        watchedhandler = WatchedFileHandler(filepath)
+    except Exception as e:  # pylint: disable=broad-except
         return e
 
-    watchedHandler.setFormatter(logging.Formatter(log_format or '%(asctime)s %(msg)s'))
-    logger.addHandler(watchedHandler)
-    return logger, watchedHandler
+    watchedhandler.setFormatter(logging.Formatter(log_format
+                                                  or '%(asctime)s %(msg)s'))
+    logger.addHandler(watchedhandler)
+    return logger, watchedhandler
 
 
-def readSettings(filename):
-    """
-    Read settings from config file, to listen to all hosts, hostname should be 0.0.0.0
-    """
-    #settings = {}
-    print("Reading settings from %s" % filename)
+def read_settings(filename):
+    logging.debug("Reading settings from %s", filename)
     with open(filename) as stream:
         jobdata = stream.read()
         json_data = json.loads(jobdata)
     return json_data
 
+
 def drivername_from_hostname(hostname, pdus):
     if hostname in pdus:
         drivername = (pdus[hostname]["driver"])
     else:
-        raise NotImplementedError("No configuration available for hostname %s\n"
-                                  "Is there a section in the lavapdu.conf?" % hostname)
+        raise NotImplementedError("No configuration available for %s, "
+                                  "is there a section in the lavapdu.conf?" %
+                                  hostname)
     return drivername
diff --git a/lavapdu/socketserver.py b/lavapdu/socketserver.py
index 410188e..43972e2 100644
--- a/lavapdu/socketserver.py
+++ b/lavapdu/socketserver.py
@@ -26,6 +26,7 @@
 from lavapdu.dbhandler import DBHandler
 from lavapdu.shared import drivername_from_hostname
 
+
 class ListenerServer(object):
 
     def __init__(self, config):
@@ -53,7 +54,8 @@
 
 
 class TCPRequestHandler(SocketServer.BaseRequestHandler):
-    #"One instance per connection.  Override handle(self) to customize action."
+    # "One instance per connection.  Override handle(self) to customize
+    # action."
     def insert_request(self, data):
         logging.getLogger().name = "TCPRequestHandler"
         logging.getLogger().setLevel(self.server.settings["logging_level"])
@@ -77,11 +79,11 @@
         if request == "reboot":
             logging.debug("reboot requested, submitting off/on")
             self.queue_request(hostname, port, "off", now)
-            self.queue_request(hostname, port, "on", now+delay)
+            self.queue_request(hostname, port, "on", now + delay)
         else:
             if custom_delay:
                 logging.debug("using delay as requested")
-                self.queue_request(hostname, port, request, now+delay)
+                self.queue_request(hostname, port, request, now + delay)
             else:
                 self.queue_request(hostname, port, request, now)
 
@@ -93,7 +95,6 @@
         dbhandler.close()
         del dbhandler
 
-
     def handle(self):
         logging.getLogger().name = "TCPRequestHandler"
         request_ip = self.client_address[0]
@@ -102,30 +103,30 @@
             socket.setdefaulttimeout(2)
             try:
                 request_host = socket.gethostbyaddr(request_ip)[0]
-            except socket.herror as e: #pylint: disable=invalid-name
-                #logging.debug("Unable to resolve: %s error: %s" % (ip,e))
+            except socket.herror:
                 request_host = request_ip
-            logging.info("Received a request from %s: '%s'", request_host, data)
+            logging.info("Received a request from %s: '%s'",
+                         request_host,
+                         data)
             self.insert_request(data)
             self.request.sendall("ack\n")
-        except Exception as e: #pylint: disable=invalid-name
-            logging.debug(e.__class__)
-            logging.debug(e.message)
-            self.request.sendall(e.message)
+        except Exception as global_error:  # pylint: disable=broad-except
+            logging.debug(global_error.__class__)
+            logging.debug(global_error.message)
+            self.request.sendall(global_error.message)
         self.request.close()
 
 
 class TCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
     allow_reuse_address = True
     daemon_threads = True
-    #pass
 
 if __name__ == "__main__":
     logging.basicConfig(level=logging.DEBUG)
     logging.getLogger().setLevel(logging.DEBUG)
     logging.debug("Executing from __main__")
     filename = "/etc/lavapdu/lavapdu.conf"
-    print("Reading settings from %s" % filename)
+    logging.debug("Reading settings from %s", filename)
     with open(filename) as stream:
         jobdata = stream.read()
         json_data = json.loads(jobdata)
diff --git a/pduclient b/pduclient
index 737d645..4e278b5 100755
--- a/pduclient
+++ b/pduclient
@@ -22,29 +22,43 @@
 import optparse
 
 if __name__ == '__main__':
-    usage = "Usage: %prog --daemon deamonhostname --hostname pduhostname --port pduportnum --command pducommand"
+    usage = "Usage: %prog --daemon deamonhostname --hostname pduhostname " \
+            "--port pduportnum --command pducommand"
     description = "LAVA PDU daemon client"
     commands = ["reboot", "on", "off"]
     parser = optparse.OptionParser(usage=usage, description=description)
-    parser.add_option("--daemon", dest="pdudaemonhostname", action="store", type="string", help="LAVAPDU Daemon hostname (ex: localhost)")
-    parser.add_option("--hostname", dest="pduhostname", action="store", type="string", help="PDU Hostname (ex: pdu05)")
-    parser.add_option("--port", dest="pduportnum", action="store", type="string", help="PDU Portnumber (ex: 04)")
-    parser.add_option("--command", dest="pducommand", action="store", type="string", help="PDU command (ex: reboot|on|off)")
-    parser.add_option("--delay", dest="pdudelay", action="store", type="int", help="Delay before command runs, or between off/on when rebooting (ex: 5)")
+    parser.add_option("--daemon", dest="pdudaemonhostname", action="store",
+                      type="string",
+                      help="LAVAPDU Daemon hostname (ex: localhost)")
+    parser.add_option("--hostname", dest="pduhostname", action="store",
+                      type="string", help="PDU Hostname (ex: pdu05)")
+    parser.add_option("--port", dest="pduportnum", action="store",
+                      type="string", help="PDU Portnumber (ex: 04)")
+    parser.add_option("--command", dest="pducommand", action="store",
+                      type="string", help="PDU command (ex: reboot|on|off)")
+    parser.add_option("--delay", dest="pdudelay", action="store", type="int",
+                      help="Delay before command runs, or between off/on "
+                           "when rebooting (ex: 5)")
     (options, args) = parser.parse_args()
-    if (not (options.pdudaemonhostname) or not(options.pduhostname) or not (options.pduportnum) or not (options.pducommand)):
+    if not options.pdudaemonhostname \
+            or not options.pduhostname \
+            or not options.pduportnum \
+            or not options.pducommand:
         print("Missing option, try -h for help")
         exit(1)
     if not (options.pducommand in commands):
         print("Unknown pdu command: %s" % options.pducommand)
         exit(1)
     if options.pdudelay:
-        string = ("%s %s %s %s" % (options.pduhostname, options.pduportnum, options.pducommand, options.pdudelay))
+        string = ("%s %s %s %s" % (options.pduhostname, options.pduportnum,
+                                   options.pducommand, options.pdudelay))
     else:
-        string = ("%s %s %s" % (options.pduhostname, options.pduportnum, options.pducommand))
+        string = ("%s %s %s" % (options.pduhostname, options.pduportnum,
+                                options.pducommand))
     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-    #sock.setblocking(0)  # optional non-blocking
+    # sock.setblocking(0)  # optional non-blocking
     reply = ""
+    # noinspection PyBroadException
     try:
         sock.connect((options.pdudaemonhostname, 16421))
         sock.send(string)
@@ -57,5 +71,6 @@
         print("Command sent successfully.")
         exit(0)
     else:
-        print("Error sending command! %s replied: %s" % (options.pdudaemonhostname, reply))
+        print("Error sending command! %s replied: %s" %
+              (options.pdudaemonhostname, reply))
         exit(127)