* Schedule periodic coordinator updates as background tasks.
Currently, the coordinator's periodic refreshes delay startup because they are not scheduled as background tasks. We will wait if the startup takes long enough for the first planned refresh. Another coordinator's scheduled refresh will be fired on busy systems, further delaying the startup. This chain of events results in the startup taking a long time and hitting the safety timeout because too many coordinators are refreshing.
This case can also happen with scheduled entity refreshes, but it's less common. A future PR will address that case.
* periodic_tasks
* periodic_tasks
* periodic_tasks
* merge
* merge
* merge
* merge
* merge
* fix test that call the sync api from async
* one more place
* cannot chain
* async_run_periodic_hass_job
* sun and pattern time changes from automations also block startup
* Revert "sun and pattern time changes from automations also block startup"
This reverts commit 6de2defa05.
* make sure polling is cancelled when config entry is unloaded
* Revert "Revert "sun and pattern time changes from automations also block startup""
This reverts commit e8f12aad55.
* remove DisabledError from homewizard test as it relies on a race
* fix race
* direct coverage
* Add system_health to the hassio pre-imports to avoid a late executor job
`2024-03-05 17:01:33.034 DEBUG (MainThread) [homeassistant.loader] Importing platforms for hassio executor=[system_health] loop=[] took 0.12s`
This one does not take that much time but it happens at a time where
the import executor is the most busy during startup
* key
* move patch as its too early now
* Split up hassio coordinator and data into new file to allow preload
Since we cannot mark hassio as having a config_flow, it will
not get preloaded and since cloud will almost always load right
after it and block the import executor, we want to preload
the hassio config_flow and platform modules so the other
dependants can continue on while cloud is being imported
to not delay startup
* tweak
* tweak
* Add LED control support to Home Assistant Green
* Add strings.json
* Sort alphabetically
* Reorder LED schema
* Improve test coverage
* Apply suggestions from code review
Co-authored-by: Stefan Agner <stefan@agner.ch>
* Sort + fix test
* Remove reboot menu
---------
Co-authored-by: Stefan Agner <stefan@agner.ch>
* Validate slug in addon services
* Move validator into hassio component
* Fixes from mypy
* Fix test for changes
* Adjust fixtures to current supervisor
* Fix call counts after fixture adjustment
* Increase coverage
* Update return signature of service calls
* Add timeout error handling in websocket api for service calls
* Update recorder tests to remove assertion on service call
* Remove timeout behavior and update callers that depend on it today
* Fix tests
* Add missing else
* await coro directly
* Fix more tests
* Update the intent task to use wait instead of timeout
* Remove script service call limits and limit constants
* Update tests that depend on service call limits
* Use wait instead of wait_for and add test
* Update homeassistant/helpers/intent.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add LED control support to Home Assistant Yellow
* Fix the handlers
* Remove switch platform
* Allow configuring LED settings from the options flow
* Add missing translations
* Add tests
* Add tests
* Only wait for import flows to initialize at setup
* Update hassio tests
* Update hassio tests
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add add-on store info command
* Use add-on store info command in zwave_js
* Fix init tests
* Update tests
* Fix method for addon store info
* Fix response parsing
* Fix store addon installed response parsing
* Remove addon info log that can contain network keys
* Add supervisor store addon info test
* Default to version None if add-on not installed
Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
* Add diagnostics platform to the Supervisor integration
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Convert persistent notification tests to async
* Create/dismiss persistent notifications in exposed functions, not service calls
* Fix notify persistent_notification
* Remove setting up persistent_notification
* Drop more setups
* Empty methods
* Undeprecate sync methods because too big task
* Fix setup clearing notifications
* Fix a bunch of tests
* Fix more tests
* Uno mas
* Test persistent notification events
* Clean up stale comment
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Unused pylint suppression cleanups
* Remove outdated pylint bug references
* Add flake8-noqa config and note to run it every now and then
* Add codes to noqa's
* Unused noqa cleanups
* add addon_update service, use config flow to set up config entry, create disabled sensors
* move most of entity logic to common entity class, improve device info, get rid of config_flow user step
* fix setup logic
* additional refactor
* fix refactored logic
* fix config flow tests
* add test for addon_update service and get_addons_info
* add entry setup and unload test and fix update coordinator
* handle if entry setup calls unload
* return nothing for coordinator if entry is being reloaded because coordinator will get recreated anyway
* remove entry when HA instance is no longer hassio and add corresponding test
* handle adding and removing device registry entries
* better config entry reload logic
* fix comment
* bugfix
* fix flake error
* switch pass to return
* use repository attribute for model and fallback to url
* use custom 'system' source since hassio source is misleading
* Update homeassistant/components/hassio/entity.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* update remove addons function name
* Update homeassistant/components/hassio/__init__.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* fix import
* pop coordinator after unload
* additional fixes
* always pass in sensor name when creating entity
* prefix one more function with async and fix tests
* use supervisor info for addons since list is already filtered on what's installed
* remove unused service
* update sensor names
* remove added handler function
* use walrus
* add OS device and sensors
* fix
* re-add addon_update service schema
* add more test coverage and exclude entities from tests
* check if instance is using hass OS in order to create OS entities
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Disambiguate HTTPUnauthorized on user/password validation
The HA core API usually returns 401 when the request does not
have proper authentication tokens or they have expired.
However the user/password validation endpoint may also return
401 when the given user/password is invalid.
The supervisor is currently unable to distinguish both scenarios,
and it needs to.
See https://github.com/home-assistant/supervisor/issues/2408
* Return 404 if user& password are not found/valid
* Fix test for invalid user/password
* Part 1 of 2 (no breaking changes in part 1).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
Frontend Changes (home-assistant/frontend#6068)
* Address review comments
* bump timeout to 1800s, adjust comment
* bump timeout to 4h
* remove timeout failsafe
* and the test