Add support for 'connection' concept
This is a large refactor and as small as I could feasibly make it while keeping the tests working. I'll do the documentation and touch ups in the next commit to make digesting easier. Change-Id: Iac5083996a183d1d8a9b6cb8f70836f7c39ee910
This commit is contained in:
53
zuul/connection/__init__.py
Normal file
53
zuul/connection/__init__.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# Copyright 2014 Rackspace Australia
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import abc
|
||||
|
||||
import six
|
||||
|
||||
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class BaseConnection(object):
|
||||
"""Base class for connections.
|
||||
|
||||
A connection is a shared object that sources, triggers and reporters can
|
||||
use to speak with a remote API without needing to establish a new
|
||||
connection each time or without having to authenticate each time.
|
||||
|
||||
Multiple instances of the same connection may exist with different
|
||||
credentials, for example, thus allowing for different pipelines to operate
|
||||
on different Gerrit installations or post back as a different user etc.
|
||||
|
||||
Connections can implement their own public methods. Required connection
|
||||
methods are validated by the {trigger, source, reporter} they are loaded
|
||||
into. For example, a trigger will likely require some kind of query method
|
||||
while a reporter may need a review method."""
|
||||
|
||||
def __init__(self, connection_name, connection_config):
|
||||
# connection_name is the name given to this connection in zuul.ini
|
||||
# connection_config is a dictionary of config_section from zuul.ini for
|
||||
# this connection.
|
||||
# __init__ shouldn't make the actual connection in case this connection
|
||||
# isn't used in the layout.
|
||||
self.connection_name = connection_name
|
||||
self.connection_config = connection_config
|
||||
|
||||
def onLoad(self):
|
||||
pass
|
||||
|
||||
def onStop(self):
|
||||
pass
|
||||
|
||||
def registerScheduler(self, sched):
|
||||
self.sched = sched
|
||||
Reference in New Issue
Block a user