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:
ulixius9 2022-01-20 12:24:35 +05:30 committed by GitHub
parent f7ef8dc0b2
commit d6522e2ab4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -100,7 +100,6 @@ class MetadataRestSink(Sink[Entity]):
self.api_client = self.metadata.client
self.role_entities = {}
self.team_entities = {}
self._bootstrap_entities()
@classmethod
def create(
@ -385,14 +384,6 @@ class MetadataRestSink(Sink[Entity]):
logger.error(err)
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:
metadata_role = CreateRoleEntityRequest(
name=role.name, displayName=role.name, description=role.description
@ -422,12 +413,16 @@ class MetadataRestSink(Sink[Entity]):
def write_users(self, record: User):
roles = []
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)
roles.append(self.role_entities[role.name])
teams = []
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)
teams.append(self.team_entities[team.name])