X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager_pl.py;h=5355f97b36fb4cba9587dee79cff4ba57e276fac;hb=725c637b3d6f4e41773b83f7977e2ba962b5b1b7;hp=91d9a4d521730c6c0fc83eb4af8920f35442d1c6;hpb=8d67c9b5e611fe17c97902b0092f71f53b03329d;p=sfa.git diff --git a/sfa/managers/aggregate_manager_pl.py b/sfa/managers/aggregate_manager_pl.py index 91d9a4d5..5355f97b 100644 --- a/sfa/managers/aggregate_manager_pl.py +++ b/sfa/managers/aggregate_manager_pl.py @@ -154,16 +154,16 @@ def slice_status(api, slice_xrn, creds): # XX remove me return result -def create_slice(api, slice_xrn, creds, rspec, users, call_id): +def CreateSliver(api, slice_xrn, creds, rspec, users, call_id): """ Create the sliver[s] (slice) at this aggregate. Verify HRN and initialize the slice record in PLC if necessary. """ - if Callids().already_handled(call_id): return False + if Callids().already_handled(call_id): return "" reg_objects = __get_registry_objects(slice_xrn, creds, users) - hrn, type = urn_to_hrn(slice_xrn) + (hrn, type) = urn_to_hrn(slice_xrn) peer = None slices = Slices(api) peer = slices.get_peer(hrn) @@ -205,13 +205,13 @@ def create_slice(api, slice_xrn, creds, rspec, users, call_id): api.plshell.BindObjectToPeer(api.plauth, 'slice', slice.id, peer, slice.peer_id) - # print network.toxml() + # xxx - check this holds enough data for the client to understand what's happened + return network.toxml() - return True - -def renew_slice(api, xrn, creds, expiration_time): - hrn, type = urn_to_hrn(xrn) +def RenewSliver(api, xrn, creds, expiration_time, call_id): + if Callids().already_handled(call_id): return True + (hrn, type) = urn_to_hrn(xrn) slicename = hrn_to_pl_slicename(hrn) slices = api.plshell.GetSlices(api.plauth, {'name': slicename}, ['slice_id']) if not slices: @@ -219,8 +219,11 @@ def renew_slice(api, xrn, creds, expiration_time): slice = slices[0] requested_time = utcparse(expiration_time) record = {'expires': int(time.mktime(requested_time.timetuple()))} - api.plshell.UpdateSlice(api.plauth, slice['slice_id'], record) - return 1 + try: + api.plshell.UpdateSlice(api.plauth, slice['slice_id'], record) + return True + except: + return False def start_slice(api, xrn, creds): hrn, type = urn_to_hrn(xrn) @@ -255,8 +258,9 @@ def reset_slice(api, xrn): # XX not implemented at this interface return 1 -def delete_slice(api, xrn, creds): - hrn, type = urn_to_hrn(xrn) +def DeleteSliver(api, xrn, creds, call_id): + if Callids().already_handled(call_id): return "" + (hrn, type) = urn_to_hrn(xrn) slicename = hrn_to_pl_slicename(hrn) slices = api.plshell.GetSlices(api.plauth, {'name': slicename}) if not slices: @@ -274,9 +278,13 @@ def delete_slice(api, xrn, creds): api.plshell.BindObjectToPeer(api.plauth, 'slice', slice['slice_id'], peer, slice['peer_slice_id']) return 1 -def get_slices(api, creds): +# xxx Thierry : caching at the aggregate level sounds wrong... +caching=True +#caching=False +def ListSlices(api, creds, call_id): + if Callids().already_handled(call_id): return [] # look in cache first - if api.cache: + if caching and api.cache: slices = api.cache.get('slices') if slices: return slices @@ -287,14 +295,11 @@ def get_slices(api, creds): slice_urns = [hrn_to_urn(slice_hrn, 'slice') for slice_hrn in slice_hrns] # cache the result - if api.cache: + if caching and api.cache: api.cache.add('slices', slice_urns) return slice_urns -# xxx Thierry : caching at the aggregate level sounds wrong... -caching=True -#caching=False def ListResources(api, creds, options,call_id): if Callids().already_handled(call_id): return "" # get slice's hrn from options @@ -336,7 +341,7 @@ def get_ticket(api, xrn, creds, rspec, users): credential = api.getCredential() records = registry.Resolve(xrn, credential) - # similar to create_slice, we must verify that the required records exist + # similar to CreateSliver, we must verify that the required records exist # at this aggregate before we can issue a ticket site_id, remote_site_id = slices.verify_site(registry, credential, slice_hrn, peer, sfa_peer, reg_objects) @@ -393,7 +398,7 @@ def main(): f = open(sys.argv[1]) xml = f.read() f.close() - create_slice(api, "plc.princeton.sapan", xml, 'create_slice_sapan') + CreateSliver(api, "plc.princeton.sapan", xml, 'CreateSliver_sapan') if __name__ == "__main__": main()