use of io.quarkiverse.operatorsdk.bundle.runtime.CSVMetadataHolder in project quarkus-operator-sdk by quarkiverse.
the class BundleGenerator method prepareGeneration.
public static List<ManifestsBuilder> prepareGeneration(BundleGenerationConfiguration bundleConfiguration, BuildTimeOperatorConfiguration operatorConfiguration, Map<CSVMetadataHolder, List<AugmentedResourceInfo>> csvGroups, List<CRDInfo> crds) {
List<ManifestsBuilder> builders = new ArrayList<>();
for (Map.Entry<CSVMetadataHolder, List<AugmentedResourceInfo>> entry : csvGroups.entrySet()) {
final var labels = generateBundleLabels(entry.getKey(), bundleConfiguration, operatorConfiguration);
builders.add(new CsvManifestsBuilder(entry.getKey(), entry.getValue()));
builders.add(new AnnotationsManifestsBuilder(entry.getKey(), labels));
builders.add(new BundleDockerfileManifestsBuilder(entry.getKey(), labels));
entry.getValue().stream().map(controller -> findOwnedCustomResource(controller, crds)).filter(Objects::nonNull).map(crd -> new CustomResourceManifestsBuilder(entry.getKey(), crd)).forEach(builders::add);
}
return builders;
}
use of io.quarkiverse.operatorsdk.bundle.runtime.CSVMetadataHolder in project quarkus-operator-sdk by quarkiverse.
the class BundleProcessor method gatherCSVMetadata.
@SuppressWarnings("unchecked")
@BuildStep
CSVMetadataBuildItem gatherCSVMetadata(ApplicationInfoBuildItem configuration, BundleGenerationConfiguration bundleConfiguration, CombinedIndexBuildItem combinedIndexBuildItem, ConfigurationServiceBuildItem configurations) {
final var controllerConfigs = configurations.getControllerConfigs();
final var index = combinedIndexBuildItem.getIndex();
final var operatorCsvMetadata = getCSVMetadataForOperator(bundleConfiguration.packageName.orElse(configuration.getName()), index);
final var csvGroups = new HashMap<CSVMetadataHolder, List<AugmentedResourceInfo>>();
ClassUtils.getKnownReconcilers(index, log).forEach(reconcilerInfo -> {
// figure out which group should be used to generate CSV
final var name = reconcilerInfo.name();
log.debugv("Processing reconciler: {0}", name);
final var config = controllerConfigs.get(name);
if (config == null) {
throw new IllegalStateException("Missing configuration for reconciler " + name);
}
// Check whether the reconciler must be shipped using a custom bundle
CSVMetadataHolder csvMetadata = getCsvMetadataFromAnnotation(operatorCsvMetadata, reconcilerInfo.classInfo()).orElse(operatorCsvMetadata);
final var resourceFullName = config.getResourceTypeName();
final var resourceInfo = ResourceInfo.createFrom(config.getResourceClass(), resourceFullName, name, config.getSpecClassName(), config.getStatusClassName());
csvGroups.computeIfAbsent(csvMetadata, m -> new ArrayList<>()).add(new AugmentedResourceInfo(resourceInfo, csvMetadata.name));
});
return new CSVMetadataBuildItem(csvGroups);
}
use of io.quarkiverse.operatorsdk.bundle.runtime.CSVMetadataHolder in project quarkus-operator-sdk by quarkiverse.
the class BundleProcessor method getCSVMetadataForOperator.
private CSVMetadataHolder getCSVMetadataForOperator(String name, IndexView index) {
CSVMetadataHolder csvMetadata = new CSVMetadataHolder(name);
csvMetadata = aggregateMetadataFromSharedCsvMetadata(csvMetadata, index);
return csvMetadata;
}
Aggregations