Scheduler2 from Nitos integration into the slice view
authorLoic Baron <loic.baron@lip6.fr>
Thu, 27 Mar 2014 10:45:09 +0000 (11:45 +0100)
committerLoic Baron <loic.baron@lip6.fr>
Thu, 27 Mar 2014 10:45:09 +0000 (11:45 +0100)
plugins/scheduler2/__init__.py
plugins/scheduler2/static/js/scheduler2.js
portal/sliceresourceview.py
portal/templates/slice-resource-view.html

index a1057a4..0be022c 100755 (executable)
@@ -11,8 +11,11 @@ class Scheduler2 (Plugin):
         self.query=query\r
         self.query_all_resources = query_all_resources\r
         self.query_all_resources_uuid = query_all_resources.query_uuid\r
+\r
         self.query_lease = query_lease\r
-        query_lease.query_uuid if query_lease else None\r
+        self.query_lease_uuid = query_lease.query_uuid\r
+\r
+        #query_lease.query_uuid if query_lease else None\r
 \r
         #granularity in minutes\r
         granularity = 10\r
index dd0c8f8..7c6c323 100755 (executable)
@@ -48,6 +48,7 @@ var schdlr_PartsInOneHour = 6;
          *     applied, which allows to maintain chainability of calls\r
          */\r
         init: function (options, element) {\r
+            this.classname="scheduler2";\r
             // Call the parent constructor, see FAQ when forgotten\r
             this._super(options, element);\r
 \r
@@ -113,18 +114,21 @@ var schdlr_PartsInOneHour = 6;
             var totalCell = "";\r
             for (var i = 0; i < totalColums; i++) totalCell +="<td></td>"; \r
             var srt_body = "";\r
-\r
+            \r
             $.each(SchedulerResources, function (i, group) {\r
+                console.log(group.groupName);\r
                 //var groupTR = $("#ShedulerNodes tbody").html('<tr><td class="no-image verticalIndex" rowspan="' + group.resources.length + '"><div class="verticalText">' + group.groupName + '</div></td><td id="schdlr_frstTD" class="info fixed"></td></tr>');\r
-                var groupTR = $("#ShedulerNodes tbody").html('<tr><td class="no-image verticalIndex" rowspan="' + 30 + '"><div class="verticalText">' + group.groupName + '</div></td><td id="schdlr_frstTD" class="info fixed"></td></tr>');\r
+                //var groupTR = $("#ShedulerNodes tbody").html('<tr><td class="no-image verticalIndex" rowspan="' + 30 + '"><div class="verticalText">' + group.groupName + '</div></td><td id="schdlr_frstTD" class="info fixed"></td></tr>');\r
+                var groupTR = $("#ShedulerNodes tbody").html('<tr><td id="schdlr_frstTD" class="info fixed"></td></tr>');\r
                 \r
-                $.each(group.resources.slice(0,30), function (i, resource) {\r
+                //$.each(group.resources.slice(0,30), function (i, resource) {\r
+                $.each(group.resources, function (i, resource) {\r
                     if (i == 0) {\r
                         //$("#ShedulerNodes tbody tr:first").append('<td class="info fixed">' + resource.hostname + '</td>');\r
-                        $(groupTR).find("#schdlr_frstTD").html(resource.hostname);\r
+                        $(groupTR).find("#schdlr_frstTD").html(resource.urn);\r
                         //$(srt_body).html("<tr>" + totalCell + "</tr>");\r
                     } else {\r
-                        $(groupTR).find("tr:last").after('<tr><td class="info fixed">' + resource.hostname + '</td></tr>');\r
+                        $(groupTR).find("tr:last").after('<tr><td class="info fixed">' + resource.urn + '</td></tr>');\r
                         //$(srt_body).find("tr:last").after("<tr>" + totalCell + "</tr>");\r
                     }\r
                     srt_body += "<tr>" + totalCell + "</tr>";\r
@@ -181,6 +185,7 @@ var schdlr_PartsInOneHour = 6;
             //data is empty on load\r
         },\r
         on_all_resources_new_record: function (data) {\r
+            //console.log(data);\r
             var tmpGroup = lookup(SchedulerResources, 'groupName', data.type);\r
             if (tmpGroup == null) {\r
                 tmpGroup = { groupName: data.type, resources: [] };\r
@@ -204,12 +209,12 @@ var schdlr_PartsInOneHour = 6;
         },\r
         /* all_resources QUERY HANDLERS End */\r
         /* lease QUERY HANDLERS Start */\r
-        on_lease_clear_records: function (data) { alert('clear_records'); },\r
-        on_lease_query_in_progress: function (data) { alert('query_in_progress'); },\r
-        on_lease_new_record: function (data) { alert('new_record'); },\r
-        on_lease_query_done: function (data) { alert('query_done'); },\r
+        on_lease_clear_records: function (data) { console.log('clear_records'); },\r
+        on_lease_query_in_progress: function (data) { console.log('lease_query_in_progress'); },\r
+        on_lease_new_record: function (data) { console.log('lease_new_record'); },\r
+        on_lease_query_done: function (data) { console.log('lease_query_done'); },\r
         //another plugin has modified something, that requires you to update your display. \r
-        on_lease_field_state_changed: function (data) { alert('query_done'); },\r
+        on_lease_field_state_changed: function (data) { console.log('lease_field_state_changed'); },\r
         /* lease QUERY HANDLERS End */\r
 \r
 \r
index afd9531..3ba1084 100644 (file)
@@ -17,6 +17,7 @@ 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 theme import ThemeView
 
@@ -56,15 +57,23 @@ 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_all_lease = Query.get('lease').select(lease_fields)
+        page.enqueue_query(query_all_lease)
+
+        print "!!!!!!!!!!   query leases = ",query_all_lease
 
         # --------------------------------------------------------------------------
-        # RESOURCES
+        # RESOURCES LIST
         # resources as a list using datatable plugin
  
         list_resources = QueryTable(
@@ -83,7 +92,7 @@ class SliceResourceView (LoginRequiredView, ThemeView):
         )
 
         # --------------------------------------------------------------------------
-        # RESOURCES
+        # RESOURCES MAP
         # the resources part is made of a Tabs (Geographic, List), 
 
         map_resources  = GoogleMap(
@@ -105,6 +114,20 @@ class SliceResourceView (LoginRequiredView, ThemeView):
             zoom       = 4,
         )
 
+        # --------------------------------------------------------------------------
+        # 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_all_resources = query_resource_all,
+            query_lease = query_all_lease,
+        )
+
         # --------------------------------------------------------------------------
         # QueryUpdater (Pending Operations)
  
@@ -125,7 +148,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)
@@ -150,6 +172,7 @@ class SliceResourceView (LoginRequiredView, ThemeView):
         template_env['list_resources'] = list_resources.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["theme"] = self.theme
         template_env["username"] = request.user
index 1c00cb8..9200f00 100644 (file)
@@ -63,7 +63,7 @@
                 {{map_resources}}
                        </div>
                        <div id="scheduler-tab" class="panel" style="height:370px;display:none;">
-                {{scheduler_leases}}
+                {{scheduler}}
                        </div>
                        <div id="pending" class="panel" style="height:370px;display:none;">
                 {{pending_resources}}