Skip to content
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

Add manual_only option to addon boot config #5272

Merged
merged 4 commits into from
Aug 27, 2024
Merged

Conversation

mdegat01
Copy link
Contributor

@mdegat01 mdegat01 commented Aug 26, 2024

Proposed change

Some addons like the silabs flasher should never be set to auto-start under any circumstance. Add a manual_only option to boot which allows addon developers to prevent this when the addon requires it.

As this is the first PR that also requires client library changes to support it, updated the Pull Request template to mention that alongside CLI and API Doc.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New feature (which adds functionality to the supervisor)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • The code has been formatted using Ruff (ruff format supervisor tests)
  • Tests have been added to verify that the new code works.

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

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • Introduced a new configuration entity for addon boot management, allowing for enhanced control over boot modes.
    • Added a new property to streamline retrieval of boot configurations.
    • Implemented validation to prevent changes to boot options under specific conditions.
    • Expanded pull request template to improve contributor clarity and checklist comprehensiveness.
  • Bug Fixes

    • Improved handling of boot configurations to ensure expected behavior during updates.
  • Tests

    • Enhanced testing framework with new tests to validate boot configuration logic and API responses related to boot mode changes.
  • Documentation

    • Updated documentation to reflect changes in boot configuration handling and properties.

Copy link

coderabbitai bot commented Aug 26, 2024

Walkthrough

Walkthrough

The changes introduce a new entity, AddonBootConfig, to improve configuration management for addons. Modifications to boot logic ensure that configurations, such as MANUAL_ONLY, are validated and respected across multiple files. Method signatures and docstrings have been updated to reflect these changes, and new test cases have been added to validate functionality and constraints. Additionally, a new configuration option is included in the example YAML file.

Changes

Files Change Summary
supervisor/addons/addon.py, supervisor/addons/model.py Introduced AddonBootConfig, modified boot methods to incorporate validation for MANUAL_ONLY, updated docstrings.
supervisor/addons/validate.py Updated default value for ATTR_BOOT from AddonBoot.AUTO to AddonBootConfig.AUTO.
supervisor/api/addons.py Implemented validation for ATTR_BOOT, raising APIError if set to MANUAL_ONLY.
supervisor/const.py Added AddonBootConfig enumeration class and modified AddonBoot with a new _missing_ method.
tests/addons/test_addon.py, tests/api/test_addons.py Added tests for disk space mock and for manual_only boot configuration behavior in the API.
tests/fixtures/addons/local/example/config.yaml Added new configuration option boot: manual_only.
.github/PULL_REQUEST_TEMPLATE.md Updated template to include links to client library pull requests and expanded checklist items.

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
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • 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 as 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.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

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 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 for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@mdegat01 mdegat01 added the new-feature A new feature label Aug 26, 2024
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Outside diff range, codebase verification and nitpick comments (1)
supervisor/addons/validate.py (1)

325-327: Update docstring to reflect default value for ATTR_BOOT.

The docstring should mention the default value for ATTR_BOOT to improve clarity.

Update the docstring to include the default value:

"""
Migrate addon config.

- ATTR_BOOT: Default is AddonBootConfig.AUTO
"""

supervisor/api/addons.py Outdated Show resolved Hide resolved
@mdegat01 mdegat01 added missing-documentation Added to pull requests that needs a docs, but none is linked need-cli Added to pull requests that need cli changes but none is linked need-client-library Added to pull requests that need client library changes but none is linked and removed missing-documentation Added to pull requests that needs a docs, but none is linked need-cli Added to pull requests that need cli changes but none is linked labels Aug 26, 2024
@mdegat01 mdegat01 removed the missing-documentation Added to pull requests that needs a docs, but none is linked label Aug 26, 2024
@mdegat01 mdegat01 removed the need-client-library Added to pull requests that need client library changes but none is linked label Aug 26, 2024
supervisor/const.py Outdated Show resolved Hide resolved
@@ -38,6 +38,7 @@
- This PR is related to issue:
- Link to documentation pull request:
- Link to cli pull request:
- Link to client library pull request:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah this makes sense, and ideally we also add a pull request template to the client library, which links back.

This is not really related to this PR, so it should be a separate.

Copy link
Contributor Author

@mdegat01 mdegat01 Aug 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean if its important I can. Its pretty small though. And it is sort of related in that I want this PR to link to the Client library change. So I'd end up copying the new template into this PR description anyway

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we squash commits on merge, this won't allow to revert the change later on. We don't revert that often, but that is the main reason why one change per PR is a thing.

supervisor/const.py Show resolved Hide resolved
@home-assistant
Copy link

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍

Learn more about our pull request process.

@home-assistant home-assistant bot marked this pull request as draft August 27, 2024 06:48
@mdegat01 mdegat01 force-pushed the addon-disable-boot-at-startup branch from 1793944 to a5e89fa Compare August 27, 2024 15:21
@mdegat01 mdegat01 marked this pull request as ready for review August 27, 2024 15:21
@home-assistant home-assistant bot requested a review from agners August 27, 2024 15:21
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Outside diff range, codebase verification and nitpick comments (1)
tests/fixtures/addons/local/example/config.yaml (1)

26-26: Document the manual_only configuration option.

The manual_only configuration option is validated and tested in the codebase, as evidenced by its presence in several Python files. However, it is not documented in any Markdown files. Please ensure that this new configuration option is documented to provide clarity and guidance for its usage.

  • Consider adding documentation for manual_only in relevant Markdown files.
Analysis chain

LGTM! Verify documentation and validation.

The new configuration option boot: manual_only is correctly added. Ensure that this new option is documented and validated correctly in the codebase.

The code changes are approved.

Run the following script to verify the documentation and validation of the new configuration option:

Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the documentation and validation of the new configuration option `boot: manual_only`.

# Test: Search for the documentation of the new configuration option. Expect: Occurrences of `manual_only`.
rg --type markdown 'manual_only'

# Test: Search for the validation of the new configuration option. Expect: Occurrences of `manual_only`.
rg --type python 'manual_only'

Length of output: 94


Script:

#!/bin/bash
# Description: Verify the documentation and validation of the new configuration option `boot: manual_only`.

# Test: Search for the documentation of the new configuration option. Expect: Occurrences of `manual_only`.
rg 'manual_only' --glob '*.md'

# Test: Search for the validation of the new configuration option. Expect: Occurrences of `manual_only`.
rg 'manual_only' --glob '*.py'

Length of output: 598

@mdegat01 mdegat01 changed the title Add manual_forced option to addon boot config Add manual_only option to addon boot config Aug 27, 2024
@agners agners merged commit 0177cd9 into main Aug 27, 2024
19 checks passed
@agners agners deleted the addon-disable-boot-at-startup branch August 27, 2024 15:59
@github-actions github-actions bot locked and limited conversation to collaborators Aug 29, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants