X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmethods%2Fget_aggregates.py;h=da9859a9109dc4fe56e2802b8128d226f0251a86;hb=11d02cbfd5e91784119bb9377fceb4fa6adae621;hp=c057fa02a40950d95bffaebb7988d56e7c4249de;hpb=659c7d28a74bc258eab939928b43c05df46960fb;p=sfa.git diff --git a/sfa/methods/get_aggregates.py b/sfa/methods/get_aggregates.py index c057fa02..da9859a9 100644 --- a/sfa/methods/get_aggregates.py +++ b/sfa/methods/get_aggregates.py @@ -1,8 +1,8 @@ ### $Id: get_slices.py 14387 2009-07-08 18:19:11Z faiyaza $ ### $URL: https://svn.planet-lab.org/svn/sfa/trunk/sfa/methods/get_aggregates.py $ - +from types import StringTypes from sfa.util.faults import * -from sfa.util.misc import * +from sfa.util.namespace import * from sfa.util.method import Method from sfa.util.parameter import Parameter, Mixed from sfa.trust.auth import Auth @@ -13,7 +13,7 @@ class get_aggregates(Method): Get a list of connection information for all known aggregates. @param cred credential string specifying the rights of the caller - @param a Human readable name (hrn), or list of hrns or None + @param a Human readable name (hrn or urn), or list of hrns or None @return list of dictionaries with aggregate information. """ @@ -21,15 +21,26 @@ class get_aggregates(Method): accepts = [ Parameter(str, "Credential string"), - Mixed([Parameter(str, "Human readable name (hrn)")], - Parameter(str, "Human readable name (hrn)"), - Parameter(None, "hrn not specified")) + Mixed(Parameter(str, "Human readable name (hrn or urn)"), + Parameter(None, "hrn not specified")) ] returns = [Parameter(dict, "Aggregate interface information")] - def call(self, cred, hrn = None): - + def call(self, cred, xrn = None): + hrn, type = urn_to_hrn(xrn) self.api.auth.check(cred, 'list') aggregates = Aggregates(self.api) - return aggregates.interfaces + hrn_list = [] + if hrn: + if isinstance(hrn, StringTypes): + hrn_list = [hrn] + elif isinstance(hrn, list): + hrn_list = hrn + + if not hrn_list: + interfaces = aggregates.interfaces + else: + interfaces = [interface for interface in aggregates.interfaces if interface['hrn'] in hrn_list] + + return interfaces