Search in sources :

Example 1 with ProductMilestoneCloseResult

use of org.jboss.pnc.dto.ProductMilestoneCloseResult in project pnc by project-ncl.

the class AdvancedProductMilestoneClient method fallbackSupplier.

/**
 * Used to retrieve latest close result through REST when WS Client loses connection and reconnects
 *
 * @param milestoneId Id of the ProductMilestone which was closed
 * @return
 * @throws RemoteResourceException
 */
private ProductMilestoneCloseResult fallbackSupplier(String milestoneId) throws RemoteResourceException {
    ProductMilestoneCloseParameters parameters = new ProductMilestoneCloseParameters();
    parameters.setLatest(true);
    ProductMilestoneCloseResult result = null;
    try (ProductMilestoneClient client = new ProductMilestoneClient(configuration)) {
        result = client.getCloseResults(milestoneId, parameters).iterator().next();
    }
    return result;
}
Also used : ProductMilestoneClient(org.jboss.pnc.client.ProductMilestoneClient) ProductMilestoneCloseResult(org.jboss.pnc.dto.ProductMilestoneCloseResult) ProductMilestoneCloseParameters(org.jboss.pnc.rest.api.parameters.ProductMilestoneCloseParameters)

Example 2 with ProductMilestoneCloseResult

use of org.jboss.pnc.dto.ProductMilestoneCloseResult in project pnc by project-ncl.

the class ProductMilestoneEndpointTest method shouldGetMilestoneRelease.

