use of org.jboss.pnc.client.RemoteResourceException in project bacon by project-ncl.
the class PncBuilder method cancelRunningGroupBuild.
public String cancelRunningGroupBuild(String groupConfigurationId) {
try {
Collection<GroupBuild> groupBuilds = groupConfigClient.getAllGroupBuilds(groupConfigurationId, of("=desc=startTime"), query("status==%s", BuildStatus.BUILDING)).getAll();
if (groupBuilds.size() > 1) {
return ("Can't cancel, there are multiple GroupBuilds running for single GroupConfiguration name and we can't decide correct one to cancel from build-config.yaml information. Found:" + groupBuilds);
}
if (groupBuilds.isEmpty()) {
return "No build is running for this group.";
}
GroupBuild running = groupBuilds.iterator().next();
groupBuildClient.cancel(running.getId());
return "Group build " + running.getId() + " canceled.";
} catch (RemoteResourceException e) {
throw new RuntimeException("Failed to get group build info to cancel running build.", e);
}
}
use of org.jboss.pnc.client.RemoteResourceException in project bacon by project-ncl.
the class PigFacade method pushToBrew.
private static void pushToBrew(boolean reimport) {
abortIfBuildDataAbsentFromContext();
Map<String, PncBuild> builds = PigContext.get().getBuilds();
String tagPrefix = getBrewTag(context().getPncImportResult().getVersion());
List<PncBuild> buildsToPush = getBuildsToPush(builds);
if (log.isInfoEnabled()) {
log.info("Pushing the following builds to brew: {}", buildsToPush.stream().map(PncBuild::getId).collect(Collectors.toList()));
}
for (PncBuild build : buildsToPush) {
BuildPushParameters request = BuildPushParameters.builder().tagPrefix(tagPrefix).reimport(reimport).build();
// TODO: customize the timeout
try (AdvancedBuildClient pushingClient = new AdvancedBuildClient(PncClientHelper.getPncConfiguration())) {
BuildPushResult pushResult = pushingClient.executeBrewPush(build.getId(), request, 15L, TimeUnit.MINUTES);
if (pushResult.getStatus() != BuildPushStatus.SUCCESS) {
throw new RuntimeException("Failed to push build " + build.getId() + " to brew. Push result: " + pushResult);
}
log.info("{} pushed to brew ( {} ) ", build.getId(), UrlGenerator.generateBuildUrl(build.getId()));
} catch (RemoteResourceException e) {
throw new RuntimeException("Failed to push build " + build.getId() + " to brew (" + UrlGenerator.generateBuildUrl(build.getId()) + ")", e);
}
}
}
use of org.jboss.pnc.client.RemoteResourceException in project bacon by project-ncl.
the class SourcesGenerator method downloadSourcesFromBuilds.
private void downloadSourcesFromBuilds(Map<String, PncBuild> builds, File workDir, File contentsDir) {
builds.values().forEach(build -> {
URI url = gerritSnapshotDownloadUrl(build.getInternalScmUrl(), build.getScmRevision());
File targetPath = new File(workDir, build.getName() + ".tar.gz");
try (BuildClient client = CREATOR.newClient();
Response response = client.getInternalScmArchiveLink(build.getId())) {
InputStream in = (InputStream) response.getEntity();
Files.copy(in, targetPath.toPath());
} catch (IOException | RemoteResourceException e) {
throw new RuntimeException(e);
}
Collection<String> untaredFiles = FileUtils.untar(targetPath, contentsDir);
List<String> topLevelDirectories = untaredFiles.stream().filter(this::isNotANestedFile).collect(Collectors.toList());
if (topLevelDirectories.size() != 1) {
throw new RuntimeException("Found more than one top-level directory (" + topLevelDirectories.size() + ") untared for build " + build + ", the untared archive: " + targetPath.getAbsolutePath() + ", the top level directories:" + topLevelDirectories);
}
String topLevelDirectoryName = untaredFiles.iterator().next();
File topLevelDirectory = new File(contentsDir, topLevelDirectoryName);
File properTopLevelDirectory = new File(contentsDir, build.getName());
topLevelDirectory.renameTo(properTopLevelDirectory);
});
}
use of org.jboss.pnc.client.RemoteResourceException 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());
}
Aggregations