oscap: lock the wizard step behind a feature flag
The oscap feature have been quite eagerly pushed forward and it seems we went a bit fast with it. To take more time and make sure all the stakeholders agree on the way forward the decision was taken to put this functionality behind a feature flag. The two feature flags for both stage and prod are there: * https://insights-stage.unleash.devshift.net/projects/default/features/image-builder.wizard.oscap.enabled (enabled on stage so we can test the feature) * https://insights.unleash.devshift.net/projects/default/features/image-builder.wizard.oscap.enabled (disabled on prod)
This commit is contained in:
parent
3984971a72
commit
d60c6cb74b
4 changed files with 27 additions and 10 deletions
|
|
@ -320,7 +320,7 @@ const parseSizeUnit = (bytesize) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// map the compose request object to the expected form state
|
// map the compose request object to the expected form state
|
||||||
const requestToState = (composeRequest, distroInfo, isBeta, isProd) => {
|
const requestToState = (composeRequest, distroInfo, isProd, enableOscap) => {
|
||||||
if (composeRequest) {
|
if (composeRequest) {
|
||||||
const imageRequest = composeRequest.image_requests[0];
|
const imageRequest = composeRequest.image_requests[0];
|
||||||
const uploadRequest = imageRequest.upload_request;
|
const uploadRequest = imageRequest.upload_request;
|
||||||
|
|
@ -476,7 +476,7 @@ const requestToState = (composeRequest, distroInfo, isBeta, isProd) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// oscap policy
|
// oscap policy
|
||||||
if (isBeta) {
|
if (enableOscap) {
|
||||||
formState['oscap-policy'] =
|
formState['oscap-policy'] =
|
||||||
composeRequest?.customizations?.openscap?.profile_id;
|
composeRequest?.customizations?.openscap?.profile_id;
|
||||||
}
|
}
|
||||||
|
|
@ -487,7 +487,11 @@ const requestToState = (composeRequest, distroInfo, isBeta, isProd) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const formStepHistory = (composeRequest, contentSourcesEnabled, isBeta) => {
|
const formStepHistory = (
|
||||||
|
composeRequest,
|
||||||
|
contentSourcesEnabled,
|
||||||
|
enableOscap
|
||||||
|
) => {
|
||||||
if (composeRequest) {
|
if (composeRequest) {
|
||||||
const imageRequest = composeRequest.image_requests[0];
|
const imageRequest = composeRequest.image_requests[0];
|
||||||
const uploadRequest = imageRequest.upload_request;
|
const uploadRequest = imageRequest.upload_request;
|
||||||
|
|
@ -506,7 +510,7 @@ const formStepHistory = (composeRequest, contentSourcesEnabled, isBeta) => {
|
||||||
steps.push('registration');
|
steps.push('registration');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isBeta) {
|
if (enableOscap) {
|
||||||
steps.push('Compliance');
|
steps.push('Compliance');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -559,24 +563,30 @@ const CreateImageWizard = () => {
|
||||||
|
|
||||||
const { isBeta, isProd } = useGetEnvironment();
|
const { isBeta, isProd } = useGetEnvironment();
|
||||||
|
|
||||||
|
// Only allow oscap to be used in Beta even if the flag says the feature is
|
||||||
|
// activated.
|
||||||
|
const oscapFeatureFlag =
|
||||||
|
useFlag('image-builder.wizard.oscap.enabled') && isBeta();
|
||||||
let initialState = requestToState(
|
let initialState = requestToState(
|
||||||
composeRequest,
|
composeRequest,
|
||||||
distroInfo,
|
distroInfo,
|
||||||
isBeta(),
|
isProd(),
|
||||||
isProd()
|
oscapFeatureFlag
|
||||||
);
|
);
|
||||||
const stepHistory = formStepHistory(
|
const stepHistory = formStepHistory(
|
||||||
composeRequest,
|
composeRequest,
|
||||||
contentSourcesEnabled,
|
contentSourcesEnabled,
|
||||||
isBeta()
|
oscapFeatureFlag
|
||||||
);
|
);
|
||||||
|
|
||||||
if (initialState) {
|
if (initialState) {
|
||||||
initialState.isBeta = isBeta();
|
initialState.isBeta = isBeta();
|
||||||
initialState.contentSourcesEnabled = contentSourcesEnabled;
|
initialState.contentSourcesEnabled = contentSourcesEnabled;
|
||||||
|
initialState.enableOscap = oscapFeatureFlag;
|
||||||
} else {
|
} else {
|
||||||
initialState = {
|
initialState = {
|
||||||
isBeta: isBeta(),
|
isBeta: isBeta(),
|
||||||
|
enableOscap: oscapFeatureFlag,
|
||||||
contentSourcesEnabled,
|
contentSourcesEnabled,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import isRhel from '../../../Utilities/isRhel.js';
|
import isRhel from '../../../Utilities/isRhel.js';
|
||||||
|
|
||||||
const imageOutputStepMapper = (
|
const imageOutputStepMapper = (
|
||||||
{ 'target-environment': targetEnv, release, isBeta } = {},
|
{ 'target-environment': targetEnv, release, enableOscap } = {},
|
||||||
{ skipAws, skipGoogle, skipAzure } = {}
|
{ skipAws, skipGoogle, skipAzure } = {}
|
||||||
) => {
|
) => {
|
||||||
if (!skipAws && targetEnv?.aws) {
|
if (!skipAws && targetEnv?.aws) {
|
||||||
|
|
@ -19,7 +19,7 @@ const imageOutputStepMapper = (
|
||||||
if (isRhel(release)) {
|
if (isRhel(release)) {
|
||||||
return 'registration';
|
return 'registration';
|
||||||
}
|
}
|
||||||
if (isBeta) {
|
if (enableOscap) {
|
||||||
return 'Compliance';
|
return 'Compliance';
|
||||||
}
|
}
|
||||||
return 'File system configuration';
|
return 'File system configuration';
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ const registrationStep = {
|
||||||
),
|
),
|
||||||
name: 'registration',
|
name: 'registration',
|
||||||
nextStep: ({ values }) => {
|
nextStep: ({ values }) => {
|
||||||
if (values.isBeta) {
|
if (values.enableOscap) {
|
||||||
return 'Compliance';
|
return 'Compliance';
|
||||||
} else {
|
} else {
|
||||||
return 'File system configuration';
|
return 'File system configuration';
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,13 @@ jest.mock('@redhat-cloud-services/frontend-components/useChrome', () => ({
|
||||||
}),
|
}),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
jest.mock('@unleash/proxy-client-react', () => ({
|
||||||
|
useUnleashContext: () => jest.fn(),
|
||||||
|
useFlag: jest.fn((flag) =>
|
||||||
|
flag === 'image-builder.wizard.oscap.enabled' ? true : false
|
||||||
|
),
|
||||||
|
}));
|
||||||
|
|
||||||
beforeAll(() => {
|
beforeAll(() => {
|
||||||
// scrollTo is not defined in jsdom
|
// scrollTo is not defined in jsdom
|
||||||
window.HTMLElement.prototype.scrollTo = function () {};
|
window.HTMLElement.prototype.scrollTo = function () {};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue