diff --git a/lib/core/job.py b/lib/core/job.py index e94c8cc..70fc654 100644 --- a/lib/core/job.py +++ b/lib/core/job.py @@ -46,12 +46,10 @@ class Job: self.log.d(self.service) try: jobInfo = JobInfo(self.host, self.service) - result = self.service._execute(self.host) - jobInfo.set_result(result) - jobInfo.set_execution_successful(self.service.was_execution_successful()) + self.service._execute(jobInfo) jobInfo.set_execution_end() - self.handle_threshold(self.service.get_threshold(), self.service.was_execution_successful()) + self.handle_threshold(self.service.get_threshold(), jobInfo.was_execution_successful()) self.jobInfos.append(jobInfo) @@ -59,12 +57,18 @@ class Job: self.log.d(e) -class JobInfo: +class JobInfo(object): def __init__(self, host, service): self.id = generateId() self.host = host self.service = service self.executionBegin = datetime.now() + self._errorcode = -1 + self._message = None + self._executionSuccess = False + + def get_host(self): + return self.host def set_result(self, result): self.result = result @@ -73,4 +77,19 @@ class JobInfo: self.executionEnd = datetime.now() def set_execution_successful(self, successful): - self.executionSuccess = successful \ No newline at end of file + self._executionSuccess = successful + + def was_execution_successful(self): + return self._executionSuccess + + def set_message(self, msg): + self._message = msg + + def get_message(self): + return self._message + + def set_errorcode(self, errcode): + self._errorcode = errcode + + def get_errorcode(self): + return self._errorcode \ No newline at end of file diff --git a/lib/services/service.py b/lib/services/service.py index af8e076..da60a45 100644 --- a/lib/services/service.py +++ b/lib/services/service.py @@ -37,8 +37,7 @@ class Service(object): if KEY_PERIODS in kwargs: self.add_periods(kwargs[KEY_PERIODS]) - self.errorcode = 0 - self.errormessage = None + def add_arguments(self, args): for key, val in args.items(): @@ -98,42 +97,31 @@ class Service(object): def needs_arguments(self): return False - def set_execution_successful(self, successful): - self.executionSuccessful = successful - - def was_execution_successful(self): - return self.executionSuccessful - - def _execute(self, host): + def _execute(self, jobInfo): try: + self.pre_execute(jobInfo) - self.set_execution_successful(True) - self.pre_execute(host) - - result = self.execute(host) - parseResult = self.parse_result(result) - self.post_execute(parseResult) - return parseResult + self.execute(jobInfo) + self.parse_result(jobInfo) + self.post_execute(jobInfo) except Exception, e: self.set_execution_successful(False) self._threshold -= 1 raise e - def execute(self, host): + def execute(self, jobInfo): pass - def pre_execute(self, host): - self.errorcode = 0 - self.errormessage = None + def pre_execute(self, jobInfo): pass - def parse_result(self, executionResult): + def parse_result(self, jobInfo): result = [] for parser in self.get_parser(): - result.append(parser.parse(executionResult)) + result.append(parser.parse(jobInfo)) return result - def post_execute(self, parseResult): + def post_execute(self, jobInfo): pass diff --git a/lib/services/tcpconnect.py b/lib/services/tcpconnect.py index 15eeecf..ea60612 100644 --- a/lib/services/tcpconnect.py +++ b/lib/services/tcpconnect.py @@ -23,25 +23,25 @@ class TcpconnectService(Service): def needs_arguments(self): return True - def execute(self, host): + def execute(self, jobInfo): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) except socket.error, msg: #log.w("%s\n" % msg[1]) - self.errorcode = 1 - self.errormessage = "Could not create socket." + jobInfo.set_errorcode(1) + jobInfo.set_message("Could not create socket.") try: - sock.connect((host, self.port)) + sock.connect((jobInfo.get_host(), self.port)) except socket.error, msg: #log.w("%s\n" % msg[1]) - self.errorcode = 2 - self.errormessage = "Could not establish connection." + jobInfo.set_errorcode(2) + jobInfo.set_message("Could not establish connection.") - print(self.errorcode) - print(self.errormessage) + if jobInfo.get_errorcode() == -1: + jobInfo.set_execution_successful(True) sock.close() - return + def create(kwargs):