use of com.epam.pipeline.elasticsearchagent.model.PipelineDoc in project cloud-pipeline by epam.
the class PipelineLoader method fetchEntity.
@Override
protected PipelineDoc fetchEntity(final Long id) {
Pipeline pipeline = getApiClient().loadPipeline(String.valueOf(id));
List<Revision> revisions = getApiClient().loadPipelineVersions(pipeline.getId()).stream().filter(revision -> !revision.getName().startsWith(DRAFT_VERSION)).collect(Collectors.toList());
PipelineDoc.PipelineDocBuilder pipelineDocBuilder = PipelineDoc.builder().pipeline(pipeline).revisions(revisions);
return pipelineDocBuilder.build();
}
use of com.epam.pipeline.elasticsearchagent.model.PipelineDoc in project cloud-pipeline by epam.
the class PipelineMapper method map.
@Override
public XContentBuilder map(final EntityContainer<PipelineDoc> container) {
PipelineDoc pipelineDoc = container.getEntity();
try (XContentBuilder jsonBuilder = XContentFactory.jsonBuilder()) {
List<String> revisions = pipelineDoc.getRevisions().stream().map(Revision::getName).collect(Collectors.toList());
jsonBuilder.startObject().field("id", pipelineDoc.getPipeline().getId()).field(DOC_TYPE_FIELD, SearchDocumentType.PIPELINE.name()).field("name", pipelineDoc.getPipeline().getName()).field("description", pipelineDoc.getPipeline().getDescription()).field("createdDate", parseDataToString(pipelineDoc.getPipeline().getCreatedDate())).field("parentId", pipelineDoc.getPipeline().getParentFolderId()).field("repository", pipelineDoc.getPipeline().getRepository()).field("versions", revisions).field("templateId", pipelineDoc.getPipeline().getTemplateId());
buildUserContent(container.getOwner(), jsonBuilder);
buildMetadata(container.getMetadata(), jsonBuilder);
buildPermissions(container.getPermissions(), jsonBuilder);
jsonBuilder.endObject();
return jsonBuilder;
} catch (IOException e) {
throw new IllegalArgumentException("Failed to create elasticsearch document for pipeline: ", e);
}
}
use of com.epam.pipeline.elasticsearchagent.model.PipelineDoc in project cloud-pipeline by epam.
the class PipelineCodeHandlerTest method setup.
@BeforeEach
void setup() {
pipelineCodeHandler = new PipelineCodeHandler(INDEX_PREFIX, INDEX_NAME, apiClient, new ElasticIndexService(), FILE_INDEX_PATHS, objectMapper, pipelineLoader, new PipelineCodeMapper(), "master");
expectedPipelineEvent = new PipelineEvent();
expectedPipelineEvent.setEventType(EventType.INSERT);
expectedPipelineEvent.setObjectType(PipelineEvent.ObjectType.PIPELINE);
expectedPipelineEvent.setObjectId(1L);
expectedPipelineEvent.setCreatedDate(LocalDateTime.now());
expectedPipelineEvent.setData("{\"tag\": {\"type\": \"string\", \"value\": \"admin\"}}");
pipeline = new Pipeline();
pipeline.setId(1L);
pipeline.setName(TEST_NAME);
pipeline.setCreatedDate(DateUtils.now());
pipeline.setParentFolderId(2L);
pipeline.setDescription(TEST_DESCRIPTION);
pipeline.setRepository(TEST_REPO);
pipeline.setTemplateId(TEST_TEMPLATE);
Revision revision = new Revision();
revision.setName(TEST_VERSION);
PipelineDoc pipelineDoc = PipelineDoc.builder().pipeline(pipeline).revisions(Collections.singletonList(revision)).build();
gitPushEventData = new GitEventData();
gitPushEventData.setGitEventType(GitEventType.push);
gitPushEventData.setPaths(Collections.singletonList(FILE_INDEX_PATHS));
gitPushEventData.setVersion(VERSION);
gitTagEventData = new GitEventData();
gitTagEventData.setGitEventType(GitEventType.tag_push);
gitTagEventData.setPaths(Collections.singletonList(FILE_INDEX_PATHS));
gitTagEventData.setVersion(VERSION);
gitRepositoryEntry = new GitRepositoryEntry();
gitRepositoryEntry.setId("1");
gitRepositoryEntry.setName(TEST_NAME);
gitRepositoryEntry.setPath(FOLDER_INDEX_PATHS);
gitRepositoryEntry.setType("blob");
container = EntityContainer.<PipelineDoc>builder().entity(pipelineDoc).owner(USER).metadata(METADATA).permissions(PERMISSIONS_CONTAINER).build();
}
use of com.epam.pipeline.elasticsearchagent.model.PipelineDoc in project cloud-pipeline by epam.
the class PipelineSynchronizer method createIndexDocuments.
private void createIndexDocuments(final PipelineEvent event, final String pipelineIndex, final String codeIndex, final PipelineDocRequests.PipelineDocRequestsBuilder requestsBuilder, final EntityContainer<PipelineDoc> pipelineEntity) {
requestsBuilder.pipelineRequests(Collections.singletonList(new IndexRequest(pipelineIndex, INDEX_TYPE, String.valueOf(event.getObjectId())).source(mapper.map(pipelineEntity))));
final Pipeline pipeline = pipelineEntity.getEntity().getPipeline();
final List<Revision> revisions = cloudPipelineAPIClient.loadPipelineVersions(pipeline.getId());
log.debug("Loaded revisions for pipeline: {}", ListUtils.emptyIfNull(revisions).stream().map(Revision::getName).collect(Collectors.joining(", ")));
requestsBuilder.codeRequests(revisions.stream().map(revision -> pipelineCodeHandler.createPipelineCodeDocuments(pipeline, pipelineEntity.getPermissions(), revision.getName(), codeIndex, pipelineFileIndexPaths)).flatMap(Collection::stream).collect(Collectors.toList()));
log.debug("Created index and documents for {} pipeline.", pipeline.getName());
}
use of com.epam.pipeline.elasticsearchagent.model.PipelineDoc in project cloud-pipeline by epam.
the class PipelineLoaderTest method shouldLoadPipeline.
@Test
void shouldLoadPipeline() throws EntityNotFoundException {
Pipeline expectedPipeline = new Pipeline(1L);
expectedPipeline.setName(TEST_NAME);
expectedPipeline.setCreatedDate(DateUtils.now());
expectedPipeline.setParentFolderId(2L);
expectedPipeline.setDescription(TEST_DESCRIPTION);
expectedPipeline.setRepository(TEST_REPO);
expectedPipeline.setTemplateId(TEST_TEMPLATE);
expectedPipeline.setOwner(TEST_NAME);
Revision expectedRevision = new Revision();
expectedRevision.setName(TEST_NAME);
PipelineLoader pipelineLoader = new PipelineLoader(apiClient);
when(apiClient.loadPipeline(anyString())).thenReturn(expectedPipeline);
when(apiClient.loadPipelineVersions(anyLong())).thenReturn(Collections.singletonList(expectedRevision));
Optional<EntityContainer<PipelineDoc>> container = pipelineLoader.loadEntity(1L);
EntityContainer<PipelineDoc> pipelineDocEntityContainer = container.orElseThrow(AssertionError::new);
PipelineDoc actualPipelineDoc = pipelineDocEntityContainer.getEntity();
assertNotNull(actualPipelineDoc);
Pipeline actualPipeline = actualPipelineDoc.getPipeline();
assertNotNull(actualPipeline);
List<Revision> revisions = actualPipelineDoc.getRevisions();
assertNotNull(revisions);
assertEquals(expectedPipeline.getId(), actualPipeline.getId());
assertEquals(expectedPipeline.getName(), actualPipeline.getName());
assertEquals(expectedPipeline.getCreatedDate(), actualPipeline.getCreatedDate());
assertEquals(expectedPipeline.getParentFolderId(), actualPipeline.getParentFolderId());
assertEquals(expectedPipeline.getDescription(), actualPipeline.getDescription());
assertEquals(expectedPipeline.getRepository(), actualPipeline.getRepository());
assertEquals(expectedPipeline.getTemplateId(), actualPipeline.getTemplateId());
verifyPipelineUser(pipelineDocEntityContainer.getOwner());
verifyPermissions(PERMISSIONS_CONTAINER_WITH_OWNER, pipelineDocEntityContainer.getPermissions());
verifyMetadata(EXPECTED_METADATA, new ArrayList<>(pipelineDocEntityContainer.getMetadata().values()));
}
Aggregations