From: Andy Bavier Date: Wed, 10 Feb 2010 18:01:49 +0000 (+0000) Subject: Added free_egre_key() X-Git-Tag: sfa-0.9-11~113 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=e400ca748829fc15934b29c06eb43f8f4a9af0fe;hp=0c0bf2e049966f1555a1b0ccc0f1d7f6b709b9d5;p=sfa.git Added free_egre_key() --- 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. """