This repository has been archived by the owner on Oct 22, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
services.py
81 lines (67 loc) · 1.84 KB
/
services.py
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import config
moduleLogger = config.getLogger('services')
class Backend(object):
def __init__(self, host, priority = 0, **kwargs):
self.host = host
self.priority = priority
def __eq__(self, other):
try:
if self.host == other.host:
return True
except:
pass
return False
def __hash__(self):
return (hash(type(self)) ^ hash(self.host) ^ hash(self.priority))
class Service(object):
def __init__(self, name):
self.name = name
self.backends = set()
self.added = []
self.removed = []
self.last_pushed = 0
self.changed = True
self.logger = moduleLogger.getChild(name)
def __eq__(self, other):
try:
if self.name == other.name:
return True
except:
pass
return False
def addBackend(self, backend):
# self.backends.add(backend)
self.added.append(backend)
self.logger.debug('Added backend %s'%backend.host)
def removeBackend(self, backend):
try:
backend.remove(backend)
except:
pass
# removes backends that have not been re-added since the last call to diff
def diff(self):
self.removed = self.backends - set(self.added)
numAdded = len(set(self.added)-self.backends)
numRemoved = len(self.removed)
merged = self.backends.update(self.added)
self.backends = self.backends - self.removed
self.added = []
if numAdded or numRemoved:
self.changed = True
else:
self.changed = False
#
# keep = []
# for backend in self.backends:
# if not backend in self.added:
# self.removed.append(backend)
# self.logger.debug('Removing backend %s'%backend.host)
# else:
# keep.append(backend)
# self.logger.debug('Keeping backend %s'%backend.host)
#
# self.backends = keep
# self.added = []
self.logger.debug('Added %i backends - Kept %i backends - Removed %i backend'%(numAdded, len(self.backends)-numAdded, numRemoved))
def shouldUpdate(self):
return self.changed