Skip to content

Commit

Permalink
Implemented poller keepalive
Browse files Browse the repository at this point in the history
  • Loading branch information
m-mortimer committed Sep 28, 2016
1 parent b99d6e7 commit bed7311
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 10 deletions.
Binary file added controller/app/mod_pollers/.controllers.py.swp
Binary file not shown.
17 changes: 10 additions & 7 deletions controller/app/mod_pollers/controllers.py
Expand Up @@ -5,7 +5,7 @@

mod_pollers = Blueprint('pollers', __name__, url_prefix='/pollers')

pollers = []
pollers = {}


@mod_pollers.route('/', methods=['GET'])
Expand All @@ -16,11 +16,14 @@ def get_pollers():
@mod_pollers.route('/register', methods=['POST'])
def register():
if not request.json:
print('hit')
return render_template('pollers/pollers.html', pollers=pollers)

poller = Poller(request.json['ip'],
request.json['port'],
request.json['name'])
pollers.append(poller)
return jsonify({'status': 'poller created'}), 201
if request.json['name'] not in pollers:
poller = Poller(request.json['ip'],
request.json['port'],
request.json['name'])
pollers[request.json['name']] = poller
return jsonify({'status': 'poller created'}), 201
else:
pollers[request.json['name']].keepalive()
return jsonify({'status': 'poller keepalive'}), 201
4 changes: 2 additions & 2 deletions controller/app/templates/pollers/pollers.html
Expand Up @@ -17,13 +17,13 @@ <h2>All Pollers</h2>
<th>Online since</th>
<th>Last keepalive</th>
</tr>
{% for poller in pollers %}
{% for poller_name, poller in pollers.items() %}
<tr>
<td>{{ poller.name }}</td>
<td>{{ poller.ip }}</td>
<td>{{ poller.port }}</td>
<td>
{% if poller.online %}
{% if poller.is_online %}
<span class="label label-success">Online</span>
{% else %}
<span class="label label-danger">Offline</span>
Expand Down
19 changes: 18 additions & 1 deletion controller/libs/pollers.py
Expand Up @@ -17,4 +17,21 @@ def __init__(self, ip, port, name=None):
self.port = port
self.name = name
self.online_since = time()
self.last_keepalive = None
self.last_keepalive = time()
self.keepalive_interval = 120
self._is_online = True

@property
def is_online(self):
"""Check if the poller is still online"""
next_keepalive = self.last_keepalive + self.keepalive_interval
if next_keepalive >= time():
self._is_online = True
else:
self._is_online = False

return self._is_online

def keepalive(self):
"""Handle received keepalive"""
self.last_keepalive = time()

0 comments on commit bed7311

Please sign in to comment.