Commit graph

1269 commits

Author SHA1 Message Date
lucasgarfield
c4d411efa4 Wizard: Improve in-page wizard cosmetically
This commit:
1. Removes the header from the Data Driven Forms wizard
2. Adds padding around the in-page wizard so it is visually consistent
   with the images table
3. Refactors the images table header into a re-usable component that is
   now used in both the images table and the wizard
4. Allows the repositories table to fill the available vertical space in
   the wizard
5. Adjusts the package dual list selectors so that they fill the
   available horizontal space in the wizard
2023-10-20 15:51:03 +02:00
Thomas Lavocat
1c1290f7ed oscap: a policy isn't a profile
There was a mixup on our side between what is a profile and what is a
policy. Long story short, a policy a super set of rules including a
profile. For now the wizard is only able to apply profiles and no
policies on images. So let's fix the terminology there.
2023-10-20 10:46:02 +02:00
Thomas Lavocat
d60c6cb74b 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)
2023-10-19 10:00:44 +02:00
Jakub Rusz
3984971a72 pr_check: Increase namespace reservation to 2h 2023-10-18 12:20:13 +02:00
dependabot[bot]
4fe4b9340b build(deps-dev): bump @babel/traverse from 7.22.10 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.10 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 09:24:33 +02:00
dependabot[bot]
6839596dca build(deps-dev): bump postcss-scss from 4.0.7 to 4.0.9
Bumps [postcss-scss](https://github.com/postcss/postcss-scss) from 4.0.7 to 4.0.9.
- [Changelog](https://github.com/postcss/postcss-scss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-scss/compare/4.0.7...4.0.9)

---
updated-dependencies:
- dependency-name: postcss-scss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 09:05:42 +02:00
lucasgarfield
6a968f1521 deps: bump @data-driven-forms/react-form-renderer from 3.21.6 to 3.21.7
This version includes a bugfix for the wizard navigation bar.
2023-10-16 16:07:47 +02:00
lucasgarfield
89f1da11bf API: Move notification dispatch to Image Builder API slice
This commit moves the notification dispatching for creating composes and
clones into a more sensible location – the Image Builder API slice.

It is more sensible because it separates the logic of the React
component (the wizard or share images modal) from the logic of handling
the request life cycle (which is now handled entirely in the slice).

There is a subtle but significant change – a new request will be
dispatched for every request. This is the correct way to do things as it
is possible that some requests succeed, and that others fail. Insights
causes the notifications to stack on top of each other neatly, so there
is no UI problem.

To facilitate this, we also need to use use Promise.allSettled instead
of Promise.all.
2023-10-13 11:44:33 +02:00
Thomas Lavocat
b312e4a2a7 fsc: fix the oscap fs customizations
There was a bug preventing all the partitions required by an oscap
policy to show up in the fsc step. That bug was because the FSC
customizations were only accepted if they matched exactly the fix set of
base partitions directories.

So now there's a bit of string manipulation to avoid that but it's all
patched up.

fixes https://github.com/RedHatInsights/image-builder-frontend/issues/1385
2023-10-12 20:20:16 +02:00
Sanne Raymaekers
d706a7e5e2 ImagesTable: show error popover on s3 images
The error popover should be shown in case there's a reason for the
error. This is already the case for the other image types.
2023-10-12 15:24:55 +02:00
lucasgarfield
6e018ce7c8 API: Eliminate race condition in Image Builder API slice
The images table uses the useGetComposesQuery hook to fetch composes and
implement pagination. When this query is used, args are provided for the
offset and limit and a 'Compose' tag is provided for the query.

When a mutation is triggered (causing a POST request to be sent to the
`/compose` end point), the 'Compose' tag is invalidated which clears all
cached data from useGetComposesQuery hooks, which in turn causes the
table to refetch compose information.

If invalidating the `Compose` tag causes a refetch before the new compose
is available in image-builder, the result does not contain the new
compose and the table is not updated to include it.

This commit eliminates the race condition by waiting for the query to be
fulfilled before invalidating tags (and therefore before refetching the
data).

All of the above applies equally to the `cloneCompose` mutation, and its
race condition has also been eliminated.

This commit is loosely inspired by the RTK Query docs section on
pessimistic updates:
https://redux-toolkit.js.org/rtk-query/usage/manual-cache-updates#pessimistic-updates

Typescript complains about the type of the tags. It does not recognize
the tag types that are defined in the same enhanceEndpoint() function.
For now, we simply ignore the Typescript errors. There is some
discussion here: https://github.com/reduxjs/redux-toolkit/issues/1510
2023-10-12 08:41:59 +02:00
lucasgarfield
c73824cd22 eslint: Disabled rulesdir/forbid-pf-relative-imports
Commit #3e84abba3f bumped
@redhat-cloud-services/eslint-config-redhat-cloud-services from 1.3.0 to
2.0.3.

This introduced a new rule that broke a number of our imports. This
commit forbids the rule for now.

(rulesdir/forbid-pf-relative-imports: off)
2023-10-11 18:03:58 +02:00
Gianluca Zuccarelli
44e2a9519b devel: mv to osbuild/getting-started
Move the docker backend to the `getting-started` repo in `osbuild` since
it seems like a more appropriate place for the backend stack. Add a note
to the README to point users to the new repository.
2023-10-11 09:34:52 +02:00
jkozol
5a34506eb6 devel: update local containerized development
Update multiple aspects of our docker development stack. The frontend now
has a devel specific webpack that allows development against a local server/api.
The docker-composer.yaml also includes both versioning and networking updates.
Overall, the major change is to migrate our proxy access into the crc webpack proxy.
2023-10-11 09:34:52 +02:00
regexowl
51ad859747 test: Improve stability of the ImagesTable tests
This should help with tests flaking on the `act()` error.
2023-10-10 15:30:39 +02:00
Thomas Lavocat
cbe710e75e wizard: don't show the form as a modal
When the user clicks on the "create an image" button, the image wizard
shows up replacing the landing page. This allows to keep the quickstart
guides to the right of the wizard while the user is interacting with it.
2023-10-09 11:40:40 +02:00
dependabot[bot]
cd2d3c41f7 build(deps): bump postcss from 8.4.29 to 8.4.31
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.29 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.29...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 10:38:49 +02:00
Thomas Lavocat
382b0195da test: new set of tests for the compliance step
The compliance step is now tested with two new tests:
- One to test that upon creation, if a user selects a profile, then the
  customizations are applied to the file system and package steps
- One to test that upon recreation, the file system and packages
  customizations are still present.

HMS-2077
2023-10-06 16:26:09 +02:00
Thomas Lavocat
e8f454a579 packages: load the oscap profile when available
The packages list is now pre populated with the customization packages
asked by the oscap profile the user has selected.

HMS-2077
2023-10-06 16:26:09 +02:00
Thomas Lavocat
7c55190ac3 fsc: load the oscap profile when available.
When the user has selected a profile to customize their distribution,
the FSC step now shows immediately the manual configuration opened up
with the partitions coming from the profile already filled in.

If the user goes back to the Compliance step and changes anything, the
FSC step is going to be reinitialized.

HMS-2077
2023-10-06 16:26:09 +02:00
Thomas Lavocat
18cc74cf6b wizard: add oscap to the review step
The review step now list the OpenSCAP policy chosen by the user.
2023-10-06 16:26:09 +02:00
Thomas Lavocat
3e11639960 wizard: the oscap step is reserved for beta
Do not show the oscap step outside of beta. Only protecting the step
itself is sufficient since the FSC and the Packages steps wont load any
profile data if no entry point allows to get one.

HMS-2077

wizardrecreatebeta
2023-10-06 16:26:09 +02:00
Thomas Lavocat
02a642df19 oscap: add the compliance step to the wizard
This commit adds the Compliance step to the wizard. In this step the
user can select a policy from the list of available policies. Their
image is going to be updated with the necessary changes on the later
steps.

IB and The compliance endpoint are both returning the list of policies a
user has access to. The oscap step computes the intersection of the
policies accessible before showing the select list to the user.

HMS-2077
2023-10-06 16:26:09 +02:00
Thomas Lavocat
1587ead4d9 mocks: add oscap fixtures and handlers
In order to test the oscap customization profiles, let's declare new msw
data that can be used in unit testing.

HMS-2077
2023-10-06 16:26:09 +02:00
Thomas Lavocat
273aa52711 api: update to latest image builder
This will let the code access the new endpoints to get the OSCAP
profiles and OSCAP customizations for the images.

HMS-2077
2023-10-06 16:26:09 +02:00
lucasgarfield
67570b8e54 Revert "API: Add Compliance API slice"
This reverts commit 36f9e70565.

The Compliance v1 API is not stable and not intended for consumption by
other teams. We will implement the OpenSCAP MVP without the Compliance
API for now with a hard coded list of polices in image-builder, and when
their v2 API is ready in the near future begin using it to retrieve
policies.
2023-10-06 13:35:27 +02:00
dependabot[bot]
12d920f9b3 build(deps): bump react-router-dom from 6.15.0 to 6.16.0
Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 6.15.0 to 6.16.0.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.16.0/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-05 15:47:52 +02:00
dependabot[bot]
551ff68515 build(deps-dev): bump @testing-library/jest-dom from 5.17.0 to 6.1.3
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 5.17.0 to 6.1.3.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v5.17.0...v6.1.3)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 13:49:06 +02:00
lucasgarfield
36f9e70565 API: Add Compliance API slice
This commit adds the Compliance service's API, which we can query for a
list of SCAP security policies.

In a follow-up PR, we will allow the user to optionally select a policy
when creating an image in the wizard.
2023-09-28 14:50:33 +02:00
dependabot[bot]
c7ef446fdb build(deps): bump @data-driven-forms/react-form-renderer
Bumps [@data-driven-forms/react-form-renderer](https://github.com/data-driven-forms/react-forms/tree/HEAD/packages/react-form-renderer) from 3.21.0 to 3.21.6.
- [Release notes](https://github.com/data-driven-forms/react-forms/releases)
- [Commits](https://github.com/data-driven-forms/react-forms/commits/v3.21.6/packages/react-form-renderer)

---
updated-dependencies:
- dependency-name: "@data-driven-forms/react-form-renderer"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-28 09:08:43 +02:00
dependabot[bot]
d9851a9a6f build(deps): bump react-redux from 8.0.5 to 8.1.2
Bumps [react-redux](https://github.com/reduxjs/react-redux) from 8.0.5 to 8.1.2.
- [Release notes](https://github.com/reduxjs/react-redux/releases)
- [Changelog](https://github.com/reduxjs/react-redux/blob/master/CHANGELOG.md)
- [Commits](https://github.com/reduxjs/react-redux/compare/v8.0.5...v8.1.2)

---
updated-dependencies:
- dependency-name: react-redux
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-27 15:05:07 +02:00
Adi Abramovich
a890dc5666 wizard: add GCP image sharing options
Adding GCP image sharing option according to the discussion on slack(https://redhat-internal.slack.com/archives/C03AZ0264LW/p1692789579814619) and mocks(https://issues.redhat.com/browse/HMS-2352).

In summary, within our GCP sources, we store the project ID. Images cannot be shared directly with a project ID, but they can be shared with a service account or a Google account. Consequently, to launch instances in GCP, users are not required to provide their Google account; instead, the images should be shared with the provisioning service account. This ensures that the provisioning team has access to the necessary images, as sharing them with individual users would not allow that.

After a thorough discussion, we have collectively decided to introduce an option. This option allows users to exclusively utilize the Launch service without the need to share the image with a Google account.
2023-09-27 13:53:36 +02:00
Djebran Lezzoum
50b76751e7 edge: Fixes federated edge image details view.
The federated image details been broken by a prior PR.
FIXES: https://issues.redhat.com/browse/HMS-2620
2023-09-22 01:06:06 +02:00
dependabot[bot]
3e84abba3f build(deps-dev): bump @redhat-cloud-services/eslint-config-redhat-cloud-services
Bumps @redhat-cloud-services/eslint-config-redhat-cloud-services from 1.3.0 to 2.0.3.

---
updated-dependencies:
- dependency-name: "@redhat-cloud-services/eslint-config-redhat-cloud-services"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-21 10:53:23 +02:00
mgold1234
1bb7519cc4 api: add new edge endpoints
This commit adds 2 more RTQ Query in preparation of porting edge source code to image-builder-frontend
2023-09-19 10:27:23 +02:00
Justin Sherrill
5d6b6dfbfe Filter content-sources repos by origin and content_type 2023-09-19 09:22:37 +02:00
lucasgarfield
99ae627007 LaunchWizard: Correct architecture prop
The `<LaunchWizard>` architecture prop was specified incorrectly,
which caused the Instance dropdown in the Launch wizard to fail to load
instance types.
2023-09-18 16:08:57 +02:00
lucasgarfield
adaec7e34d LaunchWizard: Restore Launch wizard functionality
This commit is a hotfix that restores functionality to the Launch
wizard.

The `appendTo` variable can't be recomputed on every render. Wrap it in
a useState() hook to work properly.

Additionally, the `hasAccess`  property was missing from the
<ProvisioningWizard> component.

To ensure full backwards compatibility, the component has also been
wrapped in a <Suspense> as it was previously.
2023-09-18 15:38:47 +02:00
Thomas Lavocat
543d4e95d3 edge: setup an unleash toggle for the image table
The edge images table is going to be integrated in the frontend code
base in the coming weeks. To help smooth that development process there
is need for a feature flag that would keep the current behavior running
on stage and prod while the new image table is being developed.

For now dummy code is returned for when the flag is on, and legacy
behavior keeps on going when the flag is off.

The stage flag can be seen there:
- https://insights-stage.unleash.devshift.net/projects/default/features/image-builder.edge.local-image-table

The prod flag can be seen there:
- https://insights.unleash.devshift.net/projects/default/features/image-builder.edge.local-image-table

The commit brings in some documentation in the Readme. Any member of
the team should be able to follow these steps to add in new feature
flags and use them in the code base.

The commit also brings in two new testing files for the future
components to come. For now these tests only check that the mocking
value for the unleash flag is properly set.
2023-09-18 13:35:37 +02:00
lucasgarfield
7b9e726151 ImagesTable: Convert ImagesTable to Typescript & RTK Query
This commit converts the Images Table to Typescript and converts all API
calls to image-builder to use RTK Query hooks.

This should increase the performance of the app significantly.
Previously our calls to the image-builder API were made in series. They
are now made in parallel. We may want to investigate the possibility of
hitting rate limiting now that we will be issuing requests in much more
rapid succession.

In the tests, moving to RTK Query hooks has allowed us to remove
virtually all Jest mocking. However, this means that some of our
previous tests which tested against implementation details were broken.
Most notably, we no longer check the Redux store to verify that clones
have been added correctly and we no longer check that compose requests
were issued successfully. Test coverage will be restored in a follow-up
PR where the dev-dependency @msw/data is added. Adding a persistent data
layer to the tests using @msw/data will allow us to verify that our POST
requests (creating composes and cloning them) are working by testing
that the Images Table has been updated.
2023-09-18 10:35:04 +02:00
lucasgarfield
155a0cf57c deps-dev: bump @types/react and @types/react-dom
This commit bumps @types/react and @types/react-dom. Notably, this
prevents tsserver from issuing an error when React components return
undefined.
2023-09-18 10:35:04 +02:00
Jakub Rusz
4fe1242c49 Adding some ouiaId for File system customization 2023-09-13 15:56:10 +02:00
Ondrej Ezr
1e37a6ece9 Migrate to Provisioning API nested root 2023-09-11 15:19:31 +02:00
Thomas Lavocat
f147d5f4fe api: update from latest imageBuilder@main
Adds the composeId to the CloneResponseItem element.
Updates the mocks accordingly
2023-09-11 13:20:15 +02:00
mgold1234
e998dd802b API: generate more RTK query for edge
This commit adds more RTQ query in preparation of porting edge source code to image-builder-frontend
2023-09-11 11:09:51 +02:00
Thomas Lavocat
9fe77c5e67 readme: add documentation on API and enpoints 2023-09-11 11:01:33 +02:00
Thomas Lavocat
a999083404 ci: checks that the API is not manually changed
Travis will check that the API suffers from no changes while running
`npm run api` on the PR. If there are changes, an error message will
send the contributor to check the README page about open api generated
code.
2023-09-11 11:01:33 +02:00
Ondrej Ezr
b64f36e68f Extract quickstarts banner into its own component 2023-09-11 10:40:13 +02:00
regexowl
9f5a0af826 Wizard: Update the Repositories step
This updates the Repositories and Review step as per [mocks](https://www.sketch.com/s/d7aa6d29-fca0-4283-a846-09cc5fd10612/a/MyEbDz7).

Repositories with the unavailable or invalid status have a popover that allows for further inspection. The time of the last introspection and the counter of failed attempts was added to the popover, together with the "Go to Repositories" button.

On Recreate the payload repositories are checked against "freshly" fetched list of repositories. In case any of the previously checked repositories is no longer available in content sources an Alert is rendered on both Repositories and Review steps. The unavailable repository is checked, but the checkbox is disabled and the information is dashed out. Since the information about the repository is stored in the Repository type, the only information available to be rendered is the baseurl.

Create image button is also disabled when recreating an image with unavailable repositories.
2023-09-11 10:30:04 +02:00
Amir Fefer
0822a69619 feat(HMS-1454): add RBAC permissions to launch wizard 2023-09-07 14:18:44 +02:00