this.recount = function(query_uuid)
{
var query_ext;
- var is_reserved, is_pending, in_set, is_unconfigured;
+ var is_reserved, is_pending, in_set, is_unconfigured, is_unavailable, is_available;
query_ext = manifold.query_store.find_analyzed_query_ext(query_uuid);
query_ext.num_pending = 0;
this.iter_records(query_uuid, function(record_key, record) {
var record_state = manifold.query_store.get_record_state(query_uuid, record_key, STATE_SET);
var record_warnings = manifold.query_store.get_record_state(query_uuid, record_key, STATE_WARNINGS);
+ is_unavailable = (record.available == 'false');
+ is_available = (record.available == 'true');
is_reserved = (record_state == STATE_SET_IN)
|| (record_state == STATE_SET_OUT_PENDING)
// Adapted from querytable._querytable_filter()
this.iter_records(query_uuid, function(record_key, record) {
- var is_reserved, is_pending, in_set, is_unconfigured;
+ var is_reserved, is_pending, in_set, is_unconfigured, is_unavailable, is_available;
/* By default, a record is visible unless a filter says the opposite */
var visible = true;
var record_state = manifold.query_store.get_record_state(query_uuid, record_key, STATE_SET);
var record_warnings = manifold.query_store.get_record_state(query_uuid, record_key, STATE_WARNINGS);
+ is_unavailable = (record.available == 'false');
+ is_available = (record.available == 'true');
+
is_reserved = (record_state == STATE_SET_IN)
|| (record_state == STATE_SET_OUT_PENDING)
|| (record_state == STATE_SET_IN_SUCCESS)
// false => ~ break
visible = is_reserved;
return visible;
+ case 'available':
+ visible = is_available;
+ return visible;
+ case 'unavailable':
+ visible = is_unavailable;
+ return visible;
case 'unconfigured':
visible = is_unconfigured;
return visible;
* \param array results results corresponding to query
*/
publish_result: function(query, result) {
- if (typeof result === 'undefined')
+ if (result == null || typeof result === 'undefined')
result = [];
// NEW PLUGIN API
},
store_records: function(query, records) {
- // Store records
- var query_ext = manifold.query_store.find_analyzed_query_ext(query.query_uuid);
- if (query_ext.set_query_ext) {
- // We have a domain query
- // The results are stored in the corresponding set_query
- manifold.query_store.set_records(query_ext.set_query_ext.query.query_uuid, records);
-
- } else if (query_ext.domain_query_ext) {
- // We have a set query, it is only used to determine which objects are in the set, we should only retrieve the key
- // Has it a domain query, and has it completed ?
- $.each(records, function(i, record) {
- var key = manifold.metadata.get_key(query.object);
- if ( typeof record === "string" ){
- var record_key = record;
- }else{
- var record_key = manifold.record_get_value(record, key);
- }
- manifold.query_store.set_record_state(query.query_uuid, record_key, STATE_SET, STATE_SET_IN);
- });
+ if(records != null && records.length != 0){
+ // Store records
+ var query_ext = manifold.query_store.find_analyzed_query_ext(query.query_uuid);
+ if (query_ext.set_query_ext) {
+ // We have a domain query
+ // The results are stored in the corresponding set_query
+ manifold.query_store.set_records(query_ext.set_query_ext.query.query_uuid, records);
+
+ } else if (query_ext.domain_query_ext) {
+ // We have a set query, it is only used to determine which objects are in the set, we should only retrieve the key
+ // Has it a domain query, and has it completed ?
+ $.each(records, function(i, record) {
+ var key = manifold.metadata.get_key(query.object);
+ if ( typeof record === "string" ){
+ var record_key = record;
+ }else{
+ var record_key = manifold.record_get_value(record, key);
+ }
+ manifold.query_store.set_record_state(query.query_uuid, record_key, STATE_SET, STATE_SET_IN);
+ });
- } else {
- // We have a normal query
- manifold.query_store.set_records(query.query_uuid, records, STATE_SET_IN);
+ } else {
+ // We have a normal query
+ manifold.query_store.set_records(query.query_uuid, records, STATE_SET_IN);
+ }
}
},
{
var query, data;
- // JGLL: TODO These lines should be moved to a different part of the code
- // to avoid a call every time a resource is selected or deselected -> where?
- function get_testbeds_with_sla() {
- return $.ajax({
- url: '/sla/testbeds/',
- async: true
- });
- }
-
query = query_ext.query;
+ var testbeds_with_sla = localStorage.getItem("sla_testbeds").split(",");
+
switch(query.object) {
case 'resource':
+
+ var warnings = manifold.query_store.get_record_state(query.query_uuid, record_key, STATE_WARNINGS);
// CONSTRAINT_RESERVABLE_LEASE
//
// +) If a reservable node is added to the slice, then it should have a corresponding lease
// XXX Not always a resource
- var is_reservable = (record.exclusive == true);
+ var is_reservable = (record.exclusive == 'true');
if (is_reservable) {
- var warnings = manifold.query_store.get_record_state(query.query_uuid, record_key, STATE_WARNINGS);
+ // var warnings = manifold.query_store.get_record_state(query.query_uuid, record_key, STATE_WARNINGS);
if (event_type == STATE_SET_ADD) {
// We should have a lease_query associated
var warn = CONSTRAINT_RESERVABLE_LEASE_MSG;
warnings[CONSTRAINT_RESERVABLE_LEASE] = warn;
- manifold.query_store.set_record_state(query.query_uuid, record_key, STATE_WARNINGS, warnings);
+ /*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)
data = {
state: STATE_WARNINGS,
op : null,
value : warnings
}
- manifold.raise_record_event(query.query_uuid, FIELD_STATE_CHANGED, data);
+ manifold.raise_record_event(query.query_uuid, FIELD_STATE_CHANGED, data);*/
} else {
// Lease are defined, delete the warning in case it was set previously
}
}
+ var urn_regexp = /\+(.*?)\+/;
+ var testbed_urn = urn_regexp.exec(record.urn)[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);
+
+ if (event_type == STATE_SET_ADD) {
+ var warn = CONSTRAINT_SLA_MSG;
+ warnings[CONSTRAINT_SLA] = warn;
+ } 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)
+ data = {
+ state: STATE_WARNINGS,
+ key : record_key,
+ op : null,
+ value : warnings
+ }
+ manifold.raise_record_event(query.query_uuid, FIELD_STATE_CHANGED, data);
+
// JGLL: SLA code
/*get_testbeds_with_sla()
.done( function(testbeds) {
switch(event_type) {
case STATUS_REMOVE_WARNING:
record = manifold.query_store.get_record(query_uuid, data.value);
- this._enforce_constraints(query_ext, record, data.value, STATE_SET_ADD);
+ this._enforce_constraints(query_ext, record, data.value, STATE_SET_REMOVE);
+ break;
// XXX At some point, should be renamed to RECORD_STATE_CHANGED
case FIELD_STATE_CHANGED: