#94 indicate outdated cluster data by pulsating
This commit is contained in:
@@ -110,4 +110,9 @@ def query_kubernetes_cluster(cluster):
|
||||
container['resources']['usage'] = container_metrics['usage']
|
||||
except Exception as e:
|
||||
logger.warning('Failed to query pod metrics for cluster {}: {}'.format(cluster.id, get_short_error_message(e)))
|
||||
return {'id': cluster_id, 'api_server_url': api_server_url, 'nodes': nodes, 'unassigned_pods': unassigned_pods}
|
||||
return {
|
||||
'id': cluster_id,
|
||||
'api_server_url': api_server_url,
|
||||
'nodes': nodes,
|
||||
'unassigned_pods': unassigned_pods
|
||||
}
|
||||
|
||||
@@ -88,9 +88,15 @@ def event(cluster_ids: set):
|
||||
# first sent full data once
|
||||
for cluster_id in app.store.get_cluster_ids():
|
||||
if not cluster_ids or cluster_id in cluster_ids:
|
||||
status = app.store.get_cluster_status(cluster_id)
|
||||
if status:
|
||||
# send the cluster status including last_query_time BEFORE the cluster data
|
||||
# so the UI knows how to render correctly from the start
|
||||
yield 'event: clusterstatus\ndata: ' + json.dumps({'cluster_id': cluster_id, 'status': status}, separators=(',', ':')) + '\n\n'
|
||||
cluster = app.store.get_cluster_data(cluster_id)
|
||||
if cluster:
|
||||
yield 'event: clusterupdate\ndata: ' + json.dumps(cluster, separators=(',', ':')) + '\n\n'
|
||||
|
||||
while True:
|
||||
for event_type, event_data in app.store.listen():
|
||||
# hacky, event_data can be delta or full cluster object
|
||||
|
||||
@@ -55,6 +55,7 @@ def update_clusters(cluster_discoverer, query_cluster: callable, store, query_in
|
||||
except Exception as e:
|
||||
backoff = handle_query_failure(e, cluster, backoff)
|
||||
status['backoff'] = backoff
|
||||
store.publish('clusterstatus', {'cluster_id': cluster.id, 'status': status})
|
||||
else:
|
||||
status['last_query_time'] = now
|
||||
if backoff:
|
||||
@@ -70,6 +71,8 @@ def update_clusters(cluster_discoverer, query_cluster: callable, store, query_in
|
||||
store.set_cluster_data(cluster.id, data)
|
||||
else:
|
||||
logger.info('Discovered new cluster {} ({}).'.format(cluster.id, cluster.api_server_url))
|
||||
# first send status with last_query_time!
|
||||
store.publish('clusterstatus', {'cluster_id': cluster.id, 'status': status})
|
||||
store.publish('clusterupdate', data)
|
||||
store.set_cluster_data(cluster.id, data)
|
||||
store.set_cluster_status(cluster.id, status)
|
||||
|
||||
Reference in New Issue
Block a user