mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
return existing nodes
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
class NodeType:
|
||||
OFFLINE = 0
|
||||
ONLINE = 1
|
||||
ONLINE = 'online'
|
||||
OFFLINE = 'offline'
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user