bug(seedData): adds a key to the root user seed data and fixes corner case check for missing key aspects (#4162)

Co-authored-by: Ryan Holstien <ryan@acryl.io>
This commit is contained in:
RyanHolstien 2022-02-16 16:23:20 -06:00 committed by GitHub
parent d17f2bf014
commit f37bdad78e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 3 deletions

View File

@ -223,7 +223,7 @@ public class EbeanEntityService extends EntityService {
List<EnvelopedAspect> aspects = urnToAspects.getOrDefault(urn.toString(), Collections.emptyList());
EnvelopedAspect keyAspect = getKeyEnvelopedAspect(urn);
// Add key aspect if it does not exist in the returned aspects
if (aspects.isEmpty() || !aspectNames.contains(keyAspect.getName())) {
if (aspects.isEmpty() || aspects.stream().noneMatch(aspect -> keyAspect.getName().equals(aspect.getName()))) {
result.put(urn, ImmutableList.<EnvelopedAspect>builder().addAll(aspects).add(keyAspect).build());
} else {
result.put(urn, aspects);

View File

@ -4,12 +4,16 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.linkedin.common.AuditStamp;
import com.linkedin.common.urn.Urn;
import com.linkedin.data.schema.RecordDataSchema;
import com.linkedin.identity.CorpUserInfo;
import com.linkedin.metadata.Constants;
import com.linkedin.metadata.boot.BootstrapStep;
import com.datahub.util.RecordUtils;
import com.linkedin.metadata.entity.EntityService;
import com.linkedin.metadata.key.CorpUserKey;
import com.linkedin.metadata.models.AspectSpec;
import com.linkedin.metadata.models.EntitySpec;
import com.linkedin.metadata.utils.EntityKeyUtils;
import java.io.IOException;
import java.net.URISyntaxException;
@ -17,6 +21,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource;
import static com.linkedin.metadata.Constants.*;
@Slf4j
@RequiredArgsConstructor
@ -55,8 +61,16 @@ public class IngestRootUserStep implements BootstrapStep {
final CorpUserInfo info =
RecordUtils.toRecordTemplate(CorpUserInfo.class, userObj.get("info").toString());
final CorpUserKey key = (CorpUserKey) EntityKeyUtils.convertUrnToEntityKey(urn, getUserKeySchema());
final AuditStamp aspectAuditStamp =
new AuditStamp().setActor(Urn.createFromString(Constants.SYSTEM_ACTOR)).setTime(System.currentTimeMillis());
new AuditStamp().setActor(Urn.createFromString(SYSTEM_ACTOR)).setTime(System.currentTimeMillis());
_entityService.ingestAspect(urn, CORP_USER_KEY_ASPECT_NAME, key, aspectAuditStamp, null);
_entityService.ingestAspect(urn, USER_INFO_ASPECT_NAME, info, aspectAuditStamp, null);
}
private RecordDataSchema getUserKeySchema() {
final EntitySpec spec = _entityService.getEntityRegistry().getEntitySpec(CORP_USER_ENTITY_NAME);
final AspectSpec keySpec = spec.getKeyAspectSpec();
return keySpec.getPegasusSchema();
}
}