Factorize member_id in the base coordinator class

Any coordinator that implements (and they all should) group membership
needs a member_id field and copy it to self. Just do that by default for
all driver at __init__ time.

Change-Id: I66d82815afd4c6e9354212e5ab3fba17931c1bbc
This commit is contained in:
Julien Danjou 2016-11-15 15:41:25 +01:00
parent 73d76cdf23
commit ea98b28519
10 changed files with 13 additions and 16 deletions

View File

@ -231,8 +231,9 @@ class CoordinationDriver(object):
enum member(s) that can be used to interogate how this driver works.
"""
def __init__(self):
def __init__(self, member_id):
super(CoordinationDriver, self).__init__()
self._member_id = member_id
self._started = False
self._hooks_join_group = collections.defaultdict(Hooks)
self._hooks_leave_group = collections.defaultdict(Hooks)
@ -610,8 +611,8 @@ class CoordinationDriverCachedRunWatchers(CoordinationDriver):
"""
def __init__(self):
super(CoordinationDriverCachedRunWatchers, self).__init__()
def __init__(self, member_id):
super(CoordinationDriverCachedRunWatchers, self).__init__(member_id)
# A cache for group members
self._group_members = collections.defaultdict(set)
self._joined_groups = set()

View File

@ -107,7 +107,7 @@ class ConsulDriver(coordination.CoordinationDriver):
DEFAULT_PORT = 8500
def __init__(self, member_id, parsed_url, options):
super(ConsulDriver, self).__init__()
super(ConsulDriver, self).__init__(member_id)
options = utils.collapse(options)
self._executor = utils.ProxyExecutor.build("Consul", options)
self._host = parsed_url.hostname

View File

@ -200,7 +200,7 @@ class EtcdDriver(coordination.CoordinationDriver):
lock_encoder_cls = utils.Base64LockEncoder
def __init__(self, member_id, parsed_url, options):
super(EtcdDriver, self).__init__()
super(EtcdDriver, self).__init__(member_id)
host = parsed_url.hostname or self.DEFAULT_HOST
port = parsed_url.port or self.DEFAULT_PORT
options = utils.collapse(options)

View File

@ -205,8 +205,7 @@ class FileDriver(coordination.CoordinationDriverCachedRunWatchers):
def __init__(self, member_id, parsed_url, options):
"""Initialize the file driver."""
super(FileDriver, self).__init__()
self._member_id = member_id
super(FileDriver, self).__init__(member_id)
self._dir = self._normalize_path(parsed_url.path)
self._executor = utils.ProxyExecutor.build("File", options)
self._group_dir = os.path.join(self._dir, 'groups')

View File

@ -166,7 +166,7 @@ class IPCDriver(coordination.CoordinationDriver):
def __init__(self, member_id, parsed_url, options):
"""Initialize the IPC driver."""
super(IPCDriver, self).__init__()
super(IPCDriver, self).__init__(member_id)
self._executor = utils.ProxyExecutor.build("IPC", options)
def _start(self):

View File

@ -216,10 +216,9 @@ class MemcachedDriver(coordination.CoordinationDriverCachedRunWatchers):
STILL_ALIVE = b"It's alive!"
def __init__(self, member_id, parsed_url, options):
super(MemcachedDriver, self).__init__()
super(MemcachedDriver, self).__init__(member_id)
options = utils.collapse(options)
self._options = options
self._member_id = member_id
self._executor = utils.ProxyExecutor.build("Memcached", options)
self.host = (parsed_url.hostname or "localhost",
parsed_url.port or 11211)

View File

@ -117,7 +117,7 @@ class MySQLDriver(coordination.CoordinationDriver):
def __init__(self, member_id, parsed_url, options):
"""Initialize the MySQL driver."""
super(MySQLDriver, self).__init__()
super(MySQLDriver, self).__init__(member_id)
self._parsed_url = parsed_url
self._options = utils.collapse(options)

View File

@ -173,7 +173,7 @@ class PostgresDriver(coordination.CoordinationDriver):
def __init__(self, member_id, parsed_url, options):
"""Initialize the PostgreSQL driver."""
super(PostgresDriver, self).__init__()
super(PostgresDriver, self).__init__(member_id)
self._parsed_url = parsed_url
self._options = utils.collapse(options)

View File

@ -315,7 +315,7 @@ return 1
"""
def __init__(self, member_id, parsed_url, options):
super(RedisDriver, self).__init__()
super(RedisDriver, self).__init__(member_id)
options = utils.collapse(options, exclude=self.CLIENT_LIST_ARGS)
self._parsed_url = parsed_url
self._options = options
@ -332,7 +332,6 @@ return 1
self._beat_prefix = self._namespace + b"_beats"
self._groups = self._namespace + b"_groups"
self._client = None
self._member_id = utils.to_binary(member_id, encoding=self._encoding)
self._acquired_locks = set()
self._executor = utils.ProxyExecutor.build("Redis", options)
self._started = False

View File

@ -135,9 +135,8 @@ class KazooDriver(coordination.CoordinationDriverCachedRunWatchers):
"""
def __init__(self, member_id, parsed_url, options):
super(KazooDriver, self).__init__()
super(KazooDriver, self).__init__(member_id)
options = utils.collapse(options, exclude=['hosts'])
self._member_id = member_id
self.timeout = int(options.get('timeout', '10'))
self._namespace = options.get('namespace', self.TOOZ_NAMESPACE)
self._coord = self._make_client(parsed_url, options)