From e400ca748829fc15934b29c06eb43f8f4a9af0fe Mon Sep 17 00:00:00 2001 From: Andy Bavier Date: Wed, 10 Feb 2010 18:01:49 +0000 Subject: [PATCH 1/1] Added free_egre_key() --- sfa/managers/vini/vini_network.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/sfa/managers/vini/vini_network.py b/sfa/managers/vini/vini_network.py index 06f135d9..5ccf57cc 100644 --- a/sfa/managers/vini/vini_network.py +++ b/sfa/managers/vini/vini_network.py @@ -157,10 +157,9 @@ class ViniSlice(Slice): tag = self.get_tag('egre_key') if not tag: try: - key = free_egre_key() + key = self.network.free_egre_key() except: - # Should handle this case... - raise Error("ran out of EGRE keys!") + raise InvalidRSpec("ran out of EGRE keys!") tag = self.update_tag('egre_key', key, None, 10) return @@ -393,6 +392,24 @@ class ViniNetwork(Network): Network.updateSliceTags(self) + """ + Find a free EGRE key + """ + def free_egre_key(self): + used = set() + for tag in self.getSliceTags(): + if tag.tagname == 'egre_key': + used.add(int(tag.value)) + + for i in range(1, 256): + if i not in used: + key = i + break + else: + raise KeyError("No more EGRE keys available") + + return str(key) + """ Produce XML directly from the topology specification. """ -- 2.43.0