@Test
public void shouldGetMilestoneRelease() throws IOException, RemoteResourceException {
    // given
    ProductClient productClient = new ProductClient(RestClientConfiguration.asAnonymous());
    RemoteCollection<Product> products = productClient.getAll(Optional.empty(), Optional.of("name==\"" + PNC_PRODUCT_NAME + "\""));
    Product product = products.iterator().next();
    Map<String, ProductVersionRef> productVersions = product.getProductVersions();
    Optional<ProductVersionRef> productVersion = productVersions.values().stream().filter(pv -> pv.getVersion().equals(DatabaseDataInitializer.PNC_PRODUCT_VERSION_1)).findAny();
    ProductVersionClient productVersionClient = new ProductVersionClient(RestClientConfiguration.asAnonymous());
    RemoteCollection<ProductMilestone> milestones = productVersionClient.getMilestones(productVersion.get().getId(), Optional.empty(), Optional.of("version==\"" + PNC_PRODUCT_MILESTONE3 + "\""));
    ProductMilestone milestone = milestones.iterator().next();
    ProductMilestoneClient milestoneClient = new ProductMilestoneClient(RestClientConfiguration.asAnonymous());
    // when
    RemoteCollection<ProductMilestoneCloseResult> milestoneReleases = milestoneClient.getCloseResults(milestone.getId(), null);
    // then
    Assert.assertEquals(3, milestoneReleases.size());
    // make sure the result is ordered by date
    Instant previous = Instant.EPOCH;
    for (Iterator<ProductMilestoneCloseResult> iter = milestoneReleases.iterator(); iter.hasNext(); ) {
        ProductMilestoneCloseResult next = iter.next();
        logger.debug("MilestoneRelease id: {}, StartingDate: {}.", next.getId(), next.getStartingDate());
        Assert.assertTrue("Wong milestone releases order.", next.getStartingDate().isAfter(previous));
        previous = next.getStartingDate();
    }
    // when
    ProductMilestoneCloseParameters filter = new ProductMilestoneCloseParameters();
    filter.setLatest(true);
    RemoteCollection<ProductMilestoneCloseResult> latestMilestoneRelease = milestoneClient.getCloseResults(milestone.getId(), filter);
    // then
    Assert.assertEquals(1, latestMilestoneRelease.getAll().size());
    // the latest one in demo data has status SUCCEEDED
    Assert.assertEquals(MilestoneCloseStatus.SUCCEEDED, latestMilestoneRelease.iterator().next().getStatus());
}
Also used : BeforeClass(org.junit.BeforeClass) Arquillian(org.jboss.arquillian.junit.Arquillian) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) RunWith(org.junit.runner.RunWith) LoggerFactory(org.slf4j.LoggerFactory) ProductClient(org.jboss.pnc.client.ProductClient) RunAsClient(org.jboss.arquillian.container.test.api.RunAsClient) RemoteCollection(org.jboss.pnc.client.RemoteCollection) ContainerTest(org.jboss.pnc.test.category.ContainerTest) ClientException(org.jboss.pnc.client.ClientException) ProductMilestoneCloseParameters(org.jboss.pnc.rest.api.parameters.ProductMilestoneCloseParameters) Assertions.assertThatThrownBy(org.assertj.core.api.Assertions.assertThatThrownBy) ProductMilestone(org.jboss.pnc.dto.ProductMilestone) Map(java.util.Map) BadRequestException(javax.ws.rs.BadRequestException) Deployments(org.jboss.pnc.integration.setup.Deployments) PNC_PRODUCT_MILESTONE3(org.jboss.pnc.demo.data.DatabaseDataInitializer.PNC_PRODUCT_MILESTONE3) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) ValidationResponse(org.jboss.pnc.dto.response.ValidationResponse) ValidationErrorType(org.jboss.pnc.enums.ValidationErrorType) DatabaseDataInitializer(org.jboss.pnc.demo.data.DatabaseDataInitializer) EnterpriseArchive(org.jboss.shrinkwrap.api.spec.EnterpriseArchive) Product(org.jboss.pnc.dto.Product) ProductMilestoneClient(org.jboss.pnc.client.ProductMilestoneClient) Test(org.junit.Test) IOException(java.io.IOException) Artifact(org.jboss.pnc.dto.Artifact) VersionValidationRequest(org.jboss.pnc.dto.requests.validation.VersionValidationRequest) Category(org.junit.experimental.categories.Category) Instant(java.time.Instant) RestClientConfiguration(org.jboss.pnc.integration.setup.RestClientConfiguration) ProductVersionClient(org.jboss.pnc.client.ProductVersionClient) Build(org.jboss.pnc.dto.Build) PNC_PRODUCT_NAME(org.jboss.pnc.demo.data.DatabaseDataInitializer.PNC_PRODUCT_NAME) Deployment(org.jboss.arquillian.container.test.api.Deployment) ProductMilestoneCloseResult(org.jboss.pnc.dto.ProductMilestoneCloseResult) ProductVersionRef(org.jboss.pnc.dto.ProductVersionRef) ProductVersion(org.jboss.pnc.dto.ProductVersion) RemoteResourceException(org.jboss.pnc.client.RemoteResourceException) Optional(java.util.Optional) Assert(org.junit.Assert) MilestoneCloseStatus(org.jboss.pnc.enums.MilestoneCloseStatus) ProductMilestone(org.jboss.pnc.dto.ProductMilestone) ProductMilestoneClient(org.jboss.pnc.client.ProductMilestoneClient) Instant(java.time.Instant) Product(org.jboss.pnc.dto.Product) ProductVersionRef(org.jboss.pnc.dto.ProductVersionRef) ProductMilestoneCloseParameters(org.jboss.pnc.rest.api.parameters.ProductMilestoneCloseParameters) ProductVersionClient(org.jboss.pnc.client.ProductVersionClient) ProductClient(org.jboss.pnc.client.ProductClient) ProductMilestoneCloseResult(org.jboss.pnc.dto.ProductMilestoneCloseResult) ContainerTest(org.jboss.pnc.test.category.ContainerTest) Test(org.junit.Test)

Example 3 with ProductMilestoneCloseResult

use of org.jboss.pnc.dto.ProductMilestoneCloseResult in project pnc by project-ncl.

the class ProductMilestoneProviderImpl method closeMilestone.

