X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Faggregates%2Frspec_manager_openflow.py;h=2eeeacc649a3425265915e9dffe1d3a2d3b59ac8;hb=4ff67c801ceeb1d0c7ca2863c2b7bf8152182b8f;hp=da473c9e672728ad7f67ba24ff92c90429488f56;hpb=06595a92c147634d86273eb48c30a111d1240e13;p=sfa.git diff --git a/sfa/rspecs/aggregates/rspec_manager_openflow.py b/sfa/rspecs/aggregates/rspec_manager_openflow.py index da473c9e..2eeeacc6 100755 --- a/sfa/rspecs/aggregates/rspec_manager_openflow.py +++ b/sfa/rspecs/aggregates/rspec_manager_openflow.py @@ -1,15 +1,20 @@ -from sfa.util.faults import * -from sfa.util.misc import * -from sfa.util.rspec import Rspec -from sfa.server.registry import Registries -from sfa.plc.nodes import * -from sfa.util.config import Config - import sys + +#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 -# Message IDs for all the GENI light calls +from sfa.util.faults import * +from sfa.util.rspec import RSpec +from sfa.server.registry import Registries +from sfa.util.config import Config +from sfa.plc.nodes import * + +# Message IDs for all the SFA light calls # This will be used by the aggrMgr controller SFA_GET_RESOURCES = 101 SFA_CREATE_SLICE = 102 @@ -43,7 +48,7 @@ def extract(sock): break msg += chunk - print 'done extracting response from aggrMgr' + print 'Done extracting %d bytes of response from aggrMgr' % len(msg) return msg def connect(server, port): @@ -51,12 +56,12 @@ def connect(server, port): sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM ) sock.connect ( ( server, port) ) sock.settimeout(1) - print 'connected to aggregate manager module' + if DEBUG: print 'Connected!' return sock def connect_aggrMgr(): (aggr_mgr_ip, aggr_mgr_port) = Config().get_openflow_aggrMgr_info() - print """Connecting to port %d of %s""" % (aggr_mgr_port, aggr_mgr_ip) + if DEBUG: print """Connecting to port %d of %s""" % (aggr_mgr_port, aggr_mgr_ip) return connect(aggr_mgr_ip, aggr_mgr_port) def generate_slide_id(cred, hrn): @@ -64,7 +69,7 @@ def generate_slide_id(cred, hrn): cred = "" if hrn == None: hrn = "" - #return str(cred) + '_' + str(hrn) + #return cred + '_' + hrn return str(hrn) def msg_aggrMgr(cred, hrn, msg_id): @@ -78,7 +83,7 @@ def msg_aggrMgr(cred, hrn, msg_id): aggrMgr_sock.send(buf) aggrMgr_sock.close() return 1 - except socketerror, message: + except socket.error, message: print "Socket error" except IOerror, message: print "IO error" @@ -100,8 +105,8 @@ def reset_slices(cred, hrn): 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" +def CreateSliver(cred, hrn, rspec): + 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) @@ -110,17 +115,19 @@ def create_slice(cred, hrn, rspec): try: aggrMgr_sock = connect_aggrMgr() aggrMgr_sock.send(buf) + if DEBUG: print "Sent %d bytes and closing connection" % len(buf) aggrMgr_sock.close() - print "Sent %d bytes and closing connection" % len(buf) + + if DEBUG: print "----------------" return 1 - except socketerror, message: + except socket.error, message: print "Socket error" except IOerror, message: print "IO error" return 0 -def get_rspec(cred, hrn=None): - if DEBUG: print "Received get_rspec call" +def ListResources(cred, hrn=None): + 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) @@ -132,21 +139,28 @@ def get_rspec(cred, hrn=None): resource_list = extract(aggrMgr_sock); aggrMgr_sock.close() + if DEBUG: print "----------------" return resource_list - except socketerror, message: + except socket.error, message: print "Socket error" except IOerror, message: print "IO error" return None +""" +Returns the request context required by sfatables. At some point, this mechanism should be changed +to refer to "contexts", which is the information that sfatables is requesting. But for now, we just +return the basic information needed in a dict. +""" def fetch_context(slice_hrn, user_hrn, contexts): - return None - -#def main(): -# r = Rspec() -# r.parseFile(sys.argv[1]) -# rspec = r.toDict() -# create_slice(None,'plc',rspec) + base_context = {'sfa':{'user':{'hrn':user_hrn}}} + return base_context + +def main(): + r = RSpec() + r.parseFile(sys.argv[1]) + rspec = r.toDict() + CreateSliver(None,'plc',rspec) -#if __name__ == "__main__": -# main() +if __name__ == "__main__": + main()