Browse Source

[security] Load HDFS root in case you reload a path that does not exist

Enrico Berti 11 years ago
parent
commit
6b0ad67
2 changed files with 28 additions and 21 deletions
  1. 4 2
      apps/security/src/security/api/hdfs.py
  2. 24 19
      apps/security/static/js/hdfs.ko.js

+ 4 - 2
apps/security/src/security/api/hdfs.py

@@ -53,8 +53,10 @@ def list_hdfs(request, path):
       json_response = listdir_paged(request, path)
       json_response = listdir_paged(request, path)
     else:
     else:
       json_response = display(request, path)
       json_response = display(request, path)
-  except:
-    json_response = HttpResponse(json.dumps({'files': [], 'page': {}}), mimetype="application/json") # AccessControlException: Permission denied: user=test, access=READ_EXECUTE, inode="/tmp/dir":romain:supergroup:drwxr-xr-x:group::r-x,group:bob:---,group:test:---,default:user::rwx,default:group::r--,default:mask::r--,default:other::rwx (error 403)
+  except IOError:
+    json_response = HttpResponse(json.dumps({'files': [], 'page': {}, 'error': 'FILE_NOT_FOUND'}), mimetype="application/json") # AccessControlException: Permission denied: user=test, access=READ_EXECUTE, inode="/tmp/dir":romain:supergroup:drwxr-xr-x:group::r-x,group:bob:---,group:test:---,default:user::rwx,default:group::r--,default:mask::r--,default:other::rwx (error 403)
+  except Exception, e:
+    json_response = HttpResponse(json.dumps({'files': [], 'page': {}, 'error': e.message}), mimetype="application/json") # AccessControlException: Permission denied: user=test, access=READ_EXECUTE, inode="/tmp/dir":romain:supergroup:drwxr-xr-x:group::r-x,group:bob:---,group:test:---,default:user::rwx,default:group::r--,default:mask::r--,default:other::rwx (error 403)
 
 
   if json.loads(request.GET.get('isDiffMode', 'false')):
   if json.loads(request.GET.get('isDiffMode', 'false')):
     request.doas = 'hdfs'
     request.doas = 'hdfs'

+ 24 - 19
apps/security/static/js/hdfs.ko.js

@@ -349,27 +349,32 @@ var Assist = function (vm, assist) {
         'isDiffMode': self.isDiffMode()
         'isDiffMode': self.isDiffMode()
       },
       },
       function (data) {
       function (data) {
-        self.loadParents(data.breadcrumbs);
-        if (data['files'] && data['files'][0] && data['files'][0]['type'] == 'dir') { // Hack for now
-          $.each(data.files, function (index, item) {
-            self.convertItemToObject(item);
-          });
+        if (data.error != null){
+          self.path("/");
         }
         }
         else {
         else {
-          self.convertItemToObject(data);
-        }
-        self.getTreeAdditionalDataForPath(_path).loaded = true;
-        if (data.page != null && data.page.number != null){
-          self.updatePathProperty(self.growingTree(), _path, "page", data.page);
-        }
-        if (typeof loadCallback != "undefined"){
-          loadCallback(data);
-        }
-        else {
-          self.loadData(self.growingTree());
-        }
-        if (typeof optionalPath == "undefined"){
-          self.getAcls();
+          self.loadParents(data.breadcrumbs);
+          if (data['files'] && data['files'][0] && data['files'][0]['type'] == 'dir') { // Hack for now
+            $.each(data.files, function (index, item) {
+              self.convertItemToObject(item);
+            });
+          }
+          else {
+            self.convertItemToObject(data);
+          }
+          self.getTreeAdditionalDataForPath(_path).loaded = true;
+          if (data.page != null && data.page.number != null){
+            self.updatePathProperty(self.growingTree(), _path, "page", data.page);
+          }
+          if (typeof loadCallback != "undefined"){
+            loadCallback(data);
+          }
+          else {
+            self.loadData(self.growingTree());
+          }
+          if (typeof optionalPath == "undefined"){
+            self.getAcls();
+          }
         }
         }
       }).fail(function (xhr, textStatus, errorThrown) {
       }).fail(function (xhr, textStatus, errorThrown) {
         $(document).trigger("error", xhr.responseText);
         $(document).trigger("error", xhr.responseText);