from manifoldapi import ManifoldAPI
from manifoldresult import ManifoldException
from manifold.util.log import Log
-from myslice.configengine import ConfigEngine
+
+from myslice.settings import config, logger, DEBUG
+
+# register activity
+import activity.slice
debug=False
#debug=True
# as well as
# static/js/manifold.js
def proxy (request,format):
- """the view associated with /manifold/proxy/
-with the query passed using POST"""
+ """the view associated with /manifold/proxy/ with the query passed using POST"""
# expecting a POST
if request.method != 'POST':
- print "manifoldproxy.api: unexpected method %s -- exiting"%request.method
- return
+ logger.error("MANIFOLDPROXY unexpected method %s -- exiting" % request.method)
+ return HttpResponse ({"ret":0}, mimetype="application/json")
# we only support json for now
# if needed in the future we should probably cater for
# format_in : how is the query encoded in POST
# format_out: how to serve the results
if format != 'json':
- print "manifoldproxy.proxy: unexpected format %s -- exiting"%format
+ logger.error("MANIFOLDPROXY unexpected format %s -- exiting" % format)
return HttpResponse ({"ret":0}, mimetype="application/json")
try:
# translate incoming POST request into a query object
- if debug: print 'manifoldproxy.proxy: request.POST',request.POST
+ #logger.debug("MANIFOLDPROXY request.POST %s" % request.POST)
+
manifold_query = Query()
#manifold_query = ManifoldQuery()
manifold_query.fill_from_POST(request.POST)
# We allow some requests to use the ADMIN user account
if (manifold_query.get_from() == 'local:user' and manifold_query.get_action() == 'create') \
or (manifold_query.get_from() == 'local:platform' and manifold_query.get_action() == 'get'):
- admin_user, admin_password = ConfigEngine().manifold_admin_user_password()
+ admin_user, admin_password = config.manifold_admin_user_password()
manifold_api_session_auth = {'AuthMethod': 'password', 'Username': admin_user, 'AuthString': admin_password}
else:
if 'manifold' in request.session:
manifold_api_session_auth = request.session['manifold']['auth']
else:
- json_answer=json.dumps({'code':0,'value':[]})
- return HttpResponse (json_answer, mimetype="application/json")
+ return HttpResponse (json.dumps({'code':0,'value':[]}), mimetype="application/json")
if debug_empty and manifold_query.action.lower()=='get':
- json_answer=json.dumps({'code':0,'value':[]})
- print "By-passing : debug_empty & 'get' request : returning a fake empty list"
- return HttpResponse (json_answer, mimetype="application/json")
+ return HttpResponse (json.dumps({'code':0,'value':[]}), mimetype="application/json")
# actually forward
manifold_api= ManifoldAPI(auth=manifold_api_session_auth)
- if debug: print '===> manifoldproxy.proxy: sending to backend', manifold_query
+
# for the benefit of the python code, manifoldAPI raises an exception if something is wrong
# however in this case we want to propagate the complete manifold result to the js world
if 'description' in result and result['description'] \
and isinstance(result['description'], (tuple, list, set, frozenset)):
result [ 'description' ] = [ ResultValue.to_html (x) for x in result['description'] ]
-
+
+ #
+ # register activity
+ #
+ # resource reservation
+ if (manifold_query.action.lower() == 'update') :
+ print result['value'][0]
+ if 'resource' in result['value'][0] :
+ for resource in result['value'][0]['resource'] :
+ activity.slice.resource(request,
+ {
+ 'slice' : result['value'][0]['slice_hrn'],
+ 'resource' : resource['hostname'],
+ 'resource_type' : resource['type'],
+ 'facility' : resource['facility_name'],
+ 'testbed' : resource['testbed_name']
+ }
+ )
+
json_answer=json.dumps(result)
return HttpResponse (json_answer, mimetype="application/json")
except Exception,e:
- print "** PROXY ERROR **",e
+ logger.error("MANIFOLDPROXY %s" % e)
import traceback
traceback.print_exc()
return HttpResponse ({"ret":0}, mimetype="application/json")