git://git.onelab.eu
/
sfa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
removed another bunch of references to geni
[sfa.git]
/
sfa
/
rspecs
/
aggregates
/
rspec_manager_openflow.py
diff --git
a/sfa/rspecs/aggregates/rspec_manager_openflow.py
b/sfa/rspecs/aggregates/rspec_manager_openflow.py
index
f4cf2fe
..
a745b6e
100755
(executable)
--- a/
sfa/rspecs/aggregates/rspec_manager_openflow.py
+++ b/
sfa/rspecs/aggregates/rspec_manager_openflow.py
@@
-1,11
+1,12
@@
from sfa.util.faults import *
from sfa.util.faults import *
-from sfa.util.
misc
import *
-from sfa.util.rspec import R
s
pec
+from sfa.util.
namespace
import *
+from sfa.util.rspec import R
S
pec
from sfa.server.registry import Registries
from sfa.server.registry import Registries
+from sfa.util.config import Config
from sfa.plc.nodes import *
import sys
from sfa.plc.nodes import *
import sys
-#
Probably t
he following is not essential
+#
T
he following is not essential
#from soaplib.wsgi_soap import SimpleWSGISoapApp
#from soaplib.serializers.primitive import *
#from soaplib.serializers.clazz import *
#from soaplib.wsgi_soap import SimpleWSGISoapApp
#from soaplib.serializers.primitive import *
#from soaplib.serializers.clazz import *
@@
-13,12
+14,7
@@
import sys
import socket
import struct
import socket
import struct
-SOAP_INTERFACE_PORT = 7889
-AGGREGATE_MANAGER_PORT = 2603
-AGGREGATE_MANAGER_IP = 'localhost'
-#AGGREGATE_MANAGER_IP = 'openflowvisor.stanford.edu'
-
-# 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
# This will be used by the aggrMgr controller
SFA_GET_RESOURCES = 101
SFA_CREATE_SLICE = 102
@@
-52,7
+48,7
@@
def extract(sock):
break
msg += chunk
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):
return msg
def connect(server, port):
@@
-60,18
+56,21
@@
def connect(server, port):
sock = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
sock.connect ( ( server, port) )
sock.settimeout(1)
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():
return sock
def connect_aggrMgr():
- return connect(AGGREGATE_MANAGER_IP, AGGREGATE_MANAGER_PORT)
+ (aggr_mgr_ip, aggr_mgr_port) = Config().get_openflow_aggrMgr_info()
+ 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):
if cred == None:
cred = ""
if hrn == None:
hrn = ""
def generate_slide_id(cred, hrn):
if cred == None:
cred = ""
if hrn == None:
hrn = ""
- return cred + '_' + hrn
+ #return cred + '_' + hrn
+ return str(hrn)
def msg_aggrMgr(cred, hrn, msg_id):
slice_id = generate_slide_id(cred, hrn)
def msg_aggrMgr(cred, hrn, msg_id):
slice_id = generate_slide_id(cred, hrn)
@@
-84,7
+83,7
@@
def msg_aggrMgr(cred, hrn, msg_id):
aggrMgr_sock.send(buf)
aggrMgr_sock.close()
return 1
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"
print "Socket error"
except IOerror, message:
print "IO error"
@@
-110,22
+109,25
@@
def create_slice(cred, hrn, rspec):
if DEBUG: print "Received create_slice call"
slice_id = generate_slide_id(cred, hrn)
if DEBUG: print "Received create_slice call"
slice_id = generate_slide_id(cred, hrn)
- msg = struct.pack('> B%ds%ds' %
len(slice_id
), SFA_CREATE_SLICE, slice_id, rspec)
+ msg = struct.pack('> B%ds%ds' %
(len(slice_id)+1, len(rspec)
), SFA_CREATE_SLICE, slice_id, rspec)
buf = struct.pack('> H', len(msg)+2) + msg
try:
aggrMgr_sock = connect_aggrMgr()
aggrMgr_sock.send(buf)
buf = struct.pack('> H', len(msg)+2) + msg
try:
aggrMgr_sock = connect_aggrMgr()
aggrMgr_sock.send(buf)
+ if DEBUG: print "Sent %d bytes and closing connection" % len(buf)
aggrMgr_sock.close()
aggrMgr_sock.close()
+
+ if DEBUG: print "----------------"
return 1
return 1
- except socketerror, message:
+ except socket
.
error, message:
print "Socket error"
except IOerror, message:
print "IO error"
return 0
print "Socket error"
except IOerror, message:
print "IO error"
return 0
-def get_r
esources
(cred, hrn=None):
- if DEBUG: print "Received get_r
esources
call"
+def get_r
spec
(cred, hrn=None):
+ if DEBUG: print "Received get_r
spec
call"
slice_id = generate_slide_id(cred, hrn)
msg = struct.pack('> B%ds' % len(slice_id), SFA_GET_RESOURCES, slice_id)
slice_id = generate_slide_id(cred, hrn)
msg = struct.pack('> B%ds' % len(slice_id), SFA_GET_RESOURCES, slice_id)
@@
-137,18
+139,25
@@
def get_resources(cred, hrn=None):
resource_list = extract(aggrMgr_sock);
aggrMgr_sock.close()
resource_list = extract(aggrMgr_sock);
aggrMgr_sock.close()
+ if DEBUG: print "----------------"
return resource_list
return resource_list
- except socketerror, message:
+ except socket
.
error, message:
print "Socket error"
except IOerror, message:
print "IO error"
return None
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):
def fetch_context(slice_hrn, user_hrn, contexts):
- return None
+ base_context = {'sfa':{'user':{'hrn':user_hrn}}}
+ return base_context
def main():
def main():
- r = R
s
pec()
+ r = R
S
pec()
r.parseFile(sys.argv[1])
rspec = r.toDict()
create_slice(None,'plc',rspec)
r.parseFile(sys.argv[1])
rspec = r.toDict()
create_slice(None,'plc',rspec)