-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2022 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
raise RuntimeError(u"No path for topology")
return self._path[-2]
- def compute_circular_topology(self, nodes, filter_list=None, nic_pfs=1,
+ def compute_circular_topology(
+ self, nodes, filter_list=None, nic_pfs=1,
always_same_link=False, topo_has_tg=True, topo_has_dut=True):
"""Return computed circular path.
:raises RuntimeError: If unsupported combination of parameters.
"""
t_dict = dict()
+ t_dict[u"hosts"] = set()
if topo_has_dut:
duts = [key for key in nodes if u"DUT" in key]
+ for host in [nodes[dut][u"host"] for dut in duts]:
+ t_dict[u"hosts"].add(host)
t_dict[u"duts"] = duts
t_dict[u"duts_count"] = len(duts)
t_dict[u"int"] = u"pf"
for _ in range(0, nic_pfs // 2):
if topo_has_tg:
- self.append_node(nodes[u"TG"])
+ if topo_has_dut:
+ self.append_node(nodes[u"TG"])
+ else:
+ self.append_node(nodes[u"TG"], filter_list=filter_list)
if topo_has_dut:
for dut in duts:
self.append_node(nodes[dut], filter_list=filter_list)
if topo_has_tg:
- self.append_node(nodes[u"TG"])
+ t_dict[u"hosts"].add(nodes[u"TG"][u"host"])
+ if topo_has_dut:
+ self.append_node(nodes[u"TG"])
+ else:
+ self.append_node(nodes[u"TG"], filter_list=filter_list)
self.compute_path(always_same_link, topo_has_dut)
n_idx = 0 # node index