Scheduler2 plugin: Queries handled by the plugin = query (resource in slice), query_l...
authorLoic Baron <loic.baron@lip6.fr>
Thu, 15 May 2014 16:27:28 +0000 (18:27 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Thu, 15 May 2014 16:27:28 +0000 (18:27 +0200)
plugins/queryupdater/static/js/queryupdater.js
plugins/scheduler2/__init__.py
plugins/scheduler2/static/js/scheduler-helpers.js
plugins/scheduler2/static/js/scheduler-table-selector.js
plugins/scheduler2/static/js/scheduler2.js
portal/sliceresourceview.py
portal/templates/slice-resource-view.html

index 89afdf3..e4b3f9c 100644 (file)
 
             var status = msg + status;
 
+            
+
             // find line
             // if no, create it, else replace it
             // XXX it's not just about adding lines, but sometimes removing some
             // XXX how do we handle status reset ?
+            data.value = JSON.stringify(data.value);
             row = this.find_row(data.value);
             newline = [
                 action,
index 02765a3..040b274 100755 (executable)
@@ -5,13 +5,16 @@ from datetime import timedelta
 class Scheduler2 (Plugin):\r
 \r
 \r
-    def __init__ (self, query, query_all_resources, query_lease = None, **settings):\r
+    def __init__ (self, query, query_lease, query_all_resources, query_all_leases, **settings):\r
         Plugin.__init__ (self, **settings)\r
         \r
         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_all_leases = query_all_leases\r
+        self.query_all_leases_uuid = query_all_leases.query_uuid\r
+\r
         self.query_lease = query_lease\r
         self.query_lease_uuid = query_lease.query_uuid\r
 \r
@@ -51,7 +54,7 @@ class Scheduler2 (Plugin):
         # query_uuid will pass self.query results to the javascript\r
         # and will be available as "record" in :\r
         # on_new_record: function(record)\r
-        return ['plugin_uuid', 'domid', 'query_uuid', 'time_slots', 'nodes', 'query_lease_uuid', 'query_all_resources_uuid']\r
+        return ['plugin_uuid', 'domid', 'query_uuid', 'time_slots', 'nodes', 'query_lease_uuid', 'query_all_resources_uuid', 'query_all_leases_uuid']\r
     \r
 \r
     def export_json_settings (self):\r
index d6f3224..c55c635 100755 (executable)
@@ -127,6 +127,7 @@ function schedulerFindDuration(startTime, endTime, granularity) {
 //\r
 // Set Select - Free Slots *******Start\r
 function schedulerSelectSlot(slotId, rowIndex, resourceIndex) {\r
+    console.log('timeslot selected');\r
     _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, 'selected');\r
 }\r
 function schedulerFreeSlot(slotId, rowIndex, resourceIndex) {\r
@@ -136,6 +137,7 @@ function schedulerFreeSlot(slotId, rowIndex, resourceIndex) {
 function _schedulerSetStatusSlot(slotId, rowIndex, resourceIndex, classText) {\r
     var tmpVS = SchedulerDataViewData[rowIndex].leases[slotId];  // for the display\r
     var tmpS = SchedulerData[resourceIndex].leases[slotId];     // for the data\r
+    console.log(SchedulerData[resourceIndex].id);\r
     tmpVS.status = classText;\r
     tmpS.status = classText;\r
     //select other from the group in the same granularity\r
@@ -196,4 +198,4 @@ function schedulerCompareOnDay(dateOne, dateTwo) {
         return 0;\r
     }\r
 \r
-}
\ No newline at end of file
+}\r
index abd8a69..d69a2d4 100755 (executable)
@@ -181,7 +181,6 @@ function selectRange(isTemp) {
     $("#tblReservation td:not([class='info'])").slice(dragStart, dragEnd).addClass('selected');\r
     }*/\r
 \r
-\r
     if (SchedulerData) console.timeEnd("mouse:---selectRange");\r
 }\r
 \r
index 8fe408f..e1c6f3f 100755 (executable)
@@ -93,10 +93,10 @@ var tmpSchedulerLeases = [];
                 /* Listening to queries */\r
 \r
                 this.listen_query(options.query_uuid);\r
-                this.listen_query(options.query_all_uuid, 'all');\r
+                //this.listen_query(options.query_all_uuid, 'all');\r
                 this.listen_query(options.query_all_resources_uuid, 'all_resources');\r
                 this.listen_query(options.query_lease_uuid, 'lease');\r
-                //this.listen_query(options.query_lease_uuid, 'lease');\r
+                this.listen_query(options.query_all_leases_uuid, 'all_leases');\r
                 if (schedulerDebug) console.timeEnd("Listening_to_queries");\r
 \r
             },\r
@@ -160,7 +160,7 @@ var tmpSchedulerLeases = [];
             /* lease QUERY HANDLERS Start */\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) {\r
+            on_all_leases_new_record: function(data) {\r
                 if (data.resource.indexOf("nitos") > -1) {\r
                     tmpSchedulerLeases.push({\r
                         id: schedulerGetSlotId(data.start_time, data.duration, data.granularity),\r
@@ -180,7 +180,7 @@ var tmpSchedulerLeases = [];
                 }\r
                 //console.log(data.toSource()); console.log('lease_new_record');\r
             },\r
-            on_lease_query_done: function(data) {\r
+            on_all_leases_query_done: function(data) {\r
                 _leasesDone = true;\r
                 this._initScheduler();\r
                 // console.log('lease_query_done');\r
@@ -242,7 +242,7 @@ var tmpSchedulerLeases = [];
                 }\r
             },\r
 \r
-            on_lease_filter_added: function(filter) {\r
+            on_all_leases_filter_added: function(filter) {\r
                 console.log("Filter on Leases added !");\r
             },\r
 \r
@@ -297,12 +297,12 @@ var tmpSchedulerLeases = [];
                         console.log(tomorrow.getTime()/1000);\r
                         \r
                         // Remove previous date interval\r
-                        manifold.raise_event(scheduler2Instance.options.query_lease_uuid, FILTER_REMOVED, ['start_time', '>']);\r
-                        manifold.raise_event(scheduler2Instance.options.query_lease_uuid, FILTER_REMOVED, ['start_time', '<']);\r
+                        manifold.raise_event(scheduler2Instance.options.query_all_leases_uuid, FILTER_REMOVED, ['start_time', '>']);\r
+                        manifold.raise_event(scheduler2Instance.options.query_all_leases_uuid, FILTER_REMOVED, ['start_time', '<']);\r
 \r
                         // Add new date interval\r
-                        manifold.raise_event(scheduler2Instance.options.query_lease_uuid, FILTER_ADDED, ['start_time', '>', SchedulerDateSelected.getTime()/1000]);\r
-                        manifold.raise_event(scheduler2Instance.options.query_lease_uuid, FILTER_ADDED, ['start_time', '<', tomorrow.getTime()/1000]);\r
+                        manifold.raise_event(scheduler2Instance.options.query_all_leases_uuid, FILTER_ADDED, ['start_time', '>', SchedulerDateSelected.getTime()/1000]);\r
+                        manifold.raise_event(scheduler2Instance.options.query_all_leases_uuid, FILTER_ADDED, ['start_time', '<', tomorrow.getTime()/1000]);\r
                     } else {\r
                         alert("Please select a date, so the scheduler can reserve leases.");\r
                     }\r
@@ -338,12 +338,14 @@ var tmpSchedulerLeases = [];
 \r
                 //btn Submit leases\r
                 $('#btnSchedulerSubmit').click(function () {\r
+                    console.log("click btnSchedulerSubmit");\r
                     var leasesForCommit = new Array();\r
-                    var newLeaseStarted = false;\r
                     var tmpDateTime = SchedulerDateSelected;\r
+                    console.log(SchedulerData);\r
                     for (var i = 0; i < SchedulerData.length; i++)\r
                     {\r
                         var tpmR = SchedulerData[i];\r
+                        var newLeaseStarted = false;\r
                         for (var j = 0; j < tpmR.leases.length; j++) {\r
                             var tpmL = tpmR.leases[j];\r
                             if (newLeaseStarted == false && tpmL.status == 'selected') {\r
@@ -353,13 +355,14 @@ var tmpSchedulerLeases = [];
                                 //add lease object\r
                                 leasesForCommit.push({\r
                                     resource: tpmR.id,\r
-                                    granularity: tpmR.granularity,\r
-                                    lease_type: null,\r
-                                    slice: null,\r
+                                    //granularity: tpmR.granularity,\r
+                                    //lease_type: null,\r
+                                    //slice: null,\r
                                     start_time: unixStartTime,\r
                                     end_time: null,\r
-                                    duration: null\r
+                                    //duration: null\r
                                 });\r
+                                console.log(tpmR.id);\r
                                 newLeaseStarted = true;\r
                             } else if (newLeaseStarted == true && tpmL.status != 'selected') {\r
                                 //get date of the slot\r
@@ -368,14 +371,14 @@ var tmpSchedulerLeases = [];
                                 //upate end_time\r
                                 var tmpCL = leasesForCommit[leasesForCommit.length - 1];\r
                                 tmpCL.end_time = unixEndTime;\r
-                                tmpCL.duration = schedulerFindDuration(tmpCL.start_time, tmpCL.end_time, tmpCL.granularity);\r
+                                //tmpCL.duration = schedulerFindDuration(tmpCL.start_time, tmpCL.end_time, tmpCL.granularity);\r
                                 newLeaseStarted = false;\r
                             }\r
                         }\r
                     }\r
-\r
+                    console.log(leasesForCommit);\r
                     for (var i = 0; i < leasesForCommit.length; i++) {\r
-                        //manifold.raise_event(scheduler.options.query_lease_uuid, SET_ADD, leasesForCommit[i]);\r
+                        manifold.raise_event(scheduler2Instance.options.query_lease_uuid, SET_ADD, leasesForCommit[i]);\r
                     }\r
                 });\r
                 //\r
index b02b0ca..6fc384a 100644 (file)
@@ -68,8 +68,8 @@ class SliceResourceView (LoginRequiredView, ThemeView):
         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)
+        query_lease_all = Query.get('lease').select(lease_fields)
+        page.enqueue_query(query_lease_all)
 
         # --------------------------------------------------------------------------
         # ALL RESOURCES LIST
@@ -156,8 +156,9 @@ class SliceResourceView (LoginRequiredView, ThemeView):
             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_lease = query_all_lease,
+            query_all_leases = query_lease_all,
         )
 
         # --------------------------------------------------------------------------
index 556db48..707fa36 100644 (file)
@@ -80,6 +80,9 @@
                        </div>
                        <div id="reserved" class="panel" style="height:370px;display:none;">
                 {{list_reserved_resources}}
+                       </div>
+                       <div id="pending" class="panel" style="height:370px;display:none;">
+                {{pending_resources}}
                        </div>
                        <div id="map" class="panel" style="height:370px;display:none;">
                 {{map_resources}}
@@ -87,9 +90,6 @@
                        <div id="scheduler-tab" class="panel" style="height:370px;display:none;">
                 {{scheduler}}
                        </div>
-                       <div id="pending" class="panel" style="height:370px;display:none;">
-                {{pending_resources}}
-                       </div>
                </div>
        </div>
 {% endblock %}