diff options
Diffstat (limited to 'lorrycontroller/hosts.py')
-rw-r--r-- | lorrycontroller/hosts.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/lorrycontroller/hosts.py b/lorrycontroller/hosts.py new file mode 100644 index 0000000..76eeadf --- /dev/null +++ b/lorrycontroller/hosts.py @@ -0,0 +1,57 @@ +# Copyright (C) 2020 Codethink Limited +# +# 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; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +import abc + + +class DownstreamHost(abc.ABC): + @staticmethod + def add_app_settings(app_settings): + '''Add any application settings that are specific to this Downstream + Host type. + ''' + pass + + @staticmethod + def check_app_settings(app_settings): + '''Validate any fields in the application settings that are specific + to this Downstream Host type. + ''' + pass + + @abc.abstractmethod + def __init__(self, app_settings): + '''Construct a Downstream Host connector from the application + settings. + ''' + pass + + @abc.abstractmethod + def prepare_repo(self, repo_path, metadata): + '''Prepare a repository on the Host. If the repository does not exist + and Lorry won't automatically create it, this method must create the + repository. It should also set any given metadata on the repository, + whether or not it already exists. + + repo_path is the path that the repository should appear at + within the Host. + + metadata is a dictionary with the following (optional) keys + defined: + + - head: Name of the default branch (a.k.a. HEAD) + - description: Short string describing the repository + ''' + pass |