return existing nodes

This commit is contained in:
Marvin Zhang
2019-02-21 14:18:26 +08:00
parent 913c0644c9
commit 4e6e2e76de
2 changed files with 40 additions and 27 deletions

View File

@@ -1,3 +1,3 @@
class NodeType:
OFFLINE = 0
ONLINE = 1
ONLINE = 'online'
OFFLINE = 'offline'

View File

@@ -13,8 +13,8 @@ class NodeApi(BaseApi):
col_name = 'nodes'
arguments = (
('ip', str),
('port', int),
# ('ip', str),
# ('port', int),
('name', str),
('description', str),
)
@@ -35,36 +35,49 @@ class NodeApi(BaseApi):
return db_manager.get('nodes', id=id)
# get a list of items
else:
res = requests.get('%s/workers' % FLOWER_API_ENDPOINT)
for k, v in json.loads(res.content.decode('utf-8')).items():
node_name = k
node_celery = v
node = db_manager.get('nodes', id=node_name)
res = requests.get('%s/workers' % FLOWER_API_ENDPOINT)
online_node_ids = []
for k, v in json.loads(res.content.decode('utf-8')).items():
node_name = k
node_celery = v
node = db_manager.get('nodes', id=node_name)
# new node
if node is None:
node = {}
for _k, _v in v.items():
node[_k] = _v
node['_id'] = node_name
node['name'] = node_name
node['status'] = NodeType.ONLINE
db_manager.save('nodes', node)
# new node
if node is None:
node = {}
for _k, _v in node_celery.items():
node[_k] = _v
node['_id'] = node_name
node['name'] = node_name
node['status'] = NodeType.ONLINE
db_manager.save('nodes', node)
# existing node
else:
for _k, _v in v.items():
node[_k] = _v
node['name'] = node_name
node['status'] = NodeType.ONLINE
db_manager.save('nodes', node)
# existing node
else:
for _k, _v in v.items():
node[_k] = _v
node['name'] = node_name
node['status'] = NodeType.ONLINE
db_manager.save('nodes', node)
online_node_ids.append(node_name)
# iterate db nodes to update status
nodes = []
items = db_manager.list('nodes', {})
for item in items:
if item['_id'] in online_node_ids:
item['status'] = NodeType.ONLINE
else:
item['status'] = NodeType.OFFLINE
db_manager.update_one('nodes', item['_id'], {
'status': item['status']
})
nodes.append(item)
return jsonify({
'status': 'ok',
'items': items
'items': nodes
})
def spider(self, id=None):