瀏覽代碼

HUE-8161 [metadata] Support retrieving a namespace

     $.post("/metadata/api/navigator/namespace/", {
        namespace: 'huecatalog'
      }, function(data) {
        console.log(ko.mapping.toJSON(data));
      });
Romain Rigaux 7 年之前
父節點
當前提交
6def9d1

+ 16 - 0
desktop/libs/metadata/src/metadata/navigator_api.py

@@ -536,3 +536,19 @@ def get_lineage(request):
   response['status'] = 0
 
   return JsonResponse(response)
+
+
+@error_handler
+def get_namespace(request):
+  response = {'status': -1}
+
+  api = NavigatorApi(request.user)
+  namespace = request.POST.get('namespace')
+
+  namespace = api.get_namespace(namespace)
+
+  response['namespace'] = namespace
+  response['status'] = 0
+
+  return JsonResponse(response)
+

+ 9 - 0
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -504,6 +504,15 @@ class NavigatorApi(object):
       raise NavigatorApiException(e.message)
 
 
+  def get_namespace(self, namespace):
+    try:
+      return self._root.get('models/namespaces/%(namespace)s' % {'namespace': namespace})
+    except RestException, e:
+      msg = 'Failed to search for namespace: %s' % namespace
+      LOG.error(msg)
+      raise NavigatorApiException(e.message)
+
+
   def _get_boosted_term(self, term):
     return 'AND'.join([
       '(%s)' % 'OR'.join(['(%s:*%s*^%s)' % (field, term, weight) for (field, weight) in NavigatorApi.DEFAULT_SEARCH_FIELDS]),  # Matching fields

+ 1 - 0
desktop/libs/metadata/src/metadata/urls.py

@@ -31,6 +31,7 @@ urlpatterns = patterns('metadata.navigator_api',
   url(r'^api/navigator/update_properties/?$', 'update_properties', name='update_properties'),
   url(r'^api/navigator/delete_metadata_properties/?$', 'delete_metadata_properties', name='delete_metadata_properties'),
   url(r'^api/navigator/lineage/?$', 'get_lineage', name='get_lineage'),
+  url(r'^api/navigator/namespace/?$', 'get_namespace', name='get_namespace'),
 )
 
 

+ 15 - 0
docs/sdk/sdk.md

@@ -981,6 +981,21 @@ How to create a new locale for an app::
     cd $APP_ROOT/src/$APP_NAME/locale
     $HUE_ROOT/build/env/bin/pybabel init -D django -i en_US.pot -d . -l fr
 
+# API
+
+## Metadata
+ 
+### Getting a namespace
+
+<pre>
+     $.post("/metadata/api/navigator/namespace/", {
+        namespace: 'huecatalog'
+      }, function(data) {
+        console.log(ko.mapping.toJSON(data));
+      });
+</pre>
+
+
 # Testing
 
 ## The short story