X-Git-Url: http://git.onelab.eu/?p=myslice.git;a=blobdiff_plain;f=plugins%2Fscheduler2%2F__init__.py;fp=plugins%2Fscheduler2%2F__init__.py;h=a1057a4cb3e3d6e29a9b631799e83c412aa280f2;hp=0000000000000000000000000000000000000000;hb=e4a88c348fe7f795c77f4a60273856ee1ef4d534;hpb=864c51bf4c1330e2a1a1b5978b8a8dc5afe01763 diff --git a/plugins/scheduler2/__init__.py b/plugins/scheduler2/__init__.py new file mode 100755 index 00000000..a1057a4c --- /dev/null +++ b/plugins/scheduler2/__init__.py @@ -0,0 +1,74 @@ +from unfold.plugin import Plugin +import datetime +from datetime import timedelta + +class Scheduler2 (Plugin): + + + def __init__ (self, query, query_all_resources, query_lease = None, **settings): + Plugin.__init__ (self, **settings) + + self.query=query + self.query_all_resources = query_all_resources + self.query_all_resources_uuid = query_all_resources.query_uuid + self.query_lease = query_lease + query_lease.query_uuid if query_lease else None + + #granularity in minutes + granularity = 10 + #self.time_slots = [] + self.time_slots = self.createTimeSlots(granularity) + self.nodes = [ + ['Grid Nodes' , ['node016', 'node017', 'node018', 'node019', 'node020', 'node021', 'node029', 'node030', 'node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031',]], + ['Other Nodes' , ['node022', 'node023', 'node024','node025', 'node026', 'node027', 'node028',]] + ] + + def template_file (self): + return "scheduler.html" + + def requirements (self): + reqs = { + 'js_files' : [ + 'js/scheduler2.js', + 'js/slider/jquery-ui-1.10.3.slider.min.js', + 'js/scheduler-helpers.js', + 'js/table-selector.js', + ], + 'css_files': [ + 'css/scheduler2.css', + 'css/slider/jquery-ui-1.10.3.slider.min.css', + ] + } + return reqs + + # the list of things passed to the js plugin + def json_settings_list (self): + # query_uuid will pass self.query results to the javascript + # and will be available as "record" in : + # on_new_record: function(record) + return ['plugin_uuid', 'domid', 'query_uuid', 'time_slots', 'nodes', 'query_lease_uuid', 'query_all_resources_uuid'] + + + def export_json_settings (self): + return True + + #Creates an Array with the timespans depending on granularity + def createTimeSlots (this, granularity): + #return type + time_slots = [] + #init times + time_s = datetime.time(0,00) + time_f = datetime.time(23,59) + now = datetime.datetime.now() + #calc diffs + dt_s = datetime.datetime.combine(now,time_s) + dt_f = datetime.datetime.combine(now,time_f) + #loop + while (dt_s < dt_f): + tmp = dt_s + dt_s = dt_s + datetime.timedelta(minutes=granularity) + ts = str(tmp.hour).zfill(2) + ':' + str(tmp.minute).zfill(2) + '-' + str(dt_s.hour).zfill(2) + ':' + str(dt_s.minute).zfill(2) + time_slots.append(ts) + #return + return time_slots +