From: javier Date: Mon, 16 Jun 2014 08:17:06 +0000 (+0200) Subject: Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab X-Git-Tag: myslice-1.1~64^2~18 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=ba476841726dc818c0efd3ed25e42955a39fc504;hp=-c;p=unfold.git Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab Conflicts: plugins/queryupdater/static/js/queryupdater.js portal/sliceresourceview.py portal/templates/fed4fire/fed4fire_widget-slice-sections.html jgarcia - Commit after merging HEAD files and SLA & Service Directory code --- ba476841726dc818c0efd3ed25e42955a39fc504 diff --combined myslice/urls.py index 67865e79,2b0049db..a49156e1 --- a/myslice/urls.py +++ b/myslice/urls.py @@@ -28,7 -28,8 +28,8 @@@ import portal.sliceresourcevie import portal.slicetabexperiment import portal.slicetabinfo import portal.slicetabtestbeds - import portal.slicetabusers + import portal.slicetabusers + import portal.slicetabmeasurements #### high level choices # main entry point (set to the / URL) @@@ -87,11 -88,9 +88,12 @@@ urls = (r'^slice/(?P[^/]+)/?$', portal.sliceview.SliceView.as_view()), (r'^info/(?P[^/]+)/?$', portal.slicetabinfo.SliceInfoView.as_view()), (r'^testbeds/(?P[^/]+)/?$', portal.slicetabtestbeds.SliceTabTestbeds.as_view()), + (r'^measurements/(?P[^/]+)/?$', portal.slicetabmeasurements.SliceTabMeasurements.as_view()), (r'^experiment/(?P[^/]+)/?$', portal.slicetabexperiment.ExperimentView.as_view()), url(r'^portal/', include('portal.urls')), + + # SLA + url(r'^sla/', include('sla.urls')), ] #this one would not match the convention diff --combined plugins/queryupdater/static/js/queryupdater.js index ac7fc0ae,774392b9..252d349c --- a/plugins/queryupdater/static/js/queryupdater.js +++ b/plugins/queryupdater/static/js/queryupdater.js @@@ -29,10 -29,13 +29,13 @@@ var QueryUpdater = Plugin.extend({ init: function(options, element) { - this.classname="queryupdater"; + this.classname="queryupdater"; this._super(options, element); var self = this; + + this.initial = Array(); + this.table = this.elmt('table').dataTable({ // the original querytable layout was // sDom: "<'row'<'col-xs-5'l><'col-xs-1'r><'col-xs-6'f>>t<'row'<'col-xs-5'i><'col-xs-7'p>>", @@@ -70,51 -73,15 +73,63 @@@ do_update: function(e) { var self = e.data; + - self.spin(); - console.log("do_update"); - + var username = e.data.options.username; + var urn = data.value; // XXX check that the query is not disabled - manifold.raise_event(self.options.query_uuid, RUN_UPDATE); - // how to stop the spinning after the event? - // this should be triggered by some on_updatequery_done ? + console.log("DATA VALUE: " + data.value); + + if (data.value.toLowerCase().indexOf("iminds") >= 0){ + + $('#sla_dialog').show(); + $('#slamodal').modal('show'); + + $(document).ready(function() { + $("#accept_sla").click(function(){ + console.log("SLA ACCEPTED"); + console.log("With username: " + username); + if(urn.toLowerCase().indexOf("wall2") >= 0){ + $.post("/sla/agreements/simplecreate", + { "template_id": "iMindsServiceVirtualwall", + "user": username, + "expiration_time": new Date() // jgarcia: FIXME + }); + } else if(urn.toLowerCase().indexOf("wilab2") >= 0){ + $.post("/sla/agreements/simplecreate", + { "template_id":"iMindsServiceWiLab2", + "user":username, + "expiration_time": new Date() // jgarcia: FIXME + }); + } + $('#slamodal').modal('hide'); - console.log("Executing raise_event after sending SLA"); - // manifold.raise_event(self.options.query_uuid, RUN_UPDATE); ++ self.spin(); ++ console.log("Executing do_update after sending SLA"); ++ // XXX check that the query is not disabled ++ manifold.raise_event(self.options.query_uuid, RUN_UPDATE); ++ ++ // how to stop the spinning after the event? ++ // this should be triggered by some on_updatequery_done ? + }); + }); + + $(document).ready(function() { + $("#dismiss_sla").click(function(){ + console.log("SLA NOT ACCEPTED"); + $('#slamodal').modal('hide'); + }); + }); + + } else { - console.log("Executing raise_event"); ++ self.spin(); ++ console.log("do_update"); ++ // XXX check that the query is not disabled + manifold.raise_event(self.options.query_uuid, RUN_UPDATE); ++ ++ // how to stop the spinning after the event? ++ // this should be triggered by some on_updatequery_done ? + } ++ }, // related buttons are also disabled in the html template @@@ -165,6 -132,7 +180,7 @@@ set_state: function(data) { + console.log("function set_state"); var action; var msg; var button = ''; @@@ -257,11 -225,15 +273,15 @@@ on_new_record: function(record) { + console.log("query_updater on_new_record"); + console.log(record); + // if (not and update) { // initial['resource'], initial['lease'] ? - this.initial.push(record.urn); + this.initial.push(record); + //this.set_record_state(record, RECORD_STATE_ATTACHED); // We simply add to the table // } else { // \ this.initial_resources @@@ -322,7 -294,7 +342,7 @@@ on_query_in_progress: function() { - messages.debug("queryupdater.on_query_in_progress"); + messages.debug("queryupdater.on_query_in_progress"); this.spin(); }, @@@ -338,12 -310,9 +358,9 @@@ this.clear(); }, - on_new_record: function(record) - { - }, - on_query_done: function() { + console.log("on_query_done"); this.unspin(); }, @@@ -351,12 -320,14 +368,14 @@@ // NOTE: record_key could be sufficient on_added_record: function(record) { + console.log("on_added_record = ",record); this.set_record_state(record, RECORD_STATE_ADDED); // update pending number }, on_removed_record: function(record_key) { + console.log("on_removed_record = ",record_key); this.set_record_state(RECORD_STATE_REMOVED); }, @@@ -372,6 -343,8 +391,8 @@@ on_field_state_changed: function(result) { + console.log("on_field_state_changed"); + console.log(result); messages.debug(result) /* this.set_state(result.request, result.key, result.value, result.status); */ this.set_state(result); @@@ -418,7 -391,7 +439,7 @@@ if (!change) return; // ioi: Refubrished - var initial = this.initial_resources; + var initial = this.initial; //var r_removed = []; // /*----------------------------------------------------------------------- TODO: remove this dirty hack !!! diff --combined portal/sliceresourceview.py index 64a151b2,f99c7d98..1ea6eada --- a/portal/sliceresourceview.py +++ b/portal/sliceresourceview.py @@@ -19,7 -19,7 +19,8 @@@ from plugins.queryupdater im from plugins.testbeds import TestbedsPlugin from plugins.scheduler2 import Scheduler2 from plugins.columns_editor import ColumnsEditor +from plugins.sladialog import SlaDialog + from plugins.lists.simplelist import SimpleList from myslice.theme import ThemeView @@@ -44,13 -44,16 +45,16 @@@ class SliceResourceView (LoginRequiredV user_fields = ['user_hrn'] # [column['name'] for column in user_md['column']] # TODO The query to run is embedded in the URL + # Example: select slice_hrn, resource.urn, lease.resource, lease.start_time, lease.end_time from slice where slice_hrn == "ple.upmc.myslicedemo" main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename) main_query.select( 'slice_hrn', 'resource.urn', 'resource.hostname', 'resource.type', 'resource.network_hrn', - 'lease.urn', + 'lease.resource', + 'lease.start_time', + 'lease.end_time', #'user.user_hrn', #'application.measurement_point.counter' ) @@@ -96,21 -99,35 +100,35 @@@ # 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, - }, + list_reserved_resources = SimpleList( + title = None, + page = page, + key = 'urn', + query = sq_resource, ) + list_reserved_leases = SimpleList( + title = None, + page = page, + key = 'resource', + query = sq_lease, + ) + + # 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 @@@ -174,7 -191,6 +192,7 @@@ toggled = False, domid = 'pending', outline_complete = True, + username = request.user, ) # -------------------------------------------------------------------------- @@@ -203,24 -219,10 +221,25 @@@ }, ) + # -------------------------------------------------------------------------- + # 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['list_reserved_resources'] = list_reserved_resources.render(self.request) + template_env['list_reserved_leases'] = list_reserved_leases.render(self.request) template_env['columns_editor'] = filter_column_editor.render(self.request) @@@ -228,7 -230,6 +247,7 @@@ 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 diff --combined portal/templates/_widget-slice-sections.html index 7c89f2e9,a3d5d95a..175b09c0 --- a/portal/templates/_widget-slice-sections.html +++ b/portal/templates/_widget-slice-sections.html @@@ -4,10 -4,9 +4,10 @@@
  • Testbeds
  • Resources
  • Users
  • -
  • Statistics
  • -
  • Measurements
  • + +
  • Measurements
  • Experiment
  • +
  • SLA
  • {% else %}