mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2026-01-06 04:26:57 +00:00
Add GET with fields param (#1033)
This commit is contained in:
parent
617ca4be3f
commit
87fd93a3d0
@ -297,28 +297,36 @@ class OpenMetadata(OMetaLineageMixin, OMetaTableMixin, Generic[T, C]):
|
||||
resp = method(self.get_suffix(entity), data=data.json())
|
||||
return entity_class(**resp)
|
||||
|
||||
def get_by_name(self, entity: Type[T], fqdn: str) -> Optional[T]:
|
||||
def get_by_name(
|
||||
self, entity: Type[T], fqdn: str, fields: Optional[List[str]] = None
|
||||
) -> Optional[T]:
|
||||
"""
|
||||
Return entity by name or None
|
||||
"""
|
||||
|
||||
return self._get(entity=entity, path=f"name/{fqdn}")
|
||||
return self._get(entity=entity, path=f"name/{fqdn}", fields=fields)
|
||||
|
||||
def get_by_id(self, entity: Type[T], entity_id: str) -> Optional[T]:
|
||||
def get_by_id(
|
||||
self, entity: Type[T], entity_id: str, fields: Optional[List[str]] = None
|
||||
) -> Optional[T]:
|
||||
"""
|
||||
Return entity by ID or None
|
||||
"""
|
||||
|
||||
return self._get(entity=entity, path=entity_id)
|
||||
return self._get(entity=entity, path=entity_id, fields=fields)
|
||||
|
||||
def _get(self, entity: Type[T], path: str) -> Optional[T]:
|
||||
def _get(
|
||||
self, entity: Type[T], path: str, fields: Optional[List[str]] = None
|
||||
) -> Optional[T]:
|
||||
"""
|
||||
Generic GET operation for an entity
|
||||
:param entity: Entity Class
|
||||
:param path: URL suffix by FQDN or ID
|
||||
:param fields: List of fields to return
|
||||
"""
|
||||
fields_str = "?fields=" + ",".join(fields) if fields else ""
|
||||
try:
|
||||
resp = self.client.get(f"{self.get_suffix(entity)}/{path}")
|
||||
resp = self.client.get(f"{self.get_suffix(entity)}/{path}{fields_str}")
|
||||
return entity(**resp)
|
||||
except APIError as err:
|
||||
logger.error(
|
||||
|
||||
@ -65,6 +65,20 @@ class OMetaModelTest(TestCase):
|
||||
self.assertEqual(res_create.id, res.id)
|
||||
self.assertEqual(res.owner.id, self.user.id)
|
||||
|
||||
# Getting without owner field does not return it by default
|
||||
res_none = self.metadata.get_by_name(
|
||||
entity=Model, fqdn=self.entity.fullyQualifiedName
|
||||
)
|
||||
self.assertIsNone(res_none.owner)
|
||||
|
||||
# We can request specific fields to be added
|
||||
res_owner = self.metadata.get_by_name(
|
||||
entity=Model,
|
||||
fqdn=self.entity.fullyQualifiedName,
|
||||
fields=["owner", "followers"],
|
||||
)
|
||||
self.assertEqual(res_owner.owner.id, self.user.id)
|
||||
|
||||
def test_get_name(self):
|
||||
"""
|
||||
We can fetch a model by name and get it back as Entity
|
||||
@ -129,7 +143,7 @@ class OMetaModelTest(TestCase):
|
||||
|
||||
# Then we should not find it
|
||||
res = self.metadata.list_entities(entity=Model)
|
||||
print(res)
|
||||
|
||||
assert not next(
|
||||
iter(
|
||||
ent
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user