Skip to content
Snippets Groups Projects
Commit 035b0cc8 authored by Radovan Krebs's avatar Radovan Krebs
Browse files

Implement hidden attribute support

Option to set topology elements to hidden was added to networks and routers,
since we want to avoid having empty networks or routers displayed in the topology.

Pipfile.lock was updated with new kypo-topology-definition version that allows
routers as monitoring targets and added hidden attribute to routers and networks.
parent f789bbd4
No related branches found
No related tags found
1 merge request!11Resolve "Implement hidden routers and rework hidden networks"
Pipeline #344636 passed
...@@ -22,8 +22,11 @@ ...@@ -22,8 +22,11 @@
}, },
"default": { "default": {
"kypo-topology-definition": { "kypo-topology-definition": {
"hashes": [
"sha256:cc9b88e0c192a077db2725e58a007dac351455238d8da2711bb27c573c04f6e3"
],
"index": "kypo", "index": "kypo",
"version": "==0.5.7" "version": "==0.5.8"
}, },
"netaddr": { "netaddr": {
"hashes": [ "hashes": [
...@@ -34,11 +37,11 @@ ...@@ -34,11 +37,11 @@
}, },
"ruamel.yaml": { "ruamel.yaml": {
"hashes": [ "hashes": [
"sha256:36dbbe90390d977f957436570d2bd540bfd600e6ec5a1ea42bcdb9fc7963d802", "sha256:61917e3a35a569c1133a8f772e1226961bf5a1198bea7e23f06a0841dea1ab0e",
"sha256:b5d119e1f9678cf90b58f64bbd2a4e78af76860ae39fab3e73323e622b462df9" "sha256:a013ac02f99a69cdd6277d9664689eb1acba07069f912823177c5eced21a6ada"
], ],
"markers": "python_version >= '3'", "markers": "python_version >= '3.7'",
"version": "==0.18.3" "version": "==0.18.5"
}, },
"ruamel.yaml.clib": { "ruamel.yaml.clib": {
"hashes": [ "hashes": [
......
...@@ -105,17 +105,26 @@ class TopologyInstance: ...@@ -105,17 +105,26 @@ class TopologyInstance:
""" """
return [node for node in self.get_nodes() if node is not self.man] return [node for node in self.get_nodes() if node is not self.man]
def get_visible_hosts(self) -> List[Node]: def get_visible_hosts(self) -> List[Host]:
""" """
Return a list of TI virtual machines that are not hidden directly Return a list of TI virtual machines that are not hidden directly
or through their network. or through their network.
""" """
hosts = [self.get_node(m.host) for m in self.topology_definition.net_mappings visible_networks = self.get_visible_networks()
if not self.get_node(m.host).hidden and not self.get_network(m.network).hidden] hosts = [self.get_node(mapping.host) for mapping in self.topology_definition.net_mappings
if not self.get_node(mapping.host).hidden
and self.get_network(mapping.network) in visible_networks]
# removes duplicates caused by hosts assigned to multiple networks # removes duplicates caused by hosts assigned to multiple networks
return list(set(hosts)) return list(set(hosts))
def get_visible_routers(self) -> List[Router]:
"""
Return a list of TI routers that are not hidden.
"""
return [router for router in self.topology_definition.routers
if not router.hidden]
# get networks # get networks
def get_hosts_networks(self) -> Iterable[Network]: def get_hosts_networks(self) -> Iterable[Network]:
...@@ -152,6 +161,15 @@ class TopologyInstance: ...@@ -152,6 +161,15 @@ class TopologyInstance:
""" """
return self._networks.values() return self._networks.values()
def get_visible_networks(self):
"""
Retrun a list of TI networks that are not hidden, and their router is not hidden.
"""
visible_routers = self.get_visible_routers()
return [self.get_network(mapping.network) for mapping in self.topology_definition.router_mappings
if self.get_node(mapping.router) in visible_routers
and not self.get_network(mapping.network).hidden] + [self.wan]
# get links # get links
def get_node_links(self, node: Node, networks: Iterable[Network] = None) -> List[Link]: def get_node_links(self, node: Node, networks: Iterable[Network] = None) -> List[Link]:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment