From: Faiyaz Ahmed Date: Mon, 6 Jul 2009 21:13:18 +0000 (+0000) Subject: Call to get whole record, not just tags. X-Git-Tag: NodeManager-1.8-24~5 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=6f0312aab00195b923089a3a37174bd9cca0d136;p=nodemanager.git Call to get whole record, not just tags. --- diff --git a/api.py b/api.py index 9b09d06..350cb25 100644 --- a/api.py +++ b/api.py @@ -74,13 +74,19 @@ class APIRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): # Anyone can call these functions elif method_name not in ('Help', 'Ticket', 'GetXIDs', 'GetSSHKeys'): # Authenticate the caller if not in the above fncts. - target_name = args[0] + if method_name == "GetRecord": + target_name = caller_name + else: + target_name = args[0] + # Gather target slice's object. target_rec = database.db.get(target_name) - # only work on slivers. Sannity check. + + # only work on slivers or self. Sannity check. if not (target_rec and target_rec['type'].startswith('sliver.')): raise xmlrpclib.Fault(102, \ 'Invalid argument: the first argument must be a sliver name.') + # only manipulate slivers who delegate you authority if caller_name in (target_name, target_rec['delegations']): try: result = method(target_rec, *args[1:]) diff --git a/api_calls.py b/api_calls.py index 931760b..8e717ab 100644 --- a/api_calls.py +++ b/api_calls.py @@ -273,10 +273,9 @@ def SetLoans(sliver_name, loans): database.db.sync() @export_to_docbook(roles=['nm-controller', 'self'], - accepts=[ Parameter(str, 'A sliver/slice name.')], - returns=Parameter(dict, 'Tag dictionary')) -@export_to_api(1) -def GetTags(sliver_name): - """Return sliver tags set at PLC""" + returns=Parameter(dict, 'Record dictionary')) +@export_to_api(0) +def GetRecord(sliver_name): + """Return sliver record""" rec = sliver_name - return rec.get('attributes', []) + return rec