except Exception as e:
msg.debug("This shouldn't happen. NO " + prefix + " IN LIST:" + str(self.jobs) + " ERROR: " + str(e))
+ # TODO remove section below and remove `reason`.
prefix += ": "
if reason is None:
return
"""
i = 0
overridden = []
+ self.debug("all job objects:", str(self.jobs))
while i < len(self.jobs):
job = self.jobs[i]
try:
if not job.check():
- self._stop(job, "failed check")
+ self.error("check function failed.")
+ self._stop(job)
else:
msg.debug(job.chart_name, ": check succeeded")
i += 1
except Exception:
pass
except AttributeError:
- self._stop(job, "no check")
+ self._stop(job)
+ self.error("cannot find check() function.")
except (UnboundLocalError, Exception) as e:
- self._stop(job, "misbehaving. Reason:" + str(e))
+ self.error(str(e))
+ self._stop(job)
+ self.debug("overridden job names:", str(overridden))
+ self.debug("all remaining job objects:", str(self.jobs))
def create(self):
"""
job = self.jobs[i]
try:
if not job.create():
- self._stop(job, "failed create")
+ self.error("create function failed.")
+ self._stop(job)
else:
chart = job.chart_name
sys.stdout.write(
# sys.stdout.flush()
i += 1
except AttributeError:
- self._stop(job, "no create")
+ self.error("cannot find create() function.")
+ self._stop(job)
except (UnboundLocalError, Exception) as e:
- self._stop(job, "misbehaving. Reason: " + str(e))
+ self.error(str(e))
+ self._stop(job)
def update(self):
"""
import sys
import os
import socket
-import resource
try:
import urllib.request as urllib2
except ImportError:
if self.timetable['next'] > t_start:
#msg.debug(self.chart_name + " will be run in " +
# str(int((self.timetable['next'] - t_start) * 1000)) + " ms")
- msg.debug(self.chart_name,"will be run in", str(int((self.timetable['next'] - t_start) * 1000)), "ms")
+ msg.debug(self.chart_name, "will be run in", str(int((self.timetable['next'] - t_start) * 1000)), "ms")
return True
since_last = int((t_start - self.timetable['last']) * 1000000)
"ms (update_every:", str(self.timetable['freq'] * 1000),
"ms, latency:", str(int((t_start - self.timetable['next']) * 1000)), "ms")
if not self.update(since_last):
+ self.error("update function failed.")
return False
t_end = time.time()
self.timetable['next'] = t_end - (t_end % self.timetable['freq']) + self.timetable['freq']
try:
status = self._run_once()
except Exception as e:
- msg.error("Something wrong: " + str(e))
+ msg.error("Something wrong: ", str(e))
return
if status:
time.sleep(self.timetable['next'] - time.time())
else:
time.sleep(self.timetable['freq'])
- def _format(self, *args):
+ @staticmethod
+ def _format(*args):
params = []
append = params.append
for p in args:
try:
f = urllib2.urlopen(self.url, timeout=self.update_every)
except Exception as e:
- msg.error(self.__module__, str(e))
+ msg.error(str(e))
return None
try:
raw = f.read().decode('utf-8')
except Exception as e:
- msg.error(self.__module__, str(e))
+ msg.error(str(e))
finally:
f.close()
return raw
if self.request != "".encode():
try:
sock.send(self.request)
- except Exception:
+ except Exception as e:
try:
sock.shutdown(1)
sock.close()
except:
pass
self.sock = None
+ self.error(str(e))
return None
size = 2
if os.path.getsize(self.log_path) < self._last_position:
self._last_position = 0
elif os.path.getsize(self.log_path) == self._last_position:
+ self.debug("Log file hasn't changed. No new data.")
return None
with open(self.log_path, "r") as fp:
fp.seek(self._last_position)
lines.append(line)
self._last_position = fp.tell()
except Exception as e:
- self.error(self.__module__, str(e))
+ self.error(str(e))
if len(lines) != 0:
return lines
- return None
+ else:
+ self.error("No data collected.")
+ return None
def check(self):
"""
try:
p = Popen(self.command, stdout=PIPE, stderr=PIPE)
except Exception as e:
- self.error(self.__module__, str(e))
+ self.error(str(e))
return None
data = []
for line in p.stdout.readlines():
data.append(str(line.decode()))
if len(data) == 0:
+ self.error("No data collected.")
return None
return data
try:
raw = self._get_raw_data().split('\r\n')[-1]
if raw.startswith('<'):
+ self.error("invalid data received")
return None
for row in raw.split('\n'):
if row.startswith(("client", "server.all")):
tmp = row.split("=")
data[tmp[0].replace('.', '_').strip(' ')] = int(tmp[1])
except (ValueError, AttributeError, TypeError):
+ self.error("invalid data received")
return None
if len(data) == 0:
+ self.error("no data received")
return None
else:
return data
if self._get_data() is not None:
return True
else:
- self.error("No data returned")
return False