blob: 76eeadf90fa2a04345063bbfea98ffb3026aa82a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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
|