Pārlūkot izejas kodu

HUE-8161 [metadata] API to create a namespace

     $.post("/metadata/api/navigator/namespace/create/", {
        "namespace": "huecatalog",
        "description": "my desc"
      }, function(data) {
        console.log(ko.mapping.toJSON(data));
      });
Romain Rigaux 7 gadi atpakaļ
vecāks
revīzija
bf730c2bdc

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

@@ -538,6 +538,22 @@ def get_lineage(request):
   return JsonResponse(response)
 
 
+@error_handler
+def create_namespace(request):
+  response = {'status': -1}
+
+  api = NavigatorApi(request.user)
+  namespace = request.POST.get('namespace')
+  description = request.POST.get('description')
+
+  namespace = api.create_namespace(namespace=namespace, description=description)
+
+  response['namespace'] = namespace
+  response['status'] = 0
+
+  return JsonResponse(response)
+
+
 @error_handler
 def get_namespace(request):
   response = {'status': -1}

+ 12 - 2
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -504,11 +504,21 @@ class NavigatorApi(object):
       raise NavigatorApiException(e.message)
 
 
+  def create_namespace(self, namespace, description=None):
+    try:
+      data = json.dumps({'name': namespace, 'description': description})
+      return self._root.post('models/namespaces/', data=data, contenttype=_JSON_CONTENT_TYPE, clear_cookies=True)
+    except RestException, e:
+      msg = 'Failed to create namespace: %s' % namespace
+      LOG.error(msg)
+      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
+      msg = 'Failed to get namespace: %s' % namespace
       LOG.error(msg)
       raise NavigatorApiException(e.message)
 
@@ -518,7 +528,7 @@ class NavigatorApi(object):
       data = json.dumps(properties)
       return self._root.post('models/namespaces/%(namespace)s/properties' % {'namespace': namespace}, data=data, contenttype=_JSON_CONTENT_TYPE, clear_cookies=True)
     except RestException, e:
-      msg = 'Failed to search for namespace: %s' % namespace
+      msg = 'Failed to create namespace %s property' % namespace
       LOG.error(msg)
       raise NavigatorApiException(e.message)
 

+ 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/create/?$', 'create_namespace', name='create_namespace'),
   url(r'^api/navigator/namespace/?$', 'get_namespace', name='get_namespace'),
   url(r'^api/navigator/namespace/property/create/?$', 'create_namespace_property', name='create_namespace_property'),
 )

+ 13 - 1
docs/sdk/sdk.md

@@ -995,7 +995,19 @@ How to create a new locale for an app::
       });
 </pre>
 
- 
+
+### Creating a namespace
+
+<pre>
+     $.post("/metadata/api/navigator/namespace/create/", {
+        "namespace": "huecatalog",
+        "description": "my desc"
+      }, function(data) {
+        console.log(ko.mapping.toJSON(data));
+      });
+</pre>
+
+
 ### Creating a namespace property
 
 <pre>