Skip to content

Commit

Permalink
OCPBUGS-48637: add support for "OpenShift Virtualization Engine" filt…
Browse files Browse the repository at this point in the history
…er on OperatorHub
  • Loading branch information
TheRealJon authored and openshift-cherrypick-robot committed Feb 12, 2025
1 parent 24ccf7a commit c4c06c9
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export enum InfrastructureFeature {

export enum ValidSubscriptionValue {
OpenShiftKubernetesEngine = 'OpenShift Kubernetes Engine',
OpenShiftVirtualizationEngine = 'OpenShift Virtualization Engine',
OpenShiftContainerPlatform = 'OpenShift Container Platform',
OpenShiftPlatformPlus = 'OpenShift Platform Plus',
RequiresSeparateSubscription = 'Requires separate subscription',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@ const infraFeaturesSort = (infrastructure) => {
const validSubscriptionSort = (validSubscription) => {
switch (validSubscription.value) {
case ValidSubscriptionValue.OpenShiftKubernetesEngine:
case ValidSubscriptionValue.OpenShiftVirtualizationEngine:
return 0;
case ValidSubscriptionValue.OpenShiftContainerPlatform:
return 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -390,8 +390,14 @@ describe('getValidSubscription', () => {
const [subscriptions, filters] = getValidSubscription({
[OLMAnnotation.ValidSubscription]: `["${ValidSubscriptionValue.OpenShiftKubernetesEngine}"]`,
});
expect(subscriptions).toEqual([ValidSubscriptionValue.OpenShiftKubernetesEngine]);
expect(filters).toEqual([ValidSubscriptionValue.OpenShiftKubernetesEngine]);
expect(subscriptions).toEqual([
ValidSubscriptionValue.OpenShiftKubernetesEngine,
ValidSubscriptionValue.OpenShiftVirtualizationEngine,
]);
expect(filters).toEqual([
ValidSubscriptionValue.OpenShiftKubernetesEngine,
ValidSubscriptionValue.OpenShiftVirtualizationEngine,
]);
});
it(`parses ${ValidSubscriptionValue.OpenShiftPlatformPlus}`, () => {
const [subscriptions, filters] = getValidSubscription({
Expand All @@ -407,13 +413,15 @@ describe('getValidSubscription', () => {
expect(subscriptions).toEqual([
ValidSubscriptionValue.OpenShiftContainerPlatform,
ValidSubscriptionValue.OpenShiftKubernetesEngine,
ValidSubscriptionValue.OpenShiftVirtualizationEngine,
ValidSubscriptionValue.OpenShiftPlatformPlus,
'foo',
'bar',
]);
expect(filters).toEqual([
ValidSubscriptionValue.OpenShiftContainerPlatform,
ValidSubscriptionValue.OpenShiftKubernetesEngine,
ValidSubscriptionValue.OpenShiftVirtualizationEngine,
ValidSubscriptionValue.OpenShiftPlatformPlus,
ValidSubscriptionValue.RequiresSeparateSubscription,
]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,27 +144,47 @@ const parseValidSubscriptionAnnotation: AnnotationParser<string[]> = (annotation
...options,
}) ?? [];

export const getValidSubscription: AnnotationParser<[string[], ValidSubscriptionValue[]]> = (
export const getValidSubscription: AnnotationParser<[string[], string[]]> = (
annotations,
options,
) => {
const validSubscription = parseValidSubscriptionAnnotation(annotations, options);
const validSubscriptionFilters = validSubscription.reduce<ValidSubscriptionValue[]>(
(acc, value) => {
const filterValue =
{
[ValidSubscriptionValue.OpenShiftContainerPlatform]:
ValidSubscriptionValue.OpenShiftContainerPlatform,
[ValidSubscriptionValue.OpenShiftKubernetesEngine]:
const validSubscriptionMap = parseValidSubscriptionAnnotation(annotations, options).reduce<{
[key: string]: string[];
}>((acc, value) => {
switch (value) {
case ValidSubscriptionValue.OpenShiftContainerPlatform:
case ValidSubscriptionValue.OpenShiftPlatformPlus:
return {
...acc,
[value]: [value],
};
case ValidSubscriptionValue.OpenShiftKubernetesEngine:
case ValidSubscriptionValue.OpenShiftVirtualizationEngine:
return {
...acc,
[ValidSubscriptionValue.OpenShiftKubernetesEngine]: [
ValidSubscriptionValue.OpenShiftKubernetesEngine,
[ValidSubscriptionValue.OpenShiftPlatformPlus]:
ValidSubscriptionValue.OpenShiftPlatformPlus,
}[value] ?? ValidSubscriptionValue.RequiresSeparateSubscription;
return acc.includes(filterValue) ? acc : [...acc, filterValue];
},
],
[ValidSubscriptionValue.OpenShiftVirtualizationEngine]: [
ValidSubscriptionValue.OpenShiftVirtualizationEngine,
],
};
default:
return {
...acc,
[ValidSubscriptionValue.RequiresSeparateSubscription]: [
...(acc?.[ValidSubscriptionValue.RequiresSeparateSubscription] ?? []),
value,
],
};
}
}, {});

const validSubscriptions = Object.values(validSubscriptionMap).reduce(
(acc, subscriptions) => [...acc, ...subscriptions],
[],
);
return [validSubscription, validSubscriptionFilters];
return [validSubscriptions, Object.keys(validSubscriptionMap)];
};

const parseInfrastructureFeaturesAnnotation: AnnotationParser<string[]> = (annotations, options) =>
Expand Down

0 comments on commit c4c06c9

Please sign in to comment.