use of org.jboss.pnc.dto.ProductVersion in project bacon by project-ncl.
the class PigFacade method getBrewTag.
private static String getBrewTag(ProductVersionRef versionRef) {
try (ProductVersionClient productVersionClient = new ProductVersionClient(PncClientHelper.getPncConfiguration())) {
String versionId = versionRef.getId();
ProductVersion version;
try {
version = productVersionClient.getSpecific(versionId);
} catch (RemoteResourceException e) {
throw new RuntimeException("Unable to get product version for " + versionId, e);
}
return version.getAttributes().get("BREW_TAG_PREFIX");
}
}
use of org.jboss.pnc.dto.ProductVersion in project bacon by project-ncl.
the class PigTest method shouldCreateProduct.
@Test
@Order(1)
void shouldCreateProduct() throws IOException {
final Path configFile = CONFIG_LOCATION;
replaceSuffixInConfigFile(configFile.resolve("build-config.yaml"));
final Product product = Product.builder().id(UNIVERSAL_ID).name(PRODUCT_NAME).abbreviation(PRODUCT_ABBREVIATION).build();
final ProductVersion productVersion = ProductVersion.builder().id(UNIVERSAL_ID).version(VERSION).product(product).build();
final ProductMilestone productMilestone = ProductMilestone.builder().id(UNIVERSAL_ID).productVersion(productVersion).version(MILESTONE).build();
final ProductVersion productVersionWithCurrentMilestone = productVersion.toBuilder().currentProductMilestone(productMilestone).build();
final GroupConfiguration groupConfig = GroupConfiguration.builder().id(UNIVERSAL_ID).name(GROUP_NAME).productVersion(productVersionWithCurrentMilestone).build();
final Project project = Project.builder().id(UNIVERSAL_ID).name(PROJECT_NAME).build();
final SCMRepository scmRepository = SCMRepository.builder().id(UNIVERSAL_ID).internalUrl(SCM_URL).preBuildSyncEnabled(true).build();
final Environment environment = Environment.builder().id(UNIVERSAL_ID).deprecated(false).build();
final BuildConfiguration buildConfig = BuildConfiguration.builder().id(UNIVERSAL_ID).name(BC_NAME).buildScript(BUILD_SCRIPT).scmRevision(SCM_REVISION).creationTime(Instant.now()).modificationTime(Instant.now()).scmRepository(scmRepository).environment(environment).project(project).productVersion(productVersionWithCurrentMilestone).build();
final GroupConfiguration groupConfigWithBuildConfig = groupConfig.toBuilder().buildConfigs(Collections.singletonMap(UNIVERSAL_ID, buildConfig)).build();
wmock.list(PRODUCT, new Page<Product>());
wmock.creation(PRODUCT, product);
wmock.list(PRODUCT_VERSIONS.apply(UNIVERSAL_ID), new Page<ProductVersion>());
wmock.creation(PRODUCT_VERSION, productVersion);
wmock.list(PRODUCT_VERSION_MILESTONES.apply(UNIVERSAL_ID), new Page<ProductMilestone>());
wmock.creation(PRODUCT_MILESTONE, productMilestone);
wmock.update(PRODUCT_VERSION, productVersion, productVersionWithCurrentMilestone);
wmock.list(GROUP_CONFIG, new Page<GroupConfiguration>());
wmock.creation(GROUP_CONFIG, groupConfig);
wmock.list(GROUP_CONFIG_BUILD_CONFIGS.apply(UNIVERSAL_ID), new Page<BuildConfiguration>());
wmock.list(BUILD_CONFIG, new Page<BuildConfiguration>());
wmock.list(PROJECT, new Page<Project>());
wmock.creation(PROJECT, project);
wmock.list(SCM_REPOSITORY, new Page<SCMRepository>());
wmock.creation(SCM_REPOSITORY_CREATE, RepositoryCreationResponse.builder().repository(scmRepository).build());
wmock.get(ENVIRONMENT, environment);
wmock.creation(BUILD_CONFIG, buildConfig);
wmock.list(BUILD_CONFIG_DEPENDENCIES.apply(UNIVERSAL_ID), new Page<BuildConfiguration>());
wmock.get(BUILD_CONFIG, buildConfig);
wmock.creation(BUILD_CONFIG, buildConfig);
wmock.scenario("add BC to GC").getEntity(GROUP_CONFIG, groupConfig).when().post(GROUP_CONFIG_BUILD_CONFIGS.apply(UNIVERSAL_ID)).then().getEntity(GROUP_CONFIG, groupConfigWithBuildConfig);
ExecutionResult output = executeAndGetResult("pig", "configure", configFile.toString());
assertThat(output.getOutput()).contains("name: \"Product Foobar " + SUFFIX + "\"");
}
use of org.jboss.pnc.dto.ProductVersion in project bacon by project-ncl.
the class ProductMilestoneCli method validateProductMilestoneVersion.
/**
* Product Milestone version format is: <d>.<d>.<d>.<word> The first 2 digits must match the digit for the product
* version
*
* @param productVersionId
* @param milestoneVersion
* @return
*/
public static boolean validateProductMilestoneVersion(String productVersionId, String milestoneVersion) throws ClientException {
try (ProductVersionClient client = VERSION_CREATOR.newClient()) {
ProductVersion productVersionDTO = client.getSpecific(productVersionId);
String productVersion = productVersionDTO.getVersion();
if (!milestoneVersion.startsWith(productVersion)) {
return false;
}
String[] items = milestoneVersion.split("\\.");
if (items.length != 4) {
return false;
}
return items[2].matches("\\d+");
}
}
use of org.jboss.pnc.dto.ProductVersion 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());
}
use of org.jboss.pnc.dto.ProductVersion in project pnc by project-ncl.
the class ProductVersionEndpointTest method shouldGenerateBrewTagWhenCreatingProductVersion.
@Test
public void shouldGenerateBrewTagWhenCreatingProductVersion() throws Exception {
// given
final String version = "42.3";
ProductVersion productVersion = ProductVersion.builder().product(product).version(version).build();
// when
ProductVersionClient client = new ProductVersionClient(RestClientConfiguration.asUser());
ProductVersion created = client.createNew(productVersion);
// then
assertThat(created.getAttributes()).containsKey(Attributes.BREW_TAG_PREFIX);
assertThat(created.getAttributes().get(Attributes.BREW_TAG_PREFIX)).isEqualTo(product.getAbbreviation().toLowerCase() + "-" + version + "-pnc");
}
Aggregations