@@ -224,35 +224,36 @@ def get_namespace(resource):
224224 """
225225 return query_path (resource , "metadata.namespace" , config .get ("default_namespace" , "default" ))
226226
227+ # Separators in node labels
228+ NODE_LABEL_SEPARATORS = [" " , ":" , "-" , "." ]
229+
230+ def split_node_label (node_label ):
231+ """
232+ Split node labels into multi-lines.
233+ """
234+ result = ""
235+ last_pos = 0
236+ max_pos = len (node_label ) - MAX_NODE_LABEL_LENGTH
237+ while last_pos < max_pos :
238+ part = node_label [last_pos :last_pos + MAX_NODE_LABEL_LENGTH ]
239+ idx = MAX_NODE_LABEL_LENGTH - 1
240+ while idx > 0 :
241+ if part [idx ] in NODE_LABEL_SEPARATORS :
242+ part = part [:idx ]
243+ break
244+ idx -= 1
245+ result += part
246+ result += "\n "
247+ last_pos += len (part )
248+ result += node_label [last_pos :]
249+ return result
250+
227251def create_diagram_node (resource ):
228252 """
229253 Create a diagram node from a Kubernetes resource.
230254 """
231255 # Format node label
232- node_label = get_name (resource )
233- if len (node_label ) > MAX_NODE_LABEL_LENGTH :
234- def split_node_label (node_label , separator ):
235- parts = node_label .split (separator )
236- node_label = parts [0 ]
237- current_length = len (node_label )
238- for part in parts [1 :]:
239- if current_length + len (part ) >= MAX_NODE_LABEL_LENGTH :
240- node_label += "\n "
241- current_length = 0
242- node_label += separator
243- if len (part ) >= MAX_NODE_LABEL_LENGTH :
244- node_label += part [:MAX_NODE_LABEL_LENGTH ]
245- node_label += "\n "
246- node_label += part [MAX_NODE_LABEL_LENGTH :]
247- current_length = len (part [MAX_NODE_LABEL_LENGTH :])
248- else :
249- node_label += part
250- current_length = current_length + 1 + len (part )
251- return node_label
252- for separator in [":" , "-" , "." ]:
253- if separator in node_label :
254- node_label = split_node_label (node_label , separator )
255- break
256+ node_label = split_node_label (get_name (resource ))
256257 # Format node tooltip
257258 tooltip = f"kind: { resource .get ('kind' )} \n " \
258259 + f"apiVersion: { resource .get ('apiVersion' )} \n " \
@@ -1350,7 +1351,7 @@ def create_custom_node(node_id, node_def):
13501351 module = importlib .import_module (diagram_node_classname [:idx ])
13511352 # Get diagram node class
13521353 diagram_node_class = getattr (module , diagram_node_classname [idx + 1 :])
1353- node_label = node_def .get ("name" ,"" )
1354+ node_label = split_node_label ( node_def .get ("name" , "" ) )
13541355 diagram_nodes [node_id ] = diagram_node_class (node_label , tooltip = node_label )
13551356
13561357def create_custom_cluster (cluster_id , cluster_def ):
0 commit comments