Initscripts: rest and url
authorLoic Baron <loic.baron@lip6.fr>
Thu, 15 Jan 2015 10:08:02 +0000 (11:08 +0100)
committerLoic Baron <loic.baron@lip6.fr>
Thu, 15 Jan 2015 10:08:02 +0000 (11:08 +0100)
myslice/urls.py
rest/initscript.py [new file with mode: 0644]

index 5f4c7d4..d09f480 100644 (file)
@@ -91,6 +91,7 @@ urls = [
     (r'^create/(?P<object_type>[^/]+)/(?P<object_name>[^/]+)?/?$', 'rest.create.dispatch'),
     (r'^delete/(?P<object_type>[^/]+)/(?P<object_name>[^/]+)?/?$', 'rest.delete.dispatch'),
     (r'^credentials/(?P<action>[^/]+)/?$', 'rest.credentials.dispatch'),
+    (r'^initscript/(?P<action>[^/]+)/?$', 'rest.initscript.dispatch'),
     #
     # REST monitoring
     (r'^monitor/services/?$', 'rest.monitor.servicesStatus'),
diff --git a/rest/initscript.py b/rest/initscript.py
new file mode 100644 (file)
index 0000000..41dbc9b
--- /dev/null
@@ -0,0 +1,58 @@
+from django.http                    import HttpResponse
+import json
+from manifold.core.query            import Query
+from manifoldapi.manifoldapi        import execute_admin_query
+
+def dispatch(request, action):
+
+    results = []
+    error = None
+    try:
+        if request.method == 'POST': 
+            req_items = request.POST 
+        elif request.method == 'GET':
+            req_items = request.GET
+    
+        for el in req_items.items():
+            if el[0].startswith('slice_hrn'):
+                slice_hrn = el[1]
+            elif el[0].startswith('initscript_code'):
+                initscript_code = el[1]
+                
+        if (action == 'get') :
+            # select initscript_code from initscript where slice_hrn=='onelab.upmc.express'
+            query = Query.get('initscript').filter_by('slice_hrn', '==', slice_hrn).select('initscript_code')
+            results = execute_admin_query(request, query)
+    
+        if (action == 'update') :
+            # UPDATE initscript SET initscript_code='test3' where slice_hrn=='onelab.upmc.express'
+            params = {'initscript_code' : initscript_code}
+            query = Query.update('initscript').filter_by('slice_hrn', '==', slice_hrn).set(params)
+            results = execute_admin_query(request, query)
+    
+            if results[0]['initscript_code']==1:
+                results[0]['initscript_code']=initscript_code
+            else:
+                error = "Error in update return value"
+    
+        if (action == 'delete') :
+            # delete from initscript where slice_hrn=='onelab.upmc.express' 
+            query = Query.delete('initscript').filter_by('slice_hrn', '==', slice_hrn)
+            results = execute_admin_query(request, query)
+    
+            if results[0]['initscript_code']==1:
+                results[0]['initscript_code']=""
+            else:
+                error = "Error in delete return value"
+    except Exception, e:
+        error = str(e)
+        #print "Exception : ",e
+    if error is not None:
+        ret = { "ret" : 1, "error" : error }
+    elif not results :
+        ret = { "ret" : 1, "slice_hrn" : slice_hrn }
+    else :
+        ret = { "ret" : 0, "slice_hrn" : slice_hrn }
+        ret.update(results[0])
+
+    return HttpResponse(json.dumps(ret), content_type="application/json")