Limit Supervisor refresh updates (#70075)
parent
1a2a3b5955
commit
ae9315aa29
|
@ -917,7 +917,6 @@ class HassioDataUpdateCoordinator(DataUpdateCoordinator):
|
||||||
|
|
||||||
async def force_data_refresh(self) -> None:
|
async def force_data_refresh(self) -> None:
|
||||||
"""Force update of the addon info."""
|
"""Force update of the addon info."""
|
||||||
await self.hassio.refresh_updates()
|
|
||||||
(
|
(
|
||||||
self.hass.data[DATA_INFO],
|
self.hass.data[DATA_INFO],
|
||||||
self.hass.data[DATA_CORE_INFO],
|
self.hass.data[DATA_CORE_INFO],
|
||||||
|
@ -976,3 +975,18 @@ class HassioDataUpdateCoordinator(DataUpdateCoordinator):
|
||||||
except HassioAPIError as err:
|
except HassioAPIError as err:
|
||||||
_LOGGER.warning("Could not fetch info for %s: %s", slug, err)
|
_LOGGER.warning("Could not fetch info for %s: %s", slug, err)
|
||||||
return (slug, None)
|
return (slug, None)
|
||||||
|
|
||||||
|
async def _async_refresh(
|
||||||
|
self,
|
||||||
|
log_failures: bool = True,
|
||||||
|
raise_on_auth_failed: bool = False,
|
||||||
|
scheduled: bool = False,
|
||||||
|
) -> None:
|
||||||
|
"""Refresh data."""
|
||||||
|
if not scheduled:
|
||||||
|
# Force refreshing updates for non-scheduled updates
|
||||||
|
try:
|
||||||
|
await self.hassio.refresh_updates()
|
||||||
|
except HassioAPIError as err:
|
||||||
|
_LOGGER.warning("Error on Supervisor API: %s", err)
|
||||||
|
await super()._async_refresh(log_failures, raise_on_auth_failed, scheduled)
|
||||||
|
|
|
@ -646,7 +646,8 @@ async def test_device_registry_calls(hass):
|
||||||
|
|
||||||
|
|
||||||
async def test_coordinator_updates(hass, caplog):
|
async def test_coordinator_updates(hass, caplog):
|
||||||
"""Test coordinator."""
|
"""Test coordinator updates."""
|
||||||
|
await async_setup_component(hass, "homeassistant", {})
|
||||||
with patch.dict(os.environ, MOCK_ENVIRON), patch(
|
with patch.dict(os.environ, MOCK_ENVIRON), patch(
|
||||||
"homeassistant.components.hassio.HassIO.refresh_updates"
|
"homeassistant.components.hassio.HassIO.refresh_updates"
|
||||||
) as refresh_updates_mock:
|
) as refresh_updates_mock:
|
||||||
|
@ -656,14 +657,47 @@ async def test_coordinator_updates(hass, caplog):
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
assert refresh_updates_mock.call_count == 1
|
assert refresh_updates_mock.call_count == 1
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"homeassistant.components.hassio.HassIO.refresh_updates",
|
||||||
|
) as refresh_updates_mock:
|
||||||
|
async_fire_time_changed(hass, dt_util.now() + timedelta(minutes=20))
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert refresh_updates_mock.call_count == 0
|
||||||
|
|
||||||
|
with patch(
|
||||||
|
"homeassistant.components.hassio.HassIO.refresh_updates",
|
||||||
|
) as refresh_updates_mock:
|
||||||
|
await hass.services.async_call(
|
||||||
|
"homeassistant",
|
||||||
|
"update_entity",
|
||||||
|
{
|
||||||
|
"entity_id": [
|
||||||
|
"update.home_assistant_core_update",
|
||||||
|
"update.home_assistant_supervisor_update",
|
||||||
|
]
|
||||||
|
},
|
||||||
|
blocking=True,
|
||||||
|
)
|
||||||
|
assert refresh_updates_mock.call_count == 1
|
||||||
|
|
||||||
|
# There is a 10s cooldown on the debouncer
|
||||||
|
async_fire_time_changed(hass, dt_util.now() + timedelta(seconds=10))
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
with patch(
|
with patch(
|
||||||
"homeassistant.components.hassio.HassIO.refresh_updates",
|
"homeassistant.components.hassio.HassIO.refresh_updates",
|
||||||
side_effect=HassioAPIError("Unknown"),
|
side_effect=HassioAPIError("Unknown"),
|
||||||
) as refresh_updates_mock:
|
) as refresh_updates_mock:
|
||||||
async_fire_time_changed(hass, dt_util.now() + timedelta(minutes=5))
|
await hass.services.async_call(
|
||||||
await hass.async_block_till_done()
|
"homeassistant",
|
||||||
assert refresh_updates_mock.call_count == 1
|
"update_entity",
|
||||||
assert (
|
{
|
||||||
"Error fetching hassio data: Error on Supervisor API: Unknown"
|
"entity_id": [
|
||||||
in caplog.text
|
"update.home_assistant_core_update",
|
||||||
|
"update.home_assistant_supervisor_update",
|
||||||
|
]
|
||||||
|
},
|
||||||
|
blocking=True,
|
||||||
)
|
)
|
||||||
|
assert refresh_updates_mock.call_count == 1
|
||||||
|
assert "Error on Supervisor API: Unknown" in caplog.text
|
||||||
|
|
Loading…
Reference in New Issue