From 6f0312aab00195b923089a3a37174bd9cca0d136 Mon Sep 17 00:00:00 2001 From: Faiyaz Ahmed Date: Mon, 6 Jul 2009 21:13:18 +0000 Subject: [PATCH] Call to get whole record, not just tags. --- api.py | 10 ++++++++-- api_calls.py | 11 +++++------ 2 files changed, 13 insertions(+), 8 deletions(-) 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 -- 2.47.0