Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into fibre
[unfold.git] / portal / univbrisview.py
index 806aaec..7154b8a 100644 (file)
@@ -1,22 +1,26 @@
 import json
+from manifold.core.query         import Query
+from manifoldapi.manifoldapi        import execute_query
 
-from manifold.core.query        import Query
-from manifoldapi.manifoldapi    import execute_query
+from unfold.page                 import Page
+
+from plugins.lists.testbedlist   import TestbedList
+from plugins.lists.slicelist     import SliceList
 
-from unfold.page                import Page
 from unfold.loginrequired       import FreeAccessView
-from unfold.loginrequired       import LoginRequiredAutoLogoutView
-from ui.topmenu                 import topmenu_items_live, the_user
+from unfold.loginrequired        import LoginRequiredAutoLogoutView
 
-from plugins.lists.testbedlist  import TestbedList
-from plugins.lists.slicelist    import SliceList
-from plugins.querytable         import QueryTable
-from plugins.univbrisfoam       import UnivbrisFoam
-from plugins.univbrisfv         import UnivbrisFv
-from plugins.lists.staticlist   import StaticList
-from plugins.lists.slicelist    import SliceList
-from plugins.messages           import Messages
-from plugins.univbrisfvf        import UnivbrisFvf
+from ui.topmenu                  import topmenu_items_live, the_user
+from plugins.querytable          import QueryTable
+from plugins.univbrisfoam       import UnivbrisFoam
+from plugins.univbrisfv                 import UnivbrisFv
+from plugins.lists.staticlist   import StaticList
+from plugins.lists.slicelist     import SliceList
+from plugins.messages          import Messages
+from plugins.univbrisfvf       import UnivbrisFvf
+from plugins.univbrisfvfo      import UnivbrisFvfo
+from plugins.univbris          import Univbris
+from plugins.univbristopo      import UnivbrisTopo
 
 #This view requires login 
 class UnivbrisView (LoginRequiredAutoLogoutView):
@@ -27,22 +31,46 @@ class UnivbrisView (LoginRequiredAutoLogoutView):
         
         page = Page(self.request)
         #print "UNIVBRIS page"
-        
-        #create new query to manifold----query is not called yet
-        #need to modify to get i2cat of resources also
+        metadata = page.get_metadata()
+        page.expose_js_metadata()
+    
+        resource_md = metadata.details_by_object('resource')
+        resource_fields = [column['name'] for column in resource_md['column']]
+    
+        user_md = metadata.details_by_object('user')
+        user_fields = ['user_hrn'] # [column['name'] for column in user_md['column']]
+    
+    
+       #create new query to manifold----query is not called yet
+       #need to modify to get i2cat of resources also
         univbrisfoam_query=Query().get('ofelia-bristol-of:resource').select('urn')
+        #print univbrisfoam_query #.select('urn')
+       #Query().get('ofelia-bristol-of:resource')
+       ##custom query to communication between univbris plugins
+        #univbris_query=Query()
             
-        #queue the query
+       #queue the query
         page.enqueue_query(univbrisfoam_query)
+        #page.enqueue_query(univbris_query)
         page.expose_js_metadata()
-        
-        #plugin which collects different openflow ports from maniford
+    
+    
+       #plugin which display a "gathering resources" message waiting for all resources to be returned by manifold
+        univbriswelcome = Univbris(
+            page  = page,
+            title = 'univbris_welcome',
+            domid = 'univbris_welcome',
+            query = univbrisfoam_query,
+        )
+       
+       #plugin which collects different openflow ports from maniford
         univbrisfoamlist = UnivbrisFoam(
             page  = page,
             title = 'univbris_foam_ports_selection',
             domid = 'univbris_foam_ports_selection',
             query = univbrisfoam_query,
             query_all = univbrisfoam_query,
+           sync_query= univbrisfoam_query,
             checkboxes = False,
             datatables_options = { 
                 'iDisplayLength': 10,
@@ -51,26 +79,42 @@ class UnivbrisView (LoginRequiredAutoLogoutView):
                 },
         )
     
-        #plugin which manages the different flowspaces that the user creates, and also sends flowspaces to manifold
+       #plugin which manages the different flowspaces that the user creates, and also sends flowspaces to manifold
         univbrisfvlist = UnivbrisFv(
-                page  = page,
-                title = 'univbris_flowspace_selection',
-                domid = 'univbris_flowspace_selection',
-            query = None,
-                query_all = None,
-                datatables_options = { 
-                    'iDisplayLength': 5,
-                    'bLengthChange' : True,
-                    'bAutoWidth'    : True,
-                    },
-            )
+            page  = page,
+            title = 'univbris_flowspace_selection',
+            domid = 'univbris_flowspace_selection',
+           query = None,
+            query_all = None,
+           sync_query= univbrisfoam_query,
+            datatables_options = { 
+                'iDisplayLength': 5,
+                'bLengthChange' : True,
+                'bAutoWidth'    : True,
+                },
+        )
     
-        #plugin which allows the definition of a single flowspace
+       #plugin which allows the definition the match criteria on a single PACKET flowspace
         univbrisfvform = UnivbrisFvf(
+            page  = page,
+            title = 'univbris_flowspace_form',
+            domid = 'univbris_flowspace_form',
+           query = None,
+            query_all = None,
+            datatables_options = { 
+                'iDisplayLength': 3,
+                'bLengthChange' : True,
+                'bAutoWidth'    : True,
+                },
+        )
+    
+       #plugin which allows the definition the match criteria on a single OPTICAL flowspace
+    
+        univbrisofvform = UnivbrisFvfo(
                 page  = page,
-                title = 'univbris_flowspace_form',
-                domid = 'univbris_flowspace_form',
-            query = None,
+                title = 'univbris_oflowspace_form',
+                domid = 'univbris_oflowspace_form',
+               query = None,
                 query_all = None,
                 datatables_options = { 
                     'iDisplayLength': 3,
@@ -78,13 +122,25 @@ class UnivbrisView (LoginRequiredAutoLogoutView):
                     'bAutoWidth'    : True,
                     },
             )
-        
-        #render plugins in each context within a single page, but not all plugins are visible at all time.
+    
+    
+       #plugin which display the gathered topology
+        univbristopology = UnivbrisTopo(
+                page  = page,
+                title = 'univbris_topology',
+                domid = 'univbris_topology',
+                query = univbrisfoam_query,
+            )
+       
+       #render plugins in each context within a single page, but not all plugins are visible at all time.
         context = super(UnivbrisView, self).get_context_data(**kwargs)
         context['person']   = self.request.user
+        context['welcome'] = univbriswelcome.render(self.request)
         context['resources'] = univbrisfoamlist.render(self.request)
         context['flowspaces']= univbrisfvlist.render(self.request)
+        context['oflowspaces_form']= univbrisofvform.render(self.request)
         context['flowspaces_form']= univbrisfvform.render(self.request)
+        context['topology']=univbristopology.render(self.request)
     
         # XXX This is repeated in all pages
         # more general variables expected in the template
@@ -93,15 +149,14 @@ class UnivbrisView (LoginRequiredAutoLogoutView):
         context['topmenu_items'] = topmenu_items_live('univbris', page)
         # so we can sho who is logged
         context['username'] = the_user(self.request)
-    
+        
         context.update(page.prelude_env())
         page.expose_js_metadata()
         
-    
+        
         # the page header and other stuff
         context.update(page.prelude_env())
-    
+        
         context['layout_1_or_2']="layout-unfold2.html" if not context['username'] else "layout-unfold1.html"
-    
+        
         return context
-