Search in sources :

Example 16 with ImageCatalog

use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog in project cloudbreak by hortonworks.

the class FreeIpaImageProvider method getImages.

public List<ImageWrapper> getImages(ImageSettingsRequest imageSettings, String region, String platform) {
    String imageId = imageSettings.getId();
    String catalogUrl = StringUtils.isNotBlank(imageSettings.getCatalog()) ? imageSettings.getCatalog() : defaultCatalogUrl;
    String imageOs = StringUtils.isNotBlank(imageSettings.getOs()) ? imageSettings.getOs() : defaultOs;
    ImageCatalog cachedImageCatalog = imageCatalogProvider.getImageCatalog(catalogUrl);
    List<Image> compatibleImages = findImage(imageId, imageOs, cachedImageCatalog.getImages().getFreeipaImages(), region, platform);
    List<String> imagesInVersions = filterFreeIpaVersionsByAppVersion(cachedImageCatalog.getVersions().getFreeIpaVersions()).stream().map(FreeIpaVersions::getImageIds).flatMap(Collection::stream).distinct().collect(Collectors.toList());
    LOGGER.debug("Compatible images: {} " + System.lineSeparator() + "Images in versions: {}", compatibleImages, imagesInVersions);
    return compatibleImages.stream().filter(image -> imagesInVersions.contains(image.getUuid())).map(image -> new ImageWrapper(image, catalogUrl, null)).collect(Collectors.toList());
}
Also used : ImageSettingsRequest(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.common.image.ImageSettingsRequest) Logger(org.slf4j.Logger) Predicate(java.util.function.Predicate) Collection(java.util.Collection) FreeIpaVersions(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.FreeIpaVersions) LoggerFactory(org.slf4j.LoggerFactory) Set(java.util.Set) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) StringUtils(org.apache.commons.lang3.StringUtils) CollectionUtils(org.apache.commons.collections4.CollectionUtils) ImageCatalog(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog) Inject(javax.inject.Inject) Value(org.springframework.beans.factory.annotation.Value) List(java.util.List) Matcher(java.util.regex.Matcher) Service(org.springframework.stereotype.Service) Map(java.util.Map) Optional(java.util.Optional) Pattern(java.util.regex.Pattern) ImageWrapper(com.sequenceiq.freeipa.dto.ImageWrapper) Comparator(java.util.Comparator) Image(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Image) Collections(java.util.Collections) ImageWrapper(com.sequenceiq.freeipa.dto.ImageWrapper) Collection(java.util.Collection) Image(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Image) ImageCatalog(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog)

Example 17 with ImageCatalog

use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog in project cloudbreak by hortonworks.

the class ImageCatalogChangeService method getImageSettingsRequestForNewCatalogWithCurrentImageSettings.

private ImageSettingsRequest getImageSettingsRequestForNewCatalogWithCurrentImageSettings(String imageCatalog, ImageEntity image) {
    final ImageSettingsRequest imageRequest = new ImageSettingsRequest();
    imageRequest.setCatalog(imageCatalog);
    imageRequest.setId(image.getImageId());
    imageRequest.setOs(image.getOs());
    return imageRequest;
}
Also used : ImageSettingsRequest(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.common.image.ImageSettingsRequest)

Example 18 with ImageCatalog

use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog in project cloudbreak by hortonworks.

the class ImageCatalogGeneratorService method generate.

public GenerateImageCatalogResponse generate(String environmentCrn, String accountId) {
    final Stack stack = stackService.getByEnvironmentCrnAndAccountId(environmentCrn, accountId);
    MDCBuilder.buildMdcContext(stack);
    LOGGER.info("Generating image catalog for environment {} stack {}", environmentCrn, stack.getId());
    final ImageCatalog imageCatalog = imageService.generateImageCatalogForStack(stack);
    final GenerateImageCatalogResponse response = new GenerateImageCatalogResponse();
    response.setImageCatalog(imageCatalog);
    return response;
}
Also used : GenerateImageCatalogResponse(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.imagecatalog.GenerateImageCatalogResponse) ImageCatalog(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog) Stack(com.sequenceiq.freeipa.entity.Stack)

Example 19 with ImageCatalog

use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog in project cloudbreak by hortonworks.

the class ImageCatalogProvider method getVersions.

private Versions getVersions(ImageCatalog catalog) {
    if (catalog.getVersions() == null || catalog.getVersions().getFreeIpaVersions() == null) {
        LOGGER.debug("FreeIPA versions are missing from the image catalog, generating it based on the current svc version and on advertised flags.");
        List<String> advertisedImageUuids = catalog.getImages().getFreeipaImages().stream().filter(Image::isAdvertised).map(Image::getUuid).collect(Collectors.toList());
        List<FreeIpaVersions> versionList = List.of(new FreeIpaVersions(List.of(freeIpaVersion), List.of(), advertisedImageUuids));
        Versions versions = new Versions(versionList);
        LOGGER.debug("Generated versions: '{}'", versions);
        return versions;
    } else {
        return catalog.getVersions();
    }
}
Also used : FreeIpaVersions(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.FreeIpaVersions) FreeIpaVersions(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.FreeIpaVersions) Versions(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Versions) Image(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Image)

Example 20 with ImageCatalog

use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog in project cloudbreak by hortonworks.

the class ImageCatalogProvider method filterImagesByOsType.

private ImageCatalog filterImagesByOsType(ImageCatalog catalog) {
    LOGGER.debug("Filtering images by OS type {}", getEnabledLinuxTypes());
    if ((CollectionUtils.isEmpty(getEnabledLinuxTypes()) || Objects.isNull(catalog.getImages())) && Objects.nonNull(catalog.getVersions())) {
        return catalog;
    }
    List<Image> catalogImages = catalog.getImages().getFreeipaImages();
    List<Image> filterImages = filterImages(catalogImages, enabledOsPredicate());
    List<FreeIpaVersions> filteredVersions = filterVersions(catalog, filterImages);
    return new ImageCatalog(new Images(filterImages), new Versions(filteredVersions));
}
Also used : FreeIpaVersions(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.FreeIpaVersions) FreeIpaVersions(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.FreeIpaVersions) Versions(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Versions) Images(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Images) Image(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Image) ImageCatalog(com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog)

Aggregations

ImageCatalog (com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.ImageCatalog)16 Image (com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Image)7 FreeIpaVersions (com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.FreeIpaVersions)5 Test (org.junit.Test)5 ImageSettingsRequest (com.sequenceiq.freeipa.api.v1.freeipa.stack.model.common.image.ImageSettingsRequest)4 Stack (com.sequenceiq.freeipa.entity.Stack)4 ImageWrapper (com.sequenceiq.freeipa.dto.ImageWrapper)3 Images (com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Images)2 Versions (com.sequenceiq.freeipa.api.v1.freeipa.stack.model.image.Versions)2 GenerateImageCatalogResponse (com.sequenceiq.freeipa.api.v1.freeipa.stack.model.imagecatalog.GenerateImageCatalogResponse)2 Test (org.junit.jupiter.api.Test)2 JsonMappingException (com.fasterxml.jackson.databind.JsonMappingException)1 CloudbreakServiceException (com.sequenceiq.cloudbreak.common.exception.CloudbreakServiceException)1 ImageSettingsBase (com.sequenceiq.freeipa.api.v1.freeipa.stack.model.common.image.ImageSettingsBase)1 ImageEntity (com.sequenceiq.freeipa.entity.ImageEntity)1 IOException (java.io.IOException)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 Comparator (java.util.Comparator)1 List (java.util.List)1