-
Notifications
You must be signed in to change notification settings - Fork 44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge master branch into storage-config-ui #1855
Merged
dgdavid
merged 235 commits into
agama-project:storage-config-ui
from
ancorgs:storage_merge_master
Dec 27, 2024
Merged
Merge master branch into storage-config-ui #1855
dgdavid
merged 235 commits into
agama-project:storage-config-ui
from
ancorgs:storage_merge_master
Dec 27, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
But disabled when the installation is not possible because of settings issues.
Avoiding to use the term "issues" in the title because it isn't an accurate term. "Preflight checks" has been used instead.
To avoid "stacking contexts" problems which avoid sticky page sections behave as expected. Such a workaround will be not needed when migrating to latest versions of PF6, since the problem has been addressed by droping the DrawerContentBody from the Page component, see patternfly/patternfly#7130 and related links See also https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_positioned_layout/Understanding_z-index/Stacking_context
Replaced by IssuesDrawer and IssuesDrawerToggle.
Instead of doing it dinamically since the IssuesDrawer already have logic for rendering nothing when needed. This approach helps to avoid having calls to a query when the QueryClient has not been set yet, like at login screen.
Which was also causing stacking problems at the selection product page.
Because it provides a benefit to the user both visually and cognitively, as they don't have to figure out why the install button was disabled, nor be told where to find the reasons for it.
Co-authored-by: Imobach González Sosa <[email protected]>
* The package contains a systemd service to run auto-installation init scripts.
Which will be initially shown after selecting a product if user issues are found.
Useful for routes "outside" of "installation settings context".
…on always visible (agama-project#1778) ## Problem [A month ago](agama-project#1690) , the 'Install' button achieved more visibility after being moved to the sticky header, allowing users to access it from any page/section/screen. But that was just an intermediate step towards improving the 'Install' action and the discoverability of 'Installation setup problems,' which sadly introduced some drawbacks: * The Install button is displayed dynamically, which still _forces_ users to figure out where it will appear when it’s not visible from the start. * When installation is not possible, users have to navigate to the Overview page to see what is making their setup invalid. ## Solution * Keep the install button always enabled and visible, triggering the installation when the setup is valid or displaying found _issues_ when not, and * Allow users to check found problems always, not only in the overview ## A discarded alternative At commit agama-project@6ecdceb, this set of changes was in a bit different shape, where the interface rendered a disabled "Install" button and an enabled "Warning" button to display the setup problems. Additionally, it featured a _tooltip_ to explain to users why the "Install" button was disabled and where to click to view the reasons in detail. However, this approach created unnecessary complexity and moving pieces, not to mention the challenge of writing a clear, concise, yet complete explanation for the _tooltip_ and keeping it up-to-date, including translations What's more, there is no reason to avoid keeping the "Install" button **always active but behaving slightly different** depending on the setup status: * Displaying found problems when the installation setup is invalid * Displaying the confirmation dialog when the setup is valid This way, the user doesn't need to think. They can simply click the "Install" button. If it's not possible, they can immediately start fixing their setup. If it is possible, they just have to confirm they want to begin the installation. --- Related to not yet planned Trello card, https://trello.com/c/DmUOQN1Y (internal link)
…-project#1843) Logs for the `agama-web-server` services include a lot of zbus-related information, which is not useful for the Agama use case. To have better control over what is included in the logs, this pull request adds support for setting logs directives using an environment variable called `AGAMA_LOG.` This variable works in a similar way to [env_logger's RUST_LOG](https://docs.rs/env_logger/latest/env_logger/#enabling-logging) but with some additions that you can find in [Tokio's EnvFilter](https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives) documentation. Setting `AGAMA_LOG` to `AGAMA_LOG=debug,zbus=info` allows filtering those annoying messages. Note: we could hard code `zbus=info` if needed.
## Problem - The integration test *sometimes* fails - https://github.com/agama-project/agama/actions/runs/12390466733/job/34585536259 ``` 1) Agama test should require setting the root password: Error: Timeout of 20000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (/usr/share/agama/integration-tests/tests/test_root_password.js) at listOnTimeout (node:internal/timers:594:[17](https://github.com/agama-project/agama/actions/runs/12390466733/job/34585536259#step:17:18)) at process.processTimers (node:internal/timers:529:7) ``` The uploaded screenshot confirms that the software initialization was still running: ![should_require_setting_the_root_password](https://github.com/user-attachments/assets/b74170a9-0324-433f-a060-e10c00445a6c) ## Solution - Fix the timeout setting
## Problem An exported profile is not valid. ```shell # agama config show > profile.json # agama profile validate profile.json ✗ The profile is not valid. Please, check the following errors: * Additional properties are not allowed ('autoconnect', 'ignoreAutoDns', 'status' were unexpected). ValidationError { instance: Object {"autoconnect": Bool(true), "id": String("Wired connection 1"), "ignoreAutoDns": Bool(false), "interface": String("enp1s0"), "method4": String("auto"), "method6": String("auto"), "status": String("up")}, kind: AdditionalProperties { unexpected: ["autoconnect", "ignoreAutoDns", "status"] }, instance_path: JSONPointer([Property("network"), Property("connections"), Index(0)]), schema_path: JSONPointer([Keyword("properties"), Property("network"), Keyword("properties"), Property("connections"), Keyword("items"), Keyword("additionalProperties")]) } * null is not of type "string". ValidationError { instance: Null, kind: Type { kind: Single(String) }, instance_path: JSONPointer([Property("product"), Property("registrationCode")]), schema_path: JSONPointer([Keyword("properties"), Property("product"), Keyword("properties"), Property("registrationCode"), Keyword("type")]) } * null is not of type "string". ValidationError { instance: Null, kind: Type { kind: Single(String) }, instance_path: JSONPointer([Property("product"), Property("registrationEmail")]), schema_path: JSONPointer([Keyword("properties"), Property("product"), Keyword("properties"), Property("registrationEmail"), Keyword("type")]) } * null is not of type "string". ValidationError { instance: Null, kind: Type { kind: Single(String) }, instance_path: JSONPointer([Property("root"), Property("sshPublicKey")]), schema_path: JSONPointer([Keyword("properties"), Property("root"), Keyword("properties"), Property("sshPublicKey"), Keyword("type")]) } * Additional properties are not allowed ('autologin' was unexpected). ValidationError { instance: Object {"autologin": Bool(false), "fullName": String(""), "hashedPassword": Bool(false), "password": String(""), "userName": String("")}, kind: AdditionalProperties { unexpected: ["autologin"] }, instance_path: JSONPointer([Property("user")]), schema_path: JSONPointer([Keyword("properties"), Property("user"), Keyword("additionalProperties")]) } ``` ## Solution Fix both the exported values and the JSON schema. ```shell # agama config show > profile.json # agama profile validate profile.json ✓ The profile is valid. ```
## Problem In order to support the QA use-case, we need to make it possible to configure the boot loader to stop at the menu without a timeout. trello: https://trello.com/c/dKYmc0K7/4018-5-agama-ped-10810-new-section-to-configure-bootloader jira: - [PED-10810](https://jira.suse.com/browse/PED-10810) - Epic: https://jira.suse.com/browse/AGM-54 - Story: https://jira.suse.com/browse/AGM-59 - Tasks: https://jira.suse.com/browse/AGM-67 and https://jira.suse.com/browse/AGM-68 ## Solution Add to profile section `Bootloader` with key `stopOnBootMenu` and boolean value. This allows QA to use `jq -n ".bootloader.stopOnBootMenu = true" | agama config load` after selecting product and before start of installation to force stop without any timeout. ## Testing - *Added a new unit test* - *Tested manually*
The backend expects a prefix length instead of netmask, but unfortunately current code base is not ensuring of making the conversion before sending a request, making the connection form fail silently. This commit fix it by adapting the formatIp util method for relying in ipPrefixFor to make such a conversion.
## Problem Backend expects a prefix length instead of netmask, but unfortunately current code base is not ensuring of making the conversion before sending a request, making the connection form fail silently. ## Solution Adapt the `formatIp` util method for relying in `ipPrefixFor` to make such a conversion. ## Testing - Updated unit test - Tested manually --- Fixes agama-project#1846 Related to agama-project#530
## Problem In autoinstallation, the storage config could be set before probing storage. If so, the probing action overwrites the config that was set from the autoinstall profile. https://bugzilla.suse.com/show_bug.cgi?id=1234711 ## Solution Hotfix for ensuring the storage config is preserved when doing probing for first time. A better solution should be provided for a correct management of the services and precedences. ## Testing Manually tested.
## Problem There is collision between agama-project#1848 and agama-project#1840 where bootloader adds another interface with Get/SetConfig on Storage service. This result that generic access no longer works and needs access via specific interface. reported on slack https://suse.slack.com/archives/C02TLF25571/p1734924853266999 ## Solution Change code to avoid ambitious code. ## Testing - *Tested manually*
dgdavid
approved these changes
Dec 26, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
The feature branch
storage-config-ui
has been running in parallel to master for months already. Getting out of sync little by little.Solution
Merge the changes from
master
intostorage-config-ui
solving all the conflicts.