mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-09-21 23:13:05 +00:00
ISSUE-2272: Ingestion: Roles and Teams apis called only when ingesting users (#2284)
* ISSUE-2272: Ingestion: Roles and Teams apis called only when ingesting users * reformatted metadata_rest.py Co-authored-by: Mayur SIngal <mayursingal@Mayurs-MacBook-Pro.local>
This commit is contained in:
parent
f7ef8dc0b2
commit
d6522e2ab4
@ -100,7 +100,6 @@ class MetadataRestSink(Sink[Entity]):
|
|||||||
self.api_client = self.metadata.client
|
self.api_client = self.metadata.client
|
||||||
self.role_entities = {}
|
self.role_entities = {}
|
||||||
self.team_entities = {}
|
self.team_entities = {}
|
||||||
self._bootstrap_entities()
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(
|
def create(
|
||||||
@ -385,14 +384,6 @@ class MetadataRestSink(Sink[Entity]):
|
|||||||
logger.error(err)
|
logger.error(err)
|
||||||
self.status.failure(f"Model: {model.name}")
|
self.status.failure(f"Model: {model.name}")
|
||||||
|
|
||||||
def _bootstrap_entities(self):
|
|
||||||
team_response = self.api_client.get("/teams")
|
|
||||||
for team in team_response["data"]:
|
|
||||||
self.team_entities[team["name"]] = team["id"]
|
|
||||||
role_response = self.api_client.get("/roles")
|
|
||||||
for role in role_response["data"]:
|
|
||||||
self.role_entities[role["name"]] = role["id"]
|
|
||||||
|
|
||||||
def _create_role(self, role: EntityReference) -> None:
|
def _create_role(self, role: EntityReference) -> None:
|
||||||
metadata_role = CreateRoleEntityRequest(
|
metadata_role = CreateRoleEntityRequest(
|
||||||
name=role.name, displayName=role.name, description=role.description
|
name=role.name, displayName=role.name, description=role.description
|
||||||
@ -422,12 +413,16 @@ class MetadataRestSink(Sink[Entity]):
|
|||||||
def write_users(self, record: User):
|
def write_users(self, record: User):
|
||||||
roles = []
|
roles = []
|
||||||
for role in record.roles.__root__:
|
for role in record.roles.__root__:
|
||||||
if role.name not in self.role_entities:
|
try:
|
||||||
|
role_response = self.api_client.get(f"/roles/{role.id.__root__}")
|
||||||
|
except APIError:
|
||||||
self._create_role(role)
|
self._create_role(role)
|
||||||
roles.append(self.role_entities[role.name])
|
roles.append(self.role_entities[role.name])
|
||||||
teams = []
|
teams = []
|
||||||
for team in record.teams.__root__:
|
for team in record.teams.__root__:
|
||||||
if team.name not in self.team_entities:
|
try:
|
||||||
|
team_response = self.api_client.get(f"/teams/{team.id.__root__}")
|
||||||
|
except APIError:
|
||||||
self._create_team(team)
|
self._create_team(team)
|
||||||
teams.append(self.team_entities[team.name])
|
teams.append(self.team_entities[team.name])
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user