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)