MCPcopy
hub / github.com/jumpserver/jumpserver / check_node_assets_amount

Function check_node_assets_amount

apps/assets/utils/node.py:19–46  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

17@NodeTreeUpdateLock()
18@ensure_in_real_or_default_org
19def check_node_assets_amount():
20 logger.info(f'Check node assets amount {current_org}')
21 m2m_model = Asset.nodes.through
22 nodes = list(Node.objects.all().only('id', 'key', 'assets_amount'))
23 nodeid_assetid_pairs = list(m2m_model.objects.all().values_list('node_id', 'asset_id'))
24
25 nodekey_assetids_mapper = defaultdict(set)
26 nodeid_nodekey_mapper = {}
27 for node in nodes:
28 nodeid_nodekey_mapper[node.id] = node.key
29
30 for node_id, asset_id in nodeid_assetid_pairs:
31 if node_id not in nodeid_nodekey_mapper:
32 continue
33 node_key = nodeid_nodekey_mapper[node_id]
34 nodekey_assetids_mapper[node_key].add(asset_id)
35
36 util = NodeAssetsUtil(nodes, nodekey_assetids_mapper)
37 util.generate()
38
39 to_updates = []
40 for node in nodes:
41 assets_amount = util.get_assets_amount(node.key)
42 if node.assets_amount != assets_amount:
43 logger.error(f'Node[{node.key}] assets amount error {node.assets_amount} != {assets_amount}')
44 node.assets_amount = assets_amount
45 to_updates.append(node)
46 Node.objects.bulk_update(to_updates, fields=('assets_amount',))
47
48
49def is_query_node_all_assets(request):

Callers 1

Calls 7

generateMethod · 0.95
get_assets_amountMethod · 0.95
NodeAssetsUtilClass · 0.85
infoMethod · 0.80
addMethod · 0.80
allMethod · 0.45
bulk_updateMethod · 0.45

Tested by

no test coverage detected