# Bacula(R) - The Network Backup Solution
#
#   Copyright (C) 2000-2022 Kern Sibbald
#
#   The original author of Bacula is Kern Sibbald, with contributions
#   from many others, a complete list can be found in the file AUTHORS.
#
#   You may use this file and others of this release according to the
#   license defined in the LICENSE file, which includes the Affero General
#   Public License, v3.0 ("AGPLv3") and some additional permissions and
#   terms pursuant to its AGPLv3 Section 7.
#
#   This notice must be preserved when any source code is
#   conveyed and/or propagated.
#
#   Bacula(R) is a registered trademark of Kern Sibbald.


from abc import ABCMeta, abstractmethod


class Service(metaclass=ABCMeta):
    """
        Abstract Base Class for all the Backend Services

        Services represents auxiliary Business Logic supporting the
        main functionality implemented by the Backend Jobs Classes
    """

    @abstractmethod
    def execute(self, params=None):
        """
            Executes the Service
        """
        raise NotImplementedError
