Commit 907a8633 authored by Bryton Lacquement's avatar Bryton Lacquement 🚪

wip

parent c0df0f1c
from zope import interface as zope_interface from zope.interface import implementer
from slapos.grid.promise import interface from slapos.grid.promise import interface
from slapos.grid.promise.generic import GenericPromise, TestResult from slapos.grid.promise.generic import GenericPromise, TestResult
import re import re
import time import time
import os import os
@implementer(interface.IPromise)
class RunPromise(GenericPromise): class RunPromise(GenericPromise):
zope_interface.implements(interface.IPromise)
def __init__(self, config): def __init__(self, config):
GenericPromise.__init__(self, config) GenericPromise.__init__(self, config)
# set periodicity to run the promise twice per day # set periodicity to run the promise twice per day
...@@ -26,7 +24,7 @@ class RunPromise(GenericPromise): ...@@ -26,7 +24,7 @@ class RunPromise(GenericPromise):
if not log_file: if not log_file:
raise ValueError("log file was not set in promise parameters.") raise ValueError("log file was not set in promise parameters.")
regex = re.compile("^(\[[^\]]+\]) (\[[^\]]+\]) (.*)$") regex = re.compile(br"^(\[[^\]]+\]) (\[[^\]]+\]) (.*)$")
error_amount = 0 error_amount = 0
no_route_error = 0 no_route_error = 0
network_is_unreachable = 0 network_is_unreachable = 0
...@@ -38,7 +36,7 @@ class RunPromise(GenericPromise): ...@@ -38,7 +36,7 @@ class RunPromise(GenericPromise):
self.logger.info("OK") self.logger.info("OK")
return return
with open(log_file) as f: with open(log_file, "rb") as f:
f.seek(0, 2) f.seek(0, 2)
block_end_byte = f.tell() block_end_byte = f.tell()
f.seek(-min(block_end_byte, 4096), 1) f.seek(-min(block_end_byte, 4096), 1)
...@@ -50,10 +48,10 @@ class RunPromise(GenericPromise): ...@@ -50,10 +48,10 @@ class RunPromise(GenericPromise):
dt, level, msg = m.groups() dt, level, msg = m.groups()
try: try:
try: try:
t = time.strptime(dt[1:-1], "%a %b %d %H:%M:%S %Y") t = time.strptime(dt[1:-1].decode('utf-8'), "%a %b %d %H:%M:%S %Y")
except ValueError: except ValueError:
# Fail to parser for the first time, try a different output. # Fail to parser for the first time, try a different output.
t = time.strptime(dt[1:-1], "%a %b %d %H:%M:%S.%f %Y") t = time.strptime(dt[1:-1].decode('utf-8'), "%a %b %d %H:%M:%S.%f %Y")
except ValueError: except ValueError:
# Probably it fail to parse # Probably it fail to parse
if parsing_failure < 3: if parsing_failure < 3:
...@@ -65,14 +63,14 @@ class RunPromise(GenericPromise): ...@@ -65,14 +63,14 @@ class RunPromise(GenericPromise):
if maximum_delay and (time.time()-time.mktime(t)) > maximum_delay: if maximum_delay and (time.time()-time.mktime(t)) > maximum_delay:
# no result in the latest hour # no result in the latest hour
break break
if level != "[error]": if level != b"[error]":
continue continue
# Classify the types of errors # Classify the types of errors
if "(113)No route to host" in msg: if b"(113)No route to host" in msg:
no_route_error += 1 no_route_error += 1
elif "(101)Network is unreachable" in msg: elif b"(101)Network is unreachable" in msg:
network_is_unreachable += 1 network_is_unreachable += 1
elif "(110)Connection timed out" in msg: elif b"(110)Connection timed out" in msg:
timeout += 1 timeout += 1
error_amount += 1 error_amount += 1
if error_amount: if error_amount:
......
from zope import interface as zope_interface from zope.interface import implementer
from slapos.grid.promise import interface from slapos.grid.promise import interface
from slapos.grid.promise.generic import GenericPromise, TestResult from slapos.grid.promise.generic import GenericPromise, TestResult
import re import re
import time import time
from slapos.networkbench.ping import ping, ping6 from slapos.networkbench.ping import ping, ping6
@implementer(interface.IPromise)
class RunPromise(GenericPromise): class RunPromise(GenericPromise):
zope_interface.implements(interface.IPromise)
def __init__(self, config): def __init__(self, config):
GenericPromise.__init__(self, config) GenericPromise.__init__(self, config)
# set periodicity to run the promise twice per day # set periodicity to run the promise twice per day
......
from zope import interface as zope_interface from zope.interface import implementer
from slapos.grid.promise import interface from slapos.grid.promise import interface
from slapos.grid.promise.generic import GenericPromise, TestResult from slapos.grid.promise.generic import GenericPromise, TestResult
import re import re
import time import time
from slapos.networkbench.ping import ping, ping6 from slapos.networkbench.ping import ping, ping6
@implementer(interface.IPromise)
class RunPromise(GenericPromise): class RunPromise(GenericPromise):
zope_interface.implements(interface.IPromise)
def __init__(self, config): def __init__(self, config):
GenericPromise.__init__(self, config) GenericPromise.__init__(self, config)
# set periodicity to run the promise twice per day # set periodicity to run the promise twice per day
......
from zope import interface as zope_interface from zope.interface import implementer
from slapos.grid.promise import interface from slapos.grid.promise import interface
from slapos.grid.promise.generic import GenericPromise from slapos.grid.promise.generic import GenericPromise
import os import os
import pycurl import pycurl
@implementer(interface.IPromise)
class RunPromise(GenericPromise): class RunPromise(GenericPromise):
zope_interface.implements(interface.IPromise)
def __init__(self, config): def __init__(self, config):
GenericPromise.__init__(self, config) GenericPromise.__init__(self, config)
# SR can set custom periodicity # SR can set custom periodicity
...@@ -40,8 +38,8 @@ class RunPromise(GenericPromise): ...@@ -40,8 +38,8 @@ class RunPromise(GenericPromise):
try: try:
curl.perform() curl.perform()
except pycurl.error, e: except pycurl.error as e:
code, message = e code, message = e.args
self.logger.error("%s: %s" % (code, message)) self.logger.error("%s: %s" % (code, message))
return return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment