X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plugins%2Fsladialog%2Fstatic%2Fjs%2Fsladialog.js;fp=plugins%2Fsladialog%2Fstatic%2Fjs%2Fsladialog.js;h=c11874359bb78965e4bb655f18a8ee6edb2239ad;hb=6ff6f343105cd2ef19a99126b07e8dabf57d65f4;hp=1098e2efbfe109d476430371bcf0291315a0f26b;hpb=a8104de58940697d33f0f38cb3c866b7ecf6f4f4;p=myslice.git diff --git a/plugins/sladialog/static/js/sladialog.js b/plugins/sladialog/static/js/sladialog.js index 1098e2ef..c1187435 100644 --- a/plugins/sladialog/static/js/sladialog.js +++ b/plugins/sladialog/static/js/sladialog.js @@ -15,6 +15,8 @@ var SlaDialog = Plugin.extend({ + accepted_slas: {}, + /** XXX to check * @brief Plugin constructor * @param options : an associative array of setting values @@ -41,6 +43,7 @@ /* GUI setup and event binding */ // call function + this.button_binding(); }, @@ -61,18 +64,71 @@ return cols[0]; }, + check_template_status: function() { + for (var testbed in this.accepted_slas) { + if (!this.accepted_slas[testbed]) { return false; } + } + + return true; + }, + /* PLUGIN EVENTS */ // on_show like in querytable /* GUI EVENTS */ + button_binding: function() { + var self = this; + $(".sla-accept-button").click(function() { + // set SLA as accepted and remove warnings + var id = $(this).closest(".row").attr("id"); + self.accepted_slas[id] = true; + var is_ok = self.check_template_status(); + + if (is_ok) { + // remove warnings + // var warnings = manifold.query_store.get_record_state(resource_query.query_uuid, resource_key, STATE_WARNINGS); + } + }); + }, + + create_sla: function(record) { + var self = this; + + var urns = []; + + record.resource.forEach(function(r) { + if ($.inArray(r.component_id, record.resource) == -1) { // if not already selected + urns.push(r.component_id); + } + }); + + if (record.resource.length != 0 && typeof record.resource[0] !== "undefined") { + var data = { + "SLIVER_INFO_AGGREGATE_URN": record.resource[0].component_manager_id, + "SLIVER_INFO_EXPIRATION": record.lease[0].end_time, // FIXME: only working with leases + "SLIVER_INFO_SLICE_URN": record.slice_urn, + "SLIVER_INFO_CREATOR_URN": record.users[0], + "SLIVER_INFO_URN": urns, + "SLIVER_INFO_SLA_ID": self._getUUID() + }; + + console.log(data); + + $.post("/sla/agreements/create/", data) + .done(function (response) { + console.log("SLA created"); + }); + } + }, + uncheck: function(urn) { - $('#slamodal').on('hidden.bs.modal', function(e){ - $('#' + (urn).replace(/"/g,'')).click(); - console.log('#' + (data.value).replace(/"/g,'')); - }); +// $('#slamodal').on('hidden.bs.modal', function(e){ +// $('#' + (urn).replace(/"/g,'')).click(); +// console.log('#' + (data.value).replace(/"/g,'')); +// }); }, // a function to bind events here: click change @@ -117,10 +173,69 @@ }, - on_field_state_changed: function(result) + on_field_state_changed: function(data) { - console.log("triggered state_changed: "+result); + var self = this; // this.set_state(result, this.options.username); + + switch(data.state) { + case STATE_SET: + switch(data.op) { + case STATE_SET_IN_PENDING: + if (typeof(data.value) == 'string') { + // data.value = urn + this._supports_sla(data.value) + .done( function(testbeds) { + var urn_regexp = /\+(.*?)\+/; + var urn = urn_regexp.exec(data.value)[1]; + var pos = $.inArray(urn, testbeds); + if ( pos != -1) { + var id_ref = testbeds[pos].replace(/\.|:/g, "-"); + $("#" + id_ref).data("urns").push(data.value); + $("#" + id_ref).show(); + self.accepted_slas[id_ref] = false; + //$( "#sla_offers_list" ).append( + // $("
  • ").text("Testbed " + testbeds[pos] + " offers SLA for its resources") + //); + } + }); + } + break; + case STATE_SET_OUT: + // data.value = urn + if (typeof(data.value) == 'string') { + // data.value = urn + this._supports_sla(data.value) + .done( function(testbeds) { + var urn_regexp = /\+(.*?)\+/; + var urn = urn_regexp.exec(data.value)[1]; + var pos = $.inArray(urn, testbeds); + if ( pos != -1) { + var id_ref = testbeds[pos].replace(/\.|:/g, "-"); + var array = $("#" + id_ref).data("urns"); + array.splice(array.indexOf(data.value), 1); + + if ($("#" + id_ref).data("urns").length == 0) { + $("#" + id_ref).hide(); + delete self.accepted_slas[id_ref]; + } + //$( "#sla_offers_list" ).append( + // $("
  • ").text("Testbed " + testbeds[pos] + " offers SLA for its resources") + //); + } + }); + } + break; + } + break; + + case STATE_WARNINGS: + // Add resource to SLA + // data.key = urn + // data.value = {1: "SLA acceptance required..."} + // this.change_status(data.key, data.value); + break; + } }, // ... be sure to list all events here @@ -133,7 +248,7 @@ on_new_record: function(record) { - + this.create_sla(record); }, /* INTERNAL FUNCTIONS */ @@ -141,6 +256,19 @@ // only convention, not strictly enforced at the moment }, + _supports_sla: function(resource_urn) { + return $.ajax("/sla/testbeds/"); + }, + + + + _getUUID: function() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + var r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8); + return v.toString(16); + }); + }, + }); /* Plugin registration */