瀏覽代碼

[metadata] Add Navigator feature to update entity properties

Jenny Kim 10 年之前
父節點
當前提交
8cc3bf0
共有 2 個文件被更改,包括 30 次插入0 次删除
  1. 16 0
      desktop/libs/metadata/src/metadata/navigator.py
  2. 14 0
      desktop/libs/metadata/src/metadata/tests.py

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

@@ -152,6 +152,22 @@ class NavigatorApi(object):
     return self.update_entity(entity_id, tags=new_tags)
 
 
+  def update_properties(self, entity_id, properties):
+    entity = self.get_entity(entity_id)
+    new_props = entity['properties'] or {}
+    new_props.update(properties)
+    return self.update_entity(entity_id, properties=new_props)
+
+
+  def delete_properties(self, entity_id, property_keys):
+    entity = self.get_entity(entity_id)
+    new_props = entity['properties'] or {}
+    for key in property_keys:
+      if key in new_props:
+        del new_props[key]
+    return self.update_entity(entity_id, properties=new_props)
+
+
   def _clean_path(self, path):
     return path.rstrip('/').split('/')[-1], self._escape_slashes(path.rstrip('/'))
 

+ 14 - 0
desktop/libs/metadata/src/metadata/tests.py

@@ -86,3 +86,17 @@ class TestNavigatorApi(object):
     entity = self.api.delete_tags(entity['identity'], ['hue_test'])
     new_tags = entity['tags'] or []
     assert_equal(tags, new_tags)
+
+
+  def test_update_properties(self):
+    entity = self.api.find_entity(source_type='HIVE', type='DATABASE', name='default')
+    props = entity['properties'] or {}
+
+    entity = self.api.update_properties(entity['identity'], {'hue': 'test'})
+    props.update({'hue': 'test'})
+    assert_equal(props, entity['properties'])
+
+    entity = self.api.delete_properties(entity['identity'], ['hue'])
+    del props['hue']
+    new_props = entity['properties'] or {}
+    assert_equal(props, new_props)