From d035a1f93e4acbeee79b7c8200264687d940ccc2 Mon Sep 17 00:00:00 2001 From: Loic Baron Date: Mon, 6 Jul 2015 17:23:35 +0200 Subject: [PATCH] Filter status: All, Available, Unavailable, Unconfigured, Pending, Reserved --- manifoldapi/static/js/manifold.js | 15 +++++++-- .../filter_status/static/js/filter_status.js | 11 ++++--- .../templates/filter_status.html | 31 +++++++++++++++---- plugins/querytable/static/js/querytable.js | 6 ++-- portal/sliceresourceview.py | 6 ++-- .../fed4fire_slice-resource-view.html | 2 +- portal/templates/slice-resource-view.html | 2 +- rest/sfa_api.py | 6 ++++ 8 files changed, 59 insertions(+), 20 deletions(-) diff --git a/manifoldapi/static/js/manifold.js b/manifoldapi/static/js/manifold.js index f75ae208..f8d299a1 100644 --- a/manifoldapi/static/js/manifold.js +++ b/manifoldapi/static/js/manifold.js @@ -516,7 +516,7 @@ function QueryStore() { 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; @@ -525,6 +525,8 @@ function QueryStore() { 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) @@ -564,7 +566,7 @@ function QueryStore() { // 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; @@ -572,6 +574,9 @@ function QueryStore() { 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) @@ -610,6 +615,12 @@ function QueryStore() { // 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; diff --git a/plugins/filter_status/static/js/filter_status.js b/plugins/filter_status/static/js/filter_status.js index 324634c6..7a301005 100644 --- a/plugins/filter_status/static/js/filter_status.js +++ b/plugins/filter_status/static/js/filter_status.js @@ -128,11 +128,12 @@ manifold.raise_event(self.options.query_uuid, FILTER_REMOVED, filter); } // XXX The datatables will be refreshed twice ! - if (filter_status != 'all') { - // No filter for 'all' - var filter = ['manifold:status', '==', filter_status]; - manifold.raise_event(self.options.query_uuid, FILTER_ADDED, filter); - } + //if (filter_status != 'all') { + // No filter for 'all' + // Changed since we have available/unavailable status + var filter = ['manifold:status', '==', filter_status]; + manifold.raise_event(self.options.query_uuid, FILTER_ADDED, filter); + //} self.prev_filter_status = filter_status; }, diff --git a/plugins/filter_status/templates/filter_status.html b/plugins/filter_status/templates/filter_status.html index 3d1c44b4..a497a143 100644 --- a/plugins/filter_status/templates/filter_status.html +++ b/plugins/filter_status/templates/filter_status.html @@ -6,19 +6,27 @@ style='display: inline-block !important; font-size: inherit;' id="{{ domid }}__all" data-status="all" + title="View all resources." + rel='tooltip'> + All + + Available - - - Reserved + Unavailable + + + Reserved + + diff --git a/plugins/querytable/static/js/querytable.js b/plugins/querytable/static/js/querytable.js index 444fe604..76934e79 100644 --- a/plugins/querytable/static/js/querytable.js +++ b/plugins/querytable/static/js/querytable.js @@ -174,14 +174,16 @@ QUERYTABLE_BGCOLOR_REMOVED = 2; index['hostname'] = self.getColIndex('hostname',cols); index['urn'] = self.getColIndex('urn',cols); index['type'] = self.getColIndex('type',cols); - index['status'] = self.getColIndex('boot_state',cols); + //index['status'] = self.getColIndex('boot_state',cols); + index['available'] = self.getColIndex('available',cols); index['testbed'] = self.getColIndex('testbed_name',cols); index['facility'] = self.getColIndex('facility_name',cols); var resourceData = { 'hostname' : strip(aData[index['hostname']]), 'urn' : aData[index['urn']], 'type' : aData[index['type']], - 'status' : aData[index['status']], + //'status' : aData[index['status']], + 'available' : aData[index['available']], 'testbed' : aData[index['testbed']], 'facility' : aData[index['facility']], }; diff --git a/portal/sliceresourceview.py b/portal/sliceresourceview.py index 7c0d5c0a..cdd5f135 100644 --- a/portal/sliceresourceview.py +++ b/portal/sliceresourceview.py @@ -80,17 +80,17 @@ class SliceResourceView (LoginRequiredView, ThemeView): main_query.select(slice_fields) # Columns shown by default in Query_table plugin - page.expose_js_var("QUERYTABLE_MAP","{'Resource name': 'hostname', 'Type': 'type', 'Facility': 'facility_name','Testbed': 'testbed_name', 'Status':'boot_state'}") + page.expose_js_var("QUERYTABLE_MAP","{'Resource name': 'hostname', 'Type': 'type', 'Facility': 'facility_name','Testbed': 'testbed_name', 'Available':'available'}") # Columns checked by default in Columns_selector plugin - query_default_fields = ['hostname', 'type', 'facility_name', 'testbed_name', 'boot_state'] + query_default_fields = ['hostname', 'type', 'facility_name', 'testbed_name', 'available'] QUERYTABLE_MAP = { 'hostname' : 'Resource name', 'type' : 'Type', 'facility_name' : 'Facility', 'testbed_name' : 'Testbed', - 'boot_state' : 'Status', + 'available' : 'Available', } diff --git a/portal/templates/fed4fire/fed4fire_slice-resource-view.html b/portal/templates/fed4fire/fed4fire_slice-resource-view.html index 650092f5..960ffcbb 100644 --- a/portal/templates/fed4fire/fed4fire_slice-resource-view.html +++ b/portal/templates/fed4fire/fed4fire_slice-resource-view.html @@ -33,7 +33,7 @@ $(document).ready(function() {
-
+
{{ filter_status }}
diff --git a/portal/templates/slice-resource-view.html b/portal/templates/slice-resource-view.html index 81f457c3..cbd8d1bd 100644 --- a/portal/templates/slice-resource-view.html +++ b/portal/templates/slice-resource-view.html @@ -33,7 +33,7 @@ $(document).ready(function() {
-
+
{{ filter_status }}
diff --git a/rest/sfa_api.py b/rest/sfa_api.py index f88fc049..cc9f9a1e 100644 --- a/rest/sfa_api.py +++ b/rest/sfa_api.py @@ -186,6 +186,7 @@ def sfa_client(request, method, hrn=None, urn=None, object_type=None, rspec=None elif 'user_credential' in user_config: user_cred = user_config['user_credential'] else: + logger.error("no user credentials for user = ", user_email) user_cred = {} if object_type: @@ -197,6 +198,11 @@ def sfa_client(request, method, hrn=None, urn=None, object_type=None, rspec=None for obj_name, cred in user_config['%s_credentials'%object_type].items(): if obj_name == hrn: object_cred = cred + else: + logger.error("no credentials for object") + logger.error(object_type) + logger.error(object_name) + object_cred = {} # Both AM & Registry if method == "GetVersion": -- 2.43.0