X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fmanagers%2Faggregate_manager_openflow.py;h=a804a6518bf48996972e09aa5cf05986533d28e4;hb=60b7c351f1f17e3af13f7b9f23cb10c630f053ba;hp=df1cf78531855b15e9d1a44b508d4f28edebb28b;hpb=c6808303b7564ed7ba3bc888c4f6e56167a83e2a;p=sfa.git diff --git a/sfa/managers/aggregate_manager_openflow.py b/sfa/managers/aggregate_manager_openflow.py index df1cf785..a804a651 100755 --- a/sfa/managers/aggregate_manager_openflow.py +++ b/sfa/managers/aggregate_manager_openflow.py @@ -1,20 +1,21 @@ -from sfa.util.faults import * -from sfa.util.misc import * -from sfa.util.rspec import RSpec -from sfa.server.registry import Registries -from sfa.util.config import Config -from sfa.plc.nodes import * import sys +import socket +import struct + #The following is not essential #from soaplib.wsgi_soap import SimpleWSGISoapApp #from soaplib.serializers.primitive import * #from soaplib.serializers.clazz import * -import socket -import struct +from sfa.util.faults import * +from sfa.util.xrn import urn_to_hrn +from sfa.server.registry import Registries +from sfa.util.config import Config +from sfa.plc.nodes import * +from sfa.util.callids import Callids -# Message IDs for all the GENI light calls +# Message IDs for all the SFA light calls # This will be used by the aggrMgr controller SFA_GET_RESOURCES = 101 SFA_CREATE_SLICE = 102 @@ -89,24 +90,33 @@ def msg_aggrMgr(cred, hrn, msg_id): print "IO error" return 0 -def start_slice(cred, hrn): +def start_slice(cred, xrn): + hrn = urn_to_hrn(xrn)[0] if DEBUG: print "Received start_slice call" return msg_aggrMgr(SFA_START_SLICE) -def stop_slice(cred, hrn): +def stop_slice(cred, xrn): + hrn = urn_to_hrn(xrn)[0] if DEBUG: print "Received stop_slice call" return msg_aggrMgr(SFA_STOP_SLICE) -def delete_slice(cred, hrn): - if DEBUG: print "Received delete_slice call" +def DeleteSliver(cred, xrn, call_id): + if Callids().already_handled(call_id): return "" + hrn = urn_to_hrn(xrn)[0] + if DEBUG: print "Received DeleteSliver call" return msg_aggrMgr(SFA_DELETE_SLICE) -def reset_slices(cred, hrn): +def reset_slices(cred, xrn): + hrn = urn_to_hrn(xrn)[0] if DEBUG: print "Received reset_slices call" return msg_aggrMgr(SFA_RESET_SLICES) -def create_slice(cred, hrn, rspec): - if DEBUG: print "Received create_slice call" +### Thierry: xxx this should ahve api as a first arg - probably outdated +def CreateSliver(cred, xrn, rspec, call_id): + if Callids().already_handled(call_id): return "" + + hrn = urn_to_hrn(xrn)[0] + if DEBUG: print "Received CreateSliver call" slice_id = generate_slide_id(cred, hrn) msg = struct.pack('> B%ds%ds' % (len(slice_id)+1, len(rspec)), SFA_CREATE_SLICE, slice_id, rspec) @@ -119,15 +129,17 @@ def create_slice(cred, hrn, rspec): aggrMgr_sock.close() if DEBUG: print "----------------" - return 1 + return rspec except socket.error, message: print "Socket error" except IOerror, message: print "IO error" - return 0 + return "" -def get_rspec(cred, hrn=None): - if DEBUG: print "Received get_rspec call" +# Thierry : xxx this would need to handle call_id like the other AMs but is outdated... +def ListResources(cred, xrn=None): + hrn = urn_to_hrn(xrn)[0] + if DEBUG: print "Received ListResources call" slice_id = generate_slide_id(cred, hrn) msg = struct.pack('> B%ds' % len(slice_id), SFA_GET_RESOURCES, slice_id) @@ -160,7 +172,7 @@ def main(): r = RSpec() r.parseFile(sys.argv[1]) rspec = r.toDict() - create_slice(None,'plc',rspec) + CreateSliver(None,'plc',rspec,'call-id-plc') if __name__ == "__main__": main()