@Override
public ProductMilestoneCloseResult closeMilestone(String id) {
    try {
        Long milestoneReleaseId = Sequence.nextId();
        MDCUtils.addProcessContext(milestoneReleaseId.toString());
        userLog.info("Processing milestone close request ...");
        ProductMilestoneCloseResult closeResult = doCloseMilestone(id, milestoneReleaseId);
        return closeResult;
    } finally {
        MDCUtils.removeProcessContext();
    }
}
Also used : ProductMilestoneCloseResult(org.jboss.pnc.dto.ProductMilestoneCloseResult)

Example 4 with ProductMilestoneCloseResult

use of org.jboss.pnc.dto.ProductMilestoneCloseResult in project pnc by project-ncl.

the class ProductMilestoneProviderImpl method doCloseMilestone.

private ProductMilestoneCloseResult doCloseMilestone(String id, Long milestoneReleaseId) {
    org.jboss.pnc.model.ProductMilestone milestoneInDb = repository.queryById(Integer.valueOf(id));
    if (milestoneInDb.getEndDate() != null) {
        userLog.info("Milestone is already closed: no more modifications allowed");
        throw new RepositoryViolationException("Milestone is already closed! No more modifications allowed");
    }
    if (milestoneInDb.getPerformedBuilds().size() == 0) {
        throw new InvalidEntityException("No builds were performed in milestone!");
    } else {
        Optional<ProductMilestoneRelease> inProgress = releaseManager.getInProgress(milestoneInDb);
        if (inProgress.isPresent()) {
            userLog.warn("Milestone close is already in progress.");
            return milestoneReleaseMapper.toDTO(inProgress.get());
        } else {
            log.debug("Milestone's 'end date' set; no release of the milestone in progress: will start release");
            boolean useRHPAM = bpmConfig.isNewBpmForced() || userService.hasLoggedInUserRole(WORK_WITH_TECH_PREVIEW);
            log.debug("Using RHPAM server: {}", useRHPAM);
            ProductMilestoneRelease milestoneReleaseDb = releaseManager.startRelease(milestoneInDb, userService.currentUserToken(), useRHPAM, milestoneReleaseId);
            ProductMilestoneCloseResult milestoneCloseResult = milestoneReleaseMapper.toDTO(milestoneReleaseDb);
            return milestoneCloseResult;
        }
    }
}
Also used : RepositoryViolationException(org.jboss.pnc.facade.validation.RepositoryViolationException) ProductMilestoneCloseResult(org.jboss.pnc.dto.ProductMilestoneCloseResult) InvalidEntityException(org.jboss.pnc.facade.validation.InvalidEntityException) ProductMilestoneRelease(org.jboss.pnc.model.ProductMilestoneRelease)

Aggregations

ProductMilestoneCloseResult (org.jboss.pnc.dto.ProductMilestoneCloseResult)4 ProductMilestoneClient (org.jboss.pnc.client.ProductMilestoneClient)2 ProductMilestoneCloseParameters (org.jboss.pnc.rest.api.parameters.ProductMilestoneCloseParameters)2 IOException (java.io.IOException)1 Instant (java.time.Instant)1 Iterator (java.util.Iterator)1 Map (java.util.Map)1 Optional (java.util.Optional)1 BadRequestException (javax.ws.rs.BadRequestException)1 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)1 Assertions.assertThatThrownBy (org.assertj.core.api.Assertions.assertThatThrownBy)1 Deployment (org.jboss.arquillian.container.test.api.Deployment)1 RunAsClient (org.jboss.arquillian.container.test.api.RunAsClient)1 Arquillian (org.jboss.arquillian.junit.Arquillian)1 ClientException (org.jboss.pnc.client.ClientException)1 ProductClient (org.jboss.pnc.client.ProductClient)1 ProductVersionClient (org.jboss.pnc.client.ProductVersionClient)1 RemoteCollection (org.jboss.pnc.client.RemoteCollection)1 RemoteResourceException (org.jboss.pnc.client.RemoteResourceException)1 DatabaseDataInitializer (org.jboss.pnc.demo.data.DatabaseDataInitializer)1