From: Andy Bavier Date: Tue, 16 Feb 2010 17:59:37 +0000 (+0000) Subject: (no commit message) X-Git-Tag: sfa-0.9-11~104 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;ds=sidebyside;h=5492433fe2dbd3c79623b5d1505a6337e194b5d4;p=sfa.git --- diff --git a/sfa/managers/slice_manager_pl.py b/sfa/managers/slice_manager_pl.py index 80d98f13..4a6fdf07 100644 --- a/sfa/managers/slice_manager_pl.py +++ b/sfa/managers/slice_manager_pl.py @@ -190,23 +190,26 @@ def get_rspec(api, xrn=None, origin_hrn=None): try: # get the rspec from the aggregate agg_rspec = aggs[agg].get_resources(cred, xrn, origin_hrn) - - tree = etree.parse(StringIO(agg_rspec)) - root = tree.getroot() - if root.get("type") in ["Planetlab", "VINI"]: - # Validate the aggregate's RSpec? - - if rspec == None: - rspec = root - else: - for network in root.iterfind("./network"): - rspec.append(deepcopy(network)) except: # XX print out to some error log print >> log, "Error getting resources at aggregate %s" % agg traceback.print_exc(log) print >> log, "%s" % (traceback.format_exc()) + + try: + tree = etree.parse(StringIO(agg_rspec)) + except etree.XMLSyntaxError: + message = agg + ": " + str(sys.exc_info()[1]) + raise InvalidRSpec(message) + + root = tree.getroot() + if root.get("type") in ["Planetlab", "VINI"]: + if rspec == None: + rspec = root + else: + for network in root.iterfind("./network"): + rspec.append(deepcopy(network)) return etree.tostring(rspec, xml_declaration=True, pretty_print=True)