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
|
||||
const requestToState = (composeRequest, distroInfo, isBeta, isProd) => {
|
||||
const requestToState = (composeRequest, distroInfo, isProd, enableOscap) => {
|
||||
if (composeRequest) {
|
||||
const imageRequest = composeRequest.image_requests[0];
|
||||
const uploadRequest = imageRequest.upload_request;
|
||||
|
|
@ -476,7 +476,7 @@ const requestToState = (composeRequest, distroInfo, isBeta, isProd) => {
|
|||
}
|
||||
|
||||
// oscap policy
|
||||
if (isBeta) {
|
||||
if (enableOscap) {
|
||||
formState['oscap-policy'] =
|
||||
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) {
|
||||
const imageRequest = composeRequest.image_requests[0];
|
||||
const uploadRequest = imageRequest.upload_request;
|
||||
|
|
@ -506,7 +510,7 @@ const formStepHistory = (composeRequest, contentSourcesEnabled, isBeta) => {
|
|||
steps.push('registration');
|
||||
}
|
||||
|
||||
if (isBeta) {
|
||||
if (enableOscap) {
|
||||
steps.push('Compliance');
|
||||
}
|
||||
|
||||
|
|
@ -559,24 +563,30 @@ const CreateImageWizard = () => {
|
|||
|
||||
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(
|
||||
composeRequest,
|
||||
distroInfo,
|
||||
isBeta(),
|
||||
isProd()
|
||||
isProd(),
|
||||
oscapFeatureFlag
|
||||
);
|
||||
const stepHistory = formStepHistory(
|
||||
composeRequest,
|
||||
contentSourcesEnabled,
|
||||
isBeta()
|
||||
oscapFeatureFlag
|
||||
);
|
||||
|
||||
if (initialState) {
|
||||
initialState.isBeta = isBeta();
|
||||
initialState.contentSourcesEnabled = contentSourcesEnabled;
|
||||
initialState.enableOscap = oscapFeatureFlag;
|
||||
} else {
|
||||
initialState = {
|
||||
isBeta: isBeta(),
|
||||
enableOscap: oscapFeatureFlag,
|
||||
contentSourcesEnabled,
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import isRhel from '../../../Utilities/isRhel.js';
|
||||
|
||||
const imageOutputStepMapper = (
|
||||
{ 'target-environment': targetEnv, release, isBeta } = {},
|
||||
{ 'target-environment': targetEnv, release, enableOscap } = {},
|
||||
{ skipAws, skipGoogle, skipAzure } = {}
|
||||
) => {
|
||||
if (!skipAws && targetEnv?.aws) {
|
||||
|
|
@ -19,7 +19,7 @@ const imageOutputStepMapper = (
|
|||
if (isRhel(release)) {
|
||||
return 'registration';
|
||||
}
|
||||
if (isBeta) {
|
||||
if (enableOscap) {
|
||||
return 'Compliance';
|
||||
}
|
||||
return 'File system configuration';
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ const registrationStep = {
|
|||
),
|
||||
name: 'registration',
|
||||
nextStep: ({ values }) => {
|
||||
if (values.isBeta) {
|
||||
if (values.enableOscap) {
|
||||
return 'Compliance';
|
||||
} else {
|
||||
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(() => {
|
||||
// scrollTo is not defined in jsdom
|
||||
window.HTMLElement.prototype.scrollTo = function () {};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue