mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-07-25 02:04:39 +00:00
parent
b3087d08b9
commit
c22381fdc8
@ -13,7 +13,7 @@ from requests.models import Response
|
|||||||
from metadata.generated.schema.type import basic
|
from metadata.generated.schema.type import basic
|
||||||
from metadata.generated.schema.type.entityHistory import EntityVersionHistory
|
from metadata.generated.schema.type.entityHistory import EntityVersionHistory
|
||||||
from metadata.ingestion.ometa.client import REST
|
from metadata.ingestion.ometa.client import REST
|
||||||
from metadata.ingestion.ometa.utils import uuid_to_str
|
from metadata.ingestion.ometa.utils import model_str
|
||||||
|
|
||||||
T = TypeVar("T", bound=BaseModel) # pylint: disable=invalid-name
|
T = TypeVar("T", bound=BaseModel) # pylint: disable=invalid-name
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -68,7 +68,7 @@ class OMetaVersionMixin(Generic[T]):
|
|||||||
fields: List
|
fields: List
|
||||||
List of fields to return
|
List of fields to return
|
||||||
"""
|
"""
|
||||||
entity_id = uuid_to_str(entity_id)
|
entity_id = model_str(entity_id)
|
||||||
version = self.version_to_str(version)
|
version = self.version_to_str(version)
|
||||||
|
|
||||||
path = f"{entity_id}/versions/{version}"
|
path = f"{entity_id}/versions/{version}"
|
||||||
@ -95,7 +95,7 @@ class OMetaVersionMixin(Generic[T]):
|
|||||||
List
|
List
|
||||||
lists of available versions for a specific entity
|
lists of available versions for a specific entity
|
||||||
"""
|
"""
|
||||||
path = f"{uuid_to_str(entity_id)}/versions"
|
path = f"{model_str(entity_id)}/versions"
|
||||||
|
|
||||||
resp = self.client.get(f"{self.get_suffix(entity)}/{path}")
|
resp = self.client.get(f"{self.get_suffix(entity)}/{path}")
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ from metadata.generated.schema.entity.teams.role import Role
|
|||||||
from metadata.generated.schema.entity.teams.team import Team
|
from metadata.generated.schema.entity.teams.team import Team
|
||||||
from metadata.generated.schema.entity.teams.user import User
|
from metadata.generated.schema.entity.teams.user import User
|
||||||
from metadata.generated.schema.type import basic
|
from metadata.generated.schema.type import basic
|
||||||
|
from metadata.generated.schema.type.basic import FullyQualifiedEntityName
|
||||||
from metadata.generated.schema.type.entityHistory import EntityVersionHistory
|
from metadata.generated.schema.type.entityHistory import EntityVersionHistory
|
||||||
from metadata.generated.schema.type.entityReference import EntityReference
|
from metadata.generated.schema.type.entityReference import EntityReference
|
||||||
from metadata.ingestion.ometa.auth_provider import AuthenticationProvider
|
from metadata.ingestion.ometa.auth_provider import AuthenticationProvider
|
||||||
@ -63,7 +64,7 @@ from metadata.ingestion.ometa.openmetadata_rest import (
|
|||||||
NoOpAuthenticationProvider,
|
NoOpAuthenticationProvider,
|
||||||
OktaAuthenticationProvider,
|
OktaAuthenticationProvider,
|
||||||
)
|
)
|
||||||
from metadata.ingestion.ometa.utils import get_entity_type, uuid_to_str
|
from metadata.ingestion.ometa.utils import get_entity_type, model_str
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -386,13 +387,16 @@ class OpenMetadata(
|
|||||||
return entity_class(**resp)
|
return entity_class(**resp)
|
||||||
|
|
||||||
def get_by_name(
|
def get_by_name(
|
||||||
self, entity: Type[T], fqdn: str, fields: Optional[List[str]] = None
|
self,
|
||||||
|
entity: Type[T],
|
||||||
|
fqdn: Union[str, FullyQualifiedEntityName],
|
||||||
|
fields: Optional[List[str]] = None,
|
||||||
) -> Optional[T]:
|
) -> Optional[T]:
|
||||||
"""
|
"""
|
||||||
Return entity by name or None
|
Return entity by name or None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._get(entity=entity, path=f"name/{fqdn}", fields=fields)
|
return self._get(entity=entity, path=f"name/{model_str(fqdn)}", fields=fields)
|
||||||
|
|
||||||
def get_by_id(
|
def get_by_id(
|
||||||
self,
|
self,
|
||||||
@ -404,7 +408,7 @@ class OpenMetadata(
|
|||||||
Return entity by ID or None
|
Return entity by ID or None
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return self._get(entity=entity, path=uuid_to_str(entity_id), fields=fields)
|
return self._get(entity=entity, path=model_str(entity_id), fields=fields)
|
||||||
|
|
||||||
def _get(
|
def _get(
|
||||||
self, entity: Type[T], path: str, fields: Optional[List[str]] = None
|
self, entity: Type[T], path: str, fields: Optional[List[str]] = None
|
||||||
@ -459,7 +463,7 @@ class OpenMetadata(
|
|||||||
return EntityReference(
|
return EntityReference(
|
||||||
id=instance.id,
|
id=instance.id,
|
||||||
type=get_entity_type(entity),
|
type=get_entity_type(entity),
|
||||||
name=instance.fullyQualifiedName,
|
name=model_str(instance.fullyQualifiedName),
|
||||||
description=instance.description,
|
description=instance.description,
|
||||||
href=instance.href,
|
href=instance.href,
|
||||||
)
|
)
|
||||||
@ -505,7 +509,7 @@ class OpenMetadata(
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
suffix = self.get_suffix(entity)
|
suffix = self.get_suffix(entity)
|
||||||
path = f"/{uuid_to_str(entity_id)}/versions"
|
path = f"/{model_str(entity_id)}/versions"
|
||||||
resp = self.client.get(f"{suffix}{path}")
|
resp = self.client.get(f"{suffix}{path}")
|
||||||
|
|
||||||
if self._use_raw_data:
|
if self._use_raw_data:
|
||||||
@ -538,7 +542,7 @@ class OpenMetadata(
|
|||||||
Returns
|
Returns
|
||||||
None
|
None
|
||||||
"""
|
"""
|
||||||
url = f"{self.get_suffix(entity)}/{uuid_to_str(entity_id)}"
|
url = f"{self.get_suffix(entity)}/{model_str(entity_id)}"
|
||||||
url += f"?recursive=true" if recursive else ""
|
url += f"?recursive=true" if recursive else ""
|
||||||
self.client.delete(url)
|
self.client.delete(url)
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ Helper functions to handle OpenMetadata Entities' properties
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
|
from functools import singledispatch
|
||||||
from typing import Type, TypeVar, Union
|
from typing import Type, TypeVar, Union
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
@ -54,15 +55,19 @@ def get_entity_type(
|
|||||||
return class_name
|
return class_name
|
||||||
|
|
||||||
|
|
||||||
def uuid_to_str(entity_id: Union[str, basic.Uuid]) -> str:
|
@singledispatch
|
||||||
|
def model_str(arg) -> str:
|
||||||
"""
|
"""
|
||||||
Given an entity_id, that can be a str or our pydantic
|
Default model stringifying method
|
||||||
definition of Uuid, return a proper str to build
|
|
||||||
the endpoint path
|
|
||||||
:param entity_id: Entity ID to onvert to string
|
|
||||||
:return: str for the ID
|
|
||||||
"""
|
"""
|
||||||
if isinstance(entity_id, basic.Uuid):
|
return str(arg)
|
||||||
return str(entity_id.__root__)
|
|
||||||
|
|
||||||
return entity_id
|
|
||||||
|
@model_str.register(basic.Uuid)
|
||||||
|
@model_str.register(basic.FullyQualifiedEntityName)
|
||||||
|
@model_str.register(basic.EntityName)
|
||||||
|
def _(arg) -> str:
|
||||||
|
"""
|
||||||
|
Models with __root__
|
||||||
|
"""
|
||||||
|
return str(arg.__root__)
|
||||||
|
@ -16,7 +16,7 @@ from unittest import TestCase
|
|||||||
|
|
||||||
from metadata.generated.schema.entity.data.mlmodel import MlModel
|
from metadata.generated.schema.entity.data.mlmodel import MlModel
|
||||||
from metadata.generated.schema.type import basic
|
from metadata.generated.schema.type import basic
|
||||||
from metadata.ingestion.ometa.utils import format_name, get_entity_type, uuid_to_str
|
from metadata.ingestion.ometa.utils import format_name, get_entity_type, model_str
|
||||||
|
|
||||||
|
|
||||||
class OMetaUtilsTest(TestCase):
|
class OMetaUtilsTest(TestCase):
|
||||||
@ -37,13 +37,20 @@ class OMetaUtilsTest(TestCase):
|
|||||||
self.assertEqual(get_entity_type("hello"), "hello")
|
self.assertEqual(get_entity_type("hello"), "hello")
|
||||||
self.assertEqual(get_entity_type(MlModel), "mlmodel")
|
self.assertEqual(get_entity_type(MlModel), "mlmodel")
|
||||||
|
|
||||||
def test_uuid_to_str(self):
|
def test_model_str(self):
|
||||||
"""
|
"""
|
||||||
Return Uuid as str
|
Return Uuid as str
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.assertEqual(uuid_to_str("random"), "random")
|
self.assertEqual(model_str("random"), "random")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
uuid_to_str(basic.Uuid(__root__="9fc58e81-7412-4023-a298-59f2494aab9d")),
|
model_str(basic.Uuid(__root__="9fc58e81-7412-4023-a298-59f2494aab9d")),
|
||||||
"9fc58e81-7412-4023-a298-59f2494aab9d",
|
"9fc58e81-7412-4023-a298-59f2494aab9d",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
model_str(basic.EntityName(__root__="EntityName")), "EntityName"
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
model_str(basic.FullyQualifiedEntityName(__root__="FQDN")), "FQDN"
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user