diff options
Diffstat (limited to 'esds/platform.py')
| -rw-r--r-- | esds/platform.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/esds/platform.py b/esds/platform.py index 40f8301..b8b8b6e 100644 --- a/esds/platform.py +++ b/esds/platform.py @@ -58,7 +58,8 @@ class YAMLPlatformFile: "node_count": 0, "implementations": [], "arguments": [], - "groups": dict(), + "groups": dict(), # {node_id} => group + "nodes_interfaces": dict(), # {node_id} => [interfaces] "interfaces": dict() } @@ -103,6 +104,10 @@ class YAMLPlatformFile: def parse_interfaces(self): interfaces=self.platform["interfaces"] node_count=self.default["node_count"] + ##### Init nodes interfaces + for node in range(0,self.default["node_count"]): + self.default["nodes_interfaces"][node]=list() + ##### Parse interfaces for i in interfaces: if interfaces[i]["type"] not in ["wireless","wired"]: self.parsing_error("Invalid interface type \""+interfaces[i]["type"]+"\"") @@ -112,6 +117,13 @@ class YAMLPlatformFile: self.parsing_error("Invalide type of links in interface "+i) for link in interfaces[i]["links"]: links.append(self.parse_link(link)) + ##### Assign interfaces to nodes + if "nodes" in interfaces[i]: + r=UnitsParser.node_range(str(interfaces[i]["nodes"]),self.default["node_count"]) + for node in r: + self.default["nodes_interfaces"][node].append(i) + else: + self.parsing_error("missing nodes section on interface "+i) ##### Create network matrix BW=np.full((node_count,node_count),0) LAT=np.full((node_count,node_count),0) @@ -220,9 +232,9 @@ class YAMLPlatformFile: simulator=Simulator(self.default["interfaces"]) for node_id in range(0,self.default["node_count"]): if node_id in self.default["groups"]: - simulator.create_node(self.default["implementations"][node_id], args=self.default["arguments"][node_id],grp=self.default["groups"][node_id]) + simulator.create_node(self.default["implementations"][node_id],self.default["nodes_interfaces"][node_id], args=self.default["arguments"][node_id],grp=self.default["groups"][node_id]) else: - simulator.create_node(self.default["implementations"][node_id], args=self.default["arguments"][node_id]) + simulator.create_node(self.default["implementations"][node_id],self.default["nodes_interfaces"][node_id], args=self.default["arguments"][node_id]) ##### Run simulation simulator.run( breakpoints=self.default["breakpoints"], |
