diff --git a/bin/kube-diagrams b/bin/kube-diagrams index b9ef518..7f46dc8 100755 --- a/bin/kube-diagrams +++ b/bin/kube-diagrams @@ -254,7 +254,10 @@ class EdgesContext(list): if volumeClaimTemplates is None: return for volumeClaimTemplate in volumeClaimTemplates: - self.add_storage_class("spec.storageClassName", volumeClaimTemplate) + self.append([ + f"{volumeClaimTemplate['metadata']['name']}/{self.namespace}/PersistentVolumeClaim/v1", + "REFERENCE" + ]) def add_storage_class(self, path, data=None): if data is None: @@ -547,6 +550,20 @@ for filename in args.filename: copy.deepcopy(config.get("clusters", [])) ) cluster.resources[rid] = resource + code_to_exec = get_node_config(resource).get("nodes") + if code_to_exec != None: + nodes = [] + try: + exec(code_to_exec) + except Exception as exc: + print("Error:", type(exc), ":", exc.args) + traceback.print_exception(exc) + print("Edges script:\n", code_to_exec) + print("Resource:") + pprint(resource) + raise + for node in nodes: + process_resource(node) data = yaml.safe_load_all(f) # load YAML file for resource in data: diff --git a/bin/kube-diagrams.yaml b/bin/kube-diagrams.yaml index 4538a01..20ed244 100644 --- a/bin/kube-diagrams.yaml +++ b/bin/kube-diagrams.yaml @@ -340,6 +340,13 @@ nodes: StatefulSet/apps/v1: scoped: Namespaced diagram_node_classname: diagrams.k8s.compute.STS + nodes: | + for vct in query_path(resource, "spec.volumeClaimTemplates", []): + nodes.append( { + "kind": "PersistentVolumeClaim", + "apiVersion": "v1", + **vct + } ) edges: | edges.add_all_resources_matching_labels("Pod", "spec.selector.matchLabels") edges.add_service_account("spec.template.spec") diff --git a/examples/cassandra/cassandra.png b/examples/cassandra/cassandra.png index d31935b..26a1cf0 100644 Binary files a/examples/cassandra/cassandra.png and b/examples/cassandra/cassandra.png differ diff --git a/examples/cassandra/default.png b/examples/cassandra/default.png index 38c23ca..845350f 100644 Binary files a/examples/cassandra/default.png and b/examples/cassandra/default.png differ diff --git a/examples/free5gc-k8s/free5gc-k8s-diagram.png b/examples/free5gc-k8s/free5gc-k8s-diagram.png index 036d28d..4c1c24c 100644 Binary files a/examples/free5gc-k8s/free5gc-k8s-diagram.png and b/examples/free5gc-k8s/free5gc-k8s-diagram.png differ diff --git a/examples/minikube/minikube.png b/examples/minikube/minikube.png index 644a153..d9f9a28 100644 Binary files a/examples/minikube/minikube.png and b/examples/minikube/minikube.png differ diff --git a/examples/open5gs-k8s/open5gs-k8s-diagram.png b/examples/open5gs-k8s/open5gs-k8s-diagram.png index 8ed333d..18c2fe5 100644 Binary files a/examples/open5gs-k8s/open5gs-k8s-diagram.png and b/examples/open5gs-k8s/open5gs-k8s-diagram.png differ diff --git a/examples/zookeeper/namespace_default.png b/examples/zookeeper/namespace_default.png index c1acc05..8021f00 100644 Binary files a/examples/zookeeper/namespace_default.png and b/examples/zookeeper/namespace_default.png differ diff --git a/examples/zookeeper/zookeeper.png b/examples/zookeeper/zookeeper.png index 8bee041..fae9a37 100644 Binary files a/examples/zookeeper/zookeeper.png and b/examples/zookeeper/zookeeper.png differ