aboutsummaryrefslogtreecommitdiff
path: root/rumba/model.py
diff options
context:
space:
mode:
authorVincenzo Maffione <v.maffione@gmail.com>2017-04-21 23:12:42 +0200
committerVincenzo Maffione <v.maffione@gmail.com>2017-04-21 23:45:06 +0200
commite4662a39489067f0d352d270e25df3da6ff478d8 (patch)
tree972cca8525819b26b633470b711e7a7e1ab280c9 /rumba/model.py
parentbec81866d4da33405c35c8eb4dc15d4fc5bfbfb7 (diff)
downloadrumba-e4662a39489067f0d352d270e25df3da6ff478d8.tar.gz
rumba-e4662a39489067f0d352d270e25df3da6ff478d8.zip
model, prototypes: enrollment lists contain IPCP objects rather than Node ones
This fixes a conceptual bug, that was leading to unnecessary workarounds in the prototype plugins. All the plugins have been modified to use the correct format of enrollment lists.
Diffstat (limited to 'rumba/model.py')
-rw-r--r--rumba/model.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/rumba/model.py b/rumba/model.py
index 68c6c51..9187fcb 100644
--- a/rumba/model.py
+++ b/rumba/model.py
@@ -173,6 +173,11 @@ class Node:
self._validate()
+ def get_ipcp_by_dif(self, dif):
+ for ipcp in self.ipcps:
+ if ipcp.dif == dif:
+ return ipcp
+
def _undeclared_dif(self, dif):
if dif not in self.difs:
raise Exception("Invalid registration: node %s is not declared "
@@ -458,9 +463,13 @@ class Experiment:
for edge in dif_graphs[dif][cur]:
if edge[0] not in enrolled:
enrolled.add(edge[0])
+ enrollee = edge[0].get_ipcp_by_dif(dif)
+ assert(enrollee is not None)
+ enroller = cur.get_ipcp_by_dif(dif)
+ assert(enroller is not None)
self.enrollments[-1].append({'dif': dif,
- 'enrollee': edge[0],
- 'enroller': cur,
+ 'enrollee': enrollee,
+ 'enroller': enroller,
'lower_dif': edge[1]})
frontier.add(edge[0])
@@ -468,9 +477,13 @@ class Experiment:
for cur in dif_graphs[dif]:
for edge in dif_graphs[dif][cur]:
if cur < edge[0]:
+ enrollee = cur.get_ipcp_by_dif(dif)
+ assert(enrollee is not None)
+ enroller = edge[0].get_ipcp_by_dif(dif)
+ assert(enroller is not None)
self.enrollments[-1].append({'dif': dif,
- 'enrollee': cur,
- 'enroller': edge[0],
+ 'enrollee': enrollee,
+ 'enroller': enroller,
'lower_dif': edge[1]})
else: