From 26b2d32f6132a3e619f47411adeccfa693b71162 Mon Sep 17 00:00:00 2001 From: Javier Garcia Date: Thu, 17 Sep 2015 10:33:45 +0200 Subject: [PATCH] SLA plugin: template integration with SLA Dashboard --- manifoldapi/static/js/manifold.js | 8 +- plugins/sladialog/static/js/sladialog.js | 206 +++++++++------------ plugins/sladialog/templates/sladialog.html | 73 +------- sla/slaclient/restclient.py | 4 +- sla/slicetabsla.py | Bin 15185 -> 15876 bytes sla/urls.py | 2 + 6 files changed, 95 insertions(+), 198 deletions(-) diff --git a/manifoldapi/static/js/manifold.js b/manifoldapi/static/js/manifold.js index d6f09320..7b2d54c1 100644 --- a/manifoldapi/static/js/manifold.js +++ b/manifoldapi/static/js/manifold.js @@ -1690,6 +1690,8 @@ case TYPE_LIST_OF_VALUES: query = query_ext.query; + var testbeds_with_sla = localStorage.getItem("sla_testbeds").split(","); + switch(query.object) { case 'resource': @@ -1735,9 +1737,9 @@ case TYPE_LIST_OF_VALUES: } } - /*var urn_regexp = /\+(.*?)\+/; + var urn_regexp = /\+(.*?)\+/; var testbed_urn = urn_regexp.exec(record.urn)[1]; - var has_sla = $.inArray(testbed_urn, localStorage.getItem("sla_testbeds").split(",")) != -1; + var has_sla = $.inArray(testbed_urn, testbeds_with_sla) != -1; if (has_sla) { // var warnings = manifold.query_store.get_record_state(query.query_uuid, record_key, STATE_WARNINGS); @@ -1748,7 +1750,7 @@ case TYPE_LIST_OF_VALUES: } else { delete warnings[CONSTRAINT_SLA]; } - }*/ + } manifold.query_store.set_record_state(query.query_uuid, record_key, STATE_WARNINGS, warnings); // Signal the change to plugins (even if the constraint does not apply, so that the plugin can display a checkmark) diff --git a/plugins/sladialog/static/js/sladialog.js b/plugins/sladialog/static/js/sladialog.js index 2773df09..8ea38dc5 100644 --- a/plugins/sladialog/static/js/sladialog.js +++ b/plugins/sladialog/static/js/sladialog.js @@ -1,13 +1,10 @@ /** - * MyPlugin: demonstration plugin - * Version: 0.1 - * Description: Template for writing new plugins and illustrating the different - * possibilities of the plugin API. - * This file is part of the Manifold project + * SlaDialog + * Description: Plugin to allow SLA acceptance and creation to MySlice portal + * in Fed4FIRE * Requires: js/plugin.js - * URL: http://www.myslice.info - * Author: Jordan Augé - * Copyright: Copyright 2012-2013 UPMC Sorbonne Universités + * Author: Javier García Lloreda + * Copyright: Copyright Atos Spain S.A. * License: GPLv3 */ @@ -18,17 +15,8 @@ accepted_slas: {}, queries: [], - /** XXX to check - * @brief Plugin constructor - * @param options : an associative array of setting values - * @param element : - * @return : a jQuery collection of objects on which the plugin is - * applied, which allows to maintain chainability of calls - */ init: function(options, element) { - // for debugging tools - this.classname="SlaDialog"; - // Call the parent constructor, see FAQ when forgotten + this.classname = "SlaDialog"; this._super(options, element); /* Member variables */ @@ -36,22 +24,19 @@ /* Plugin events */ /* Setup query and record handlers */ - - // Explain this will allow query events to be handled - // What happens when we don't define some events ? - // Some can be less efficient this.listen_query(options.query_uuid); /* GUI setup and event binding */ + // call function this.button_binding(); // Get testbeds with sla and store them in localStorage - //this.get_testbeds_with_sla(); - + this.get_testbeds_with_sla(); }, get_testbeds_with_sla: function () { + var self = this; return $.get('/sla/testbeds/', function(data) { if (typeof(Storage) !== "undefined") { if (!localStorage.getItem("sla_testbeds")) { @@ -59,24 +44,44 @@ localStorage.setItem("sla_testbeds", testbeds); } } + }).done(function(data) { + self.get_sla_templates(data); + alert("sla templates recovered: " + data); }); }, - find_row: function(key) - { - // key in third position, column id = 2 - var KEY_POS = 2; + get_sla_templates: function (testbeds) { - var cols = $.grep(this.table.fnSettings().aoData, function(col) { - return (col._aData[KEY_POS] == key); - } ); + testbeds.forEach(function(testbed, index, array) { - if (cols.length == 0) - return null; - if (cols.length > 1) - throw "Too many same-key rows in ResourceSelected plugin"; + if(testbed!="omf:netmode") { return } // TODO: remove - return cols[0]; + $.get('/sla/agreements/templates/' + testbed, function(slo) { + + $(".modal-body #sla_template").append(slo); + + var content = + " -
- - - - -
+
\ No newline at end of file diff --git a/sla/slaclient/restclient.py b/sla/slaclient/restclient.py index c3dc0134..4b8614be 100755 --- a/sla/slaclient/restclient.py +++ b/sla/slaclient/restclient.py @@ -343,12 +343,12 @@ class Templates(object): converter = xmlconverter.AgreementConverter() self.res = _Resource(resourceurl, converter) - def getall(self): + def getall(self, provider_id): """ Get all templates :rtype : list[wsag_model.Template] """ - return self.res.getall() + return self.res.get(path="", params={"testbed": provider_id}) def getbyid(self, provider_id): """Get a template diff --git a/sla/slicetabsla.py b/sla/slicetabsla.py index c9043f67862d6749cf0010a19555e4c578b6552e..a5b56fd23f2a7b6083e07001d1e3a88a3f67e98a 100755 GIT binary patch literal 15876 zcmeHNUvJws5Z|*u#le2C3}^~kpbs(NhoDP~07Fu=!Cr!ZV5E~mOd>UsavKc$?gJ^3 zqMW!*&^@#Re-D8|p6`zLk9W3;;-om~+o54xos^;-I<5#-ObdCUvFlr^QJvJR)hG$$ z{h$fs8XJ_wz3$py5)u*;5)u*;5)u*;5)u-Ad=&BgKXA6clT7V3?P?*r=o^5;tu*~7 zBqSsxBqSsxBqSsxB>X&B002nTgXBOPiP$06i^ZbC8c2hhAg_fi?Q#|f2&;0?sPr9H zo2}&$(J4~447rBgBNl!u+Z=u<2Z^c|Tp{e9VpcS$?;e5%M|6pg6KS+qELISXzK5M9E25=rv#?gBoC{60kg$W#iZQY|adm@Oj&%m z`gCoAEnA1(wIlCo!?-iS2mhQ+s^{?f%?4lvpYFwHc>N|mRgcn|)+%XSLHN)`V&9)T zsbE`uP4I8O$33bT-TrlTG3ONqU<-o6z2j9-jz?M&=ea8X-DfGOZY1Lfde z?a86SmhDkO&7{(ns<4VbM~_!C1^lR;#z8Q$i8i*z#;J6X^GIc!so*$Mw~3SMc`U z#!@}-(iBP10?L*uW$(0LYf_=6tUXdf|EDE$%*^ptdR%A6^;wO5Nlnci<9v#A*=TeGUTkWyD;CtG# z3hbq(wlgPFUd>ETC0dV%BOFQ%K7NkpS#?k$$DzR>@G-^pCj56BCW{yK&?Dbk$cZno zXi8JFIIjroCc+{JC#;GzbTiwG)K%5O$5TZ9jhlj1WEumbkA-7?wFme2#U_}C)xJ0! z3*BBau3`D^;`i(Gj~AEkVQE~}%ghy(nHFI@GsE0Cp*gamyvOp-XlgP_SQj3Kh7)*s zbqzu2($OA{%_5G_aGH8nd5Q&oeSEXO{|l*U8~xf}Q?4mh gnw8O`?cB3C>Y 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[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})/guarantees/(?P\w+)/violations$', slicetabsla.agreement_term_violations, name='agreement_term_violations'), + url(r'^agreements/templates/(?P[^/]+)', + slicetabsla.AgreementTemplates.as_view(), name='agreement_templates'), url(r'^agreements/create/$', slicetabsla.CreateAgreement.as_view(), name="agreement_create"), # url(r'^agreements/simplecreate/?$', -- 2.47.0