The updated mountpoint policy merged in osbuild-composer upstream does
not allow sub-directories of `/usr` to be placed on a separate
partition. There are other changes, but this fix prevents users from
making an obvious error during image creation, until the updated policy
is reflected in the UI.
Related to https://issues.redhat.com/browse/COMPOSER-2030
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
Add integration and unit tests for the wizard. The integration testing
is making sure that the wizard holds up together, is navigable and has
at least a happy path tested.
The unit test of the ImageOuput tests more combinations of clicks on the
interface and make sure the inner logic is sound.
The intersection of the two tests brings us confidence that the UX will
work according to spec.
Bring in a review step in the wizard. The purpose is to incrementally
develop it while new steps are added to the mix. This way the Wizard
gets to be integration testable from the early beginning.
Right now the review step is only showing information about the Image
Output step. Even though the Image Output step contains data about the
target environment, these information are going to need the Target
Environment step to be developed in order to be fully shown.
Port the image output step to the new wizard v2.
This is also the first step in the new redesigned wizard and this commit
message is an opportunity to detail a bit the organisation of it:
The code is organised as followed:
- CreateImageWizard is the root and contains all the code associated
with the PF wizard. (i.e Wizard and WizardStep).
- Each step has its code under the step/ sub directory.
- The step directory is named after the step (i.e ImageOutput for the
Image Output step
- At the root of the step directory there is a file which contains the
code of the step (i.e ImageOutput.tsx).
- The main component of the step can access many subcomponents and they
have to be stored alongside it in its directory.
State management:
- The state management is only done with react use states, prop drilling
and state lifting. This is to ensure simplicity as it makes the wizard
- If necessary in the future, there might be needs for context and
reducers, but it's quite not the case RN. And using them come at the
cost of making exploring the code harder.
- CreateImageWizard will declare all the states
This adds eslint-plugin-jsx-a11y to the eslint configuration, setting up recommended set of rules for accessibility testing.
The error output by `jsx-a11y/no-autofocus` on encountering `autoFocus` attribute was switched to warning for now as whether to auto focus on an element or not can be highly contextual.
Fixes#948
Developing a new wizard will require many pull requests and some of them
might even be worked on in parallel. To allow to develop all of that
without interfering with the legacy wizard this commit introduces a new
dev environment alongside an unleash flag when we later want to do the
switch.
To use the new dev en use `npm run stage-beta:experimental` or `npm run
stage-beta:msw+experimental` depending on what you want.
Then unleash flag to toggle in stage and prod is: `image-builder.new-wizard.enabled`
fixes: HMS-2859
After cleaning up the ESLint plugins a new error for eslint-plugin-testing-library popped up. This PR solves all of the occurences of `Promise returned from async event method `user` must be handled` and removes the `"testing-library/await-async-events": "off"` switch which was temporary put in place.
This updates rules for linting both JS and TS files in a way that is consistent with previous linting.
Some rules for linting TS files were turned off or switched to warnings for now.
A dependabot PR https://github.com/RedHatInsights/image-builder-frontend/pull/1394 was failing with the following message:
"ESLint couldn't determine the plugin "testing-library" uniquely."
This was caused by having two separate instances of "eslint-plugin-testing-library" in dependencies. One directly in the `devDependencies` and another one as a dependency of eslint-config-react-app.
Seeing as [eslint-config-react-app](https://www.npmjs.com/package/eslint-config-react-app) was not updated in the last two years, the majors versions of deps in the "bundle" were crashing with the `devDependencies` one.
Pre-authenticated requests for the OCI images expire 7 days after creation. This adds "Expires in <x> days" and "Expired" as possible statuses for the OCI images.
This adds an expired mock OCI image with an ID "0c1ec8d8-be39-47f2-9bd4-a3fff8244fce" and an expiring mock OCI image with an ID "ea23cfd6-fd8b-43ed-adfc-9f76bb8487ef".
This adds a row for OCI images in the ImagesTable. Details about the images show UUID of the image and the Object Storage URL which is needed to deploy the image.
"Image link" button in the Instance column contains instrucion on how to run an OCI image built by Image Builder in Oracle Cloud. The documentation link in the popover is just a placeholder for now as the documentation is being prepared.
Until the build is finished the "Image link" button is disabled as it would be missing the Object Storage URL which is creating on upload.
This adds a tile allowing to build an OCI image to the Image output step of the wizard. The tile is only visible in the Preview.
As there are no other customer information needed for the build, no addiional step for OCI was added.
Review step was also updated to include OCI images.
As Travis CI is getting removed from RedHatInsights this should replace it in what we used to use Travis for.
This workflow is triggered on pull requests to main and runs clean install of dependencies, lint check and the unit test suite.
The main motivation of this workflow being separated from the IQE tests is to allow to quickly check if the basic tests pass during development without the need to wait for the IQE tests to finish their run.
This new test is complementing the integration testing found in
src/test/Components/CreateImageWizars.*.test.js.
This new test makes sure that the logic within the component itself is
sound without taking care of interacting with other parts of the wizard.
It allows to test more combinations without worrying about combinatory
effects.
Refs HMS-1135
Adding a new select into the images output step had for effet to
mechanically add a new option menu. In order to select the release
menu we have to take now the first option menu of all possibilities.
Refs HMS-1135
There is now a delay between when the user clicks on the architecture
button (or just goes onto the step) and when the targets are being
displayed. This is due to the fact that the data to filter which targets
needs to be displayed has to be fetched from the backend. And during the
meantime a loading spinner is shown.
To adapt to this the code simply waits for the fields to be accessible.
Refs HMS-1135
This commit extends the supported architectures to aarch64. In the image
output step (the first one of the wizard) the user is now faced with a
new select choices to pickup the architecture they want to build.
Now the set of compatible targets to build is dynamically loaded from
the backend and the UX changes what's accessible on the fly depending on
what's the user has been selected.
Refs HMS-1135
this commit adds filter for image_type to the getComposes endpoint,
enhancing the functionality of the Image Builder frontend table, which comprises two tabs: RPM and OSTree.
With this enhancement, users can now filter OSTree images from the RPM tab, preventing duplication.