Filter status: All, Available, Unavailable, Unconfigured, Pending, Reserved
authorLoic Baron <loic.baron@lip6.fr>
Mon, 6 Jul 2015 15:23:35 +0000 (17:23 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Mon, 6 Jul 2015 15:23:35 +0000 (17:23 +0200)
manifoldapi/static/js/manifold.js
plugins/filter_status/static/js/filter_status.js
plugins/filter_status/templates/filter_status.html
plugins/querytable/static/js/querytable.js
portal/sliceresourceview.py
portal/templates/fed4fire/fed4fire_slice-resource-view.html
portal/templates/slice-resource-view.html
rest/sfa_api.py

index f75ae20..f8d299a 100644 (file)
@@ -516,7 +516,7 @@ function QueryStore() {
     this.recount = function(query_uuid)
     {
         var query_ext;
     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;
 
         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);
         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)
 
             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) {
         // 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;
 
             /* 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);
 
             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)
             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;
                             // 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;
                         case 'unconfigured':
                             visible = is_unconfigured;
                             return visible;
index 324634c..7a30100 100644 (file)
                 manifold.raise_event(self.options.query_uuid, FILTER_REMOVED, filter);
             }
             // XXX The datatables will be refreshed twice !
                 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;
         },
 
             self.prev_filter_status = filter_status;
         },
index 3d1c44b..a497a14 100644 (file)
@@ -6,19 +6,27 @@
      style='display: inline-block !important; font-size: inherit;' 
      id="{{ domid }}__all" 
      data-status="all"
      style='display: inline-block !important; font-size: inherit;' 
      id="{{ domid }}__all" 
      data-status="all"
+        title="View all resources."
+        rel='tooltip'>
+       All
+  </a>
+  <a href="#" 
+     class="list-group-item sl-resources" 
+     style='display: inline-block !important; font-size: inherit;' 
+     id="{{ domid }}__available" 
+     data-status="available"
         title="View resources that are available to be reserved."
         rel='tooltip'>
        Available
   </a>
         title="View resources that are available to be reserved."
         rel='tooltip'>
        Available
   </a>
-  
-  <a href="#"
+   <a href="#" 
      class="list-group-item sl-resources" 
      style='display: inline-block !important; font-size: inherit;' 
      class="list-group-item sl-resources" 
      style='display: inline-block !important; font-size: inherit;' 
-     id="{{ domid }}__reserved
-     data-status="reserved"
-     title="View resources that you have previously reserved for the slice."
+     id="{{ domid }}__unavailable
+     data-status="unavailable"
+        title="View resources that are NOT available to be reserved."
         rel='tooltip'>
         rel='tooltip'>
-       Reserved
+       Unavailable
   </a>
   
   <a href="#" class="list-group-item sl-resources"
   </a>
   
   <a href="#" class="list-group-item sl-resources"
        Pending
        <span class="badge" id="badge-pending" style="display:none;"></span>
   </a>
        Pending
        <span class="badge" id="badge-pending" style="display:none;"></span>
   </a>
+  <a href="#"
+     class="list-group-item sl-resources" 
+     style='display: inline-block !important; font-size: inherit;' 
+     id="{{ domid }}__reserved" 
+     data-status="reserved"
+     title="View resources that you have previously reserved for the slice."
+        rel='tooltip'>
+       Reserved
+  </a>
+
 </div> 
 </div> 
index 444fe60..76934e7 100644 (file)
@@ -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['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']],
                 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']],
                 };
                     'testbed' : aData[index['testbed']],
                     'facility' : aData[index['facility']],
                 };
index 7c0d5c0..cdd5f13 100644 (file)
@@ -80,17 +80,17 @@ class SliceResourceView (LoginRequiredView, ThemeView):
         main_query.select(slice_fields)
 
         # Columns shown by default in Query_table plugin
         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
        
         # 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',
 
         QUERYTABLE_MAP = { 
             'hostname'      :   'Resource name',
             'type'          :   'Type',
             'facility_name' :   'Facility',
             'testbed_name'  :   'Testbed',
-            'boot_state'    :   'Status',
+            'available'     :   'Available',
         }
 
 
         }
 
 
index 650092f..960ffcb 100644 (file)
@@ -33,7 +33,7 @@ $(document).ready(function() {
                </div>
        
                <div class="row">
                </div>
        
                <div class="row">
-                       <div class="col-md-6">
+                       <div class="col-md-8">
                                {{ filter_status }}
                        </div>
                        <div class="col-md-1">
                                {{ filter_status }}
                        </div>
                        <div class="col-md-1">
index 81f457c..cbd8d1b 100644 (file)
@@ -33,7 +33,7 @@ $(document).ready(function() {
                </div>
        
                <div class="row">
                </div>
        
                <div class="row">
-                       <div class="col-md-6">
+                       <div class="col-md-8">
                                {{ filter_status }}
                        </div>
                        <div class="col-md-1">
                                {{ filter_status }}
                        </div>
                        <div class="col-md-1">
index f88fc04..cc9f9a1 100644 (file)
@@ -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:
             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:
                 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
                     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": 
 
             # Both AM & Registry
             if method == "GetVersion":