SLA and Service Directory code added
[unfold.git] / portal / sliceresourceview.py
index afd9531..64a151b 100644 (file)
@@ -17,8 +17,11 @@ from plugins.querytable              import QueryTable
 from plugins.googlemap               import GoogleMap
 from plugins.queryupdater            import QueryUpdater
 from plugins.testbeds                import TestbedsPlugin
+from plugins.scheduler2              import Scheduler2
+from plugins.columns_editor          import ColumnsEditor
+from plugins.sladialog               import SlaDialog
 
-from theme import ThemeView
+from myslice.theme import ThemeView
 
 class SliceResourceView (LoginRequiredView, ThemeView):
     template_name = "slice-resource-view.html"
@@ -48,7 +51,7 @@ class SliceResourceView (LoginRequiredView, ThemeView):
                 'resource.hostname', 'resource.type',
                 'resource.network_hrn',
                 'lease.urn',
-                'user.user_hrn',
+                #'user.user_hrn',
                 #'application.measurement_point.counter'
         )
         # for internal use in the querytable plugin;
@@ -56,15 +59,21 @@ class SliceResourceView (LoginRequiredView, ThemeView):
         main_query_init_key = 'urn'
         aq = AnalyzedQuery(main_query, metadata=metadata)
         page.enqueue_query(main_query, analyzed_query=aq)
+        sq_resource    = aq.subquery('resource')
+        sq_lease       = aq.subquery('lease')
 
         query_resource_all = Query.get('resource').select(resource_fields)
         page.enqueue_query(query_resource_all)
 
-        sq_resource    = aq.subquery('resource')
-        sq_lease       = aq.subquery('lease')
+        # leases query
+        lease_md = metadata.details_by_object('lease')
+        lease_fields = [column['name'] for column in lease_md['column']]
+
+        query_lease_all = Query.get('lease').select(lease_fields)
+        page.enqueue_query(query_lease_all)
 
         # --------------------------------------------------------------------------
-        # RESOURCES
+        # ALL RESOURCES LIST
         # resources as a list using datatable plugin
  
         list_resources = QueryTable(
@@ -82,8 +91,41 @@ class SliceResourceView (LoginRequiredView, ThemeView):
                 },
         )
 
+
         # --------------------------------------------------------------------------
-        # RESOURCES
+        # RESERVED RESOURCES LIST
+        # resources as a list using datatable plugin
+        list_reserved_resources = QueryTable(
+            page       = page,
+            domid      = 'resources-reserved-list',
+            title      = 'List view',
+            query      = sq_resource,
+            query_all  = sq_resource,
+            init_key   = "urn",
+            checkboxes = True,
+            datatables_options = {
+                'iDisplayLength': 25,
+                'bLengthChange' : True,
+                'bAutoWidth'    : True,
+                },
+        )
+
+        # --------------------------------------------------------------------------
+        # COLUMNS EDITOR
+        # list of fields to be applied on the query 
+        # this will add/remove columns in QueryTable plugin
+        filter_column_editor = ColumnsEditor(
+            page  = page,
+            query = sq_resource, 
+            query_all = query_resource_all,
+            title = "Select Columns",
+            domid = 'select-columns',
+        )
+
+        # --------------------------------------------------------------------------
+        # RESOURCES MAP
         # the resources part is made of a Tabs (Geographic, List), 
 
         map_resources  = GoogleMap(
@@ -102,7 +144,22 @@ class SliceResourceView (LoginRequiredView, ThemeView):
             # center on Paris
             latitude   = 49.,
             longitude  = 9,
-            zoom       = 4,
+            zoom       = 8,
+        )
+
+        # --------------------------------------------------------------------------
+        # LEASES Nitos Scheduler
+        # Display the leases reservation timeslots of the resources
+
+        resources_as_scheduler2 = Scheduler2( 
+            page       = page,
+            domid      = 'scheduler',
+            title      = 'Scheduler',
+            # this is the query at the core of the slice list
+            query = sq_resource,
+            query_lease = sq_lease,
+            query_all_resources = query_resource_all,
+            query_all_leases = query_lease_all,
         )
 
         # --------------------------------------------------------------------------
@@ -112,11 +169,12 @@ class SliceResourceView (LoginRequiredView, ThemeView):
             page                = page,
             title               = 'Pending operations',
             query               = main_query,
-            togglable           = True,
+            togglable           = False,
             # start turned off, it will open up itself when stuff comes in
             toggled             = False,
             domid               = 'pending',
             outline_complete    = True,
+            username            = request.user,
         )
 
         # --------------------------------------------------------------------------
@@ -125,7 +183,6 @@ class SliceResourceView (LoginRequiredView, ThemeView):
 
         network_md = metadata.details_by_object('network')
         network_fields = [column['name'] for column in network_md['column']]
-        print "sliceresourceview.py ====> ",network_fields
 
         query_network = Query.get('network').select(network_fields)
         page.enqueue_query(query_network)
@@ -146,11 +203,32 @@ class SliceResourceView (LoginRequiredView, ThemeView):
                 },
         )
 
+        # --------------------------------------------------------------------------
+        # SLA View and accept dialog
+        
+        sla_dialog = SlaDialog(
+            page                = page,
+            title               = 'sla dialog',
+            query               = main_query,
+            togglable           = False,
+            # start turned off, it will open up itself when stuff comes in
+            toggled             = True,
+            domid               = 'sla_dialog',
+            outline_complete    = True,
+            username            = request.user,
+        )
+
         template_env = {}
         template_env['list_resources'] = list_resources.render(self.request)
+#         template_env['list_reserved_resources'] = list_reserved_resources.render(self.request)
+
+        template_env['columns_editor'] = filter_column_editor.render(self.request)
+
         template_env['filter_testbeds'] = filter_testbeds.render(self.request)
         template_env['map_resources'] = map_resources.render(self.request)
+        template_env['scheduler'] = resources_as_scheduler2.render(self.request)
         template_env['pending_resources'] = pending_resources.render(self.request)
+        template_env['sla_dialog'] = sla_dialog.render(self.request)
         template_env["theme"] = self.theme
         template_env["username"] = request.user
         template_env["slice"] = slicename