1313from django .utils .translation import gettext as _
1414
1515from backend .db_meta .api .cluster .base .graph import Graphic , Group , LineLabel
16+ from backend .db_meta .enums import ClusterEntryRole , InstanceInnerRole
1617from backend .db_meta .models import Cluster , StorageInstanceTuple
1718
1819logger = logging .getLogger ("root" )
@@ -33,7 +34,7 @@ def scan_cluster(cluster: Cluster) -> Graphic:
3334 ).filter (receiver__cluster = cluster , ejector__cluster = cluster ):
3435 ejector_instance = tr .ejector
3536 receiver_instance = tr .receiver
36- ejector_instance_node , ejector_instance_grp = graph .add_node (ejector_instance )
37+ ejector_instance_node , ejector_instance_group = graph .add_node (ejector_instance )
3738 receiver_instance_node , receiver_instance_group = graph .add_node (receiver_instance )
3839 graph .add_line (source = ejector_instance_node , target = receiver_instance_node , label = LineLabel .Rep )
3940
@@ -42,13 +43,26 @@ def scan_cluster(cluster: Cluster) -> Graphic:
4243 proxy_instance_group = None
4344 for proxy_instance in cluster .proxyinstance_set .all ():
4445 dummy_proxy_instance_node , proxy_instance_group = graph .add_node (proxy_instance , proxy_instance_group )
45- backend_instance = proxy_instance .storageinstance .first ()
46- backend_instance_grp = graph .get_or_create_group (* Group .generate_group_info (backend_instance ))
47- graph .add_line (source = proxy_instance_group , target = backend_instance_grp , label = LineLabel .Access )
46+ master_backend_instance = proxy_instance .storageinstance .first ()
47+ master_backend_instance_grp = graph .get_or_create_group (* Group .generate_group_info (master_backend_instance ))
48+ graph .add_line (source = proxy_instance_group , target = master_backend_instance_grp , label = LineLabel .Access )
4849
4950 master_bind_entry_group = Group (node_id = "master_bind_entry_group" , group_name = _ ("访问入口(主)" ))
50- for be in proxy_instance .bind_entry .all ( ):
51- dummy_be_node , master_bind_entry_group = graph .add_node (be , to_group = master_bind_entry_group )
51+ for bind_entry in proxy_instance .bind_entry .filter ( role = ClusterEntryRole . MASTER_ENTRY . value ):
52+ dummy_be_node , master_bind_entry_group = graph .add_node (bind_entry , to_group = master_bind_entry_group )
5253 graph .add_line (source = master_bind_entry_group , target = proxy_instance_group , label = LineLabel .Bind )
5354
55+ # 存储层访问入口
56+ nodes_bind_entry_group = Group (node_id = "nodes_bind_entry_group" , group_name = _ ("存储层访问入口" ))
57+ for bind_entry in master_backend_instance .bind_entry .filter (role = ClusterEntryRole .NODE_ENTRY .value ):
58+ dummy_be_node , nodes_bind_entry_group = graph .add_node (bind_entry , to_group = nodes_bind_entry_group )
59+ graph .add_line (source = nodes_bind_entry_group , target = master_backend_instance_grp , label = LineLabel .Bind )
60+
61+ # slave 存储访问入口
62+ slave_instance = cluster .storageinstance_set .filter (instance_inner_role = InstanceInnerRole .SLAVE .value ).first ()
63+ slave_instance_group = graph .get_or_create_group (* Group .generate_group_info (slave_instance ))
64+ for bind_entry in master_backend_instance .bind_entry .filter (role = ClusterEntryRole .NODE_ENTRY .value ):
65+ dummy_be_node , nodes_bind_entry_group = graph .add_node (bind_entry , to_group = nodes_bind_entry_group )
66+ graph .add_line (source = proxy_instance_group , target = slave_instance_group , label = LineLabel .Bind )
67+
5468 return graph
0 commit comments