Source code for wfcommons.wfinstances.logs.abstract_logs_parser
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (c) 2020-2021 The WfCommons Team.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
import logging
from abc import ABC, abstractmethod
from logging import Logger
from typing import Optional
from ...common.workflow import Workflow
[docs]
class LogsParser(ABC):
"""An abstract class of logs parser for creating workflow instances.
:param wms_name: Name of the workflow system.
:type wms_name: str
:param wms_version: Version of the workflow system.
:type wms_version: Optional[str]
:param wms_url: URL for the workflow system.
:type wms_url: Optional[str]
:param description: Workflow instance description.
:type description: Optional[str]
:param logger: The logger where to log information/warning or errors (optional).
:type logger: Optional[Logger]
"""
def __init__(self,
wms_name: str,
wms_version: Optional[str] = None,
wms_url: Optional[str] = None,
description: Optional[str] = None,
logger: Optional[Logger] = None) -> None:
"""Create an object of the logs parser."""
self.logger: Optional[Logger] = logger if logger else logging.getLogger(__name__)
self.description: Optional[str] = description
self.wms_name: str = wms_name
self.wms_version: Optional[str] = wms_version
self.wms_url: Optional[str] = wms_url
self.workflow = None
self.workflow_name = None
self.schema_version = None
self.executed_at = None
self.makespan = None
[docs]
@abstractmethod
def build_workflow(self, workflow_name: Optional[str] = None) -> Workflow:
"""
Create workflow instance based on the workflow execution logs.
:param workflow_name: The workflow name.
:type workflow_name: Optional[str]
:return: A workflow instance object.
:rtype: Workflow
"""