home-assistant / supervisor

:house_with_garden: Home Assistant Supervisor
https://home-assistant.io/hassio/
Apache License 2.0
1.73k stars 634 forks source link

Allow to set user DNS through API with auto mode #5275

Closed agners closed 4 weeks ago

agners commented 1 month ago

Proposed change

Currently it is only possible to set DNS servers when in static mode. However, there are use cases to set DNS servers when in auto mode as well, e.g. if no local DNS server is provided by the DHCP, or the provided DNS turns out to be non-working.

Type of change

Additional information

Checklist

If API endpoints of add-on configuration are added/changed:

Summary by CodeRabbit

agners commented 1 month ago

This also fixes a behavior difference introduced with #5262: Since #5262, on Supervisor load the IPv4 and IPv6 DNS configuration got cleared when in auto mode. This is not that big of a deal, since users can't actually set manually an IPv4 or IPv6 DNS, but they could have set this through nmcli potentially.

This restores the behavior in that specific instance.

coderabbitai[bot] commented 1 month ago
Walkthrough ## Walkthrough The changes introduce new functions for managing IPv4 and IPv6 connection settings, improving code organization and maintainability. The test suites have been updated to validate DNS settings in both configurations. Additionally, mock services have been enhanced with new properties and a more flexible update mechanism for network connection settings, ensuring accurate and robust testing of the network manager's functionality. ## Changes | File Path | Change Summary | |---------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| | `supervisor/dbus/network/setting/generate.py` | Added `_get_ipv4_connection_settings` and `_get_ipv6_connection_settings` functions for managing connection settings; modified `get_connection_from_interface` to use these new functions. | | `tests/api/test_network.py` | Updated assertions in `test_api_network_vlan` to include checks for new `dns` keys in the `connection` dictionary for both IPv4 and IPv6. | | `tests/dbus/network/setting/test_init.py` | Modified assertions in `test_update` to check for the presence and values of `dns` keys in IPv4 and IPv6 settings. | | `tests/dbus_service_mocks/network_connection_settings.py` | Added `dns` and `dns-data` properties to the mock service; modified the `Update` method to allow flexible updates to settings. | | `tests/host/test_network.py` | Altered assertions in `test_load` to validate specific nameservers and DNS settings for both IPv4 and IPv6 configurations. |

Recent review details **Configuration used: CodeRabbit UI** **Review profile: CHILL**
Commits Files that changed from the base of the PR and between b84682206bb257c2de5d485f9d73483f1a26856a and 40a0ec38515bf390b525a4465abd4528ca6e896f.
Files selected for processing (1) * tests/dbus_service_mocks/network_connection_settings.py (5 hunks)
Files skipped from review as they are similar to previous changes (1) * tests/dbus_service_mocks/network_connection_settings.py
--- Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai title` anywhere in the PR title to generate the title automatically. - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
agners commented 4 weeks ago

Replaced with #5283, which is a rebased and extended version of this PR.