Updater Component is always available and shows on/off wether an update is available

This commit is contained in:
Tobias Haase
2019-07-23 10:16:37 +02:00
parent 7cf0684aa1
commit 79efbaff88
2 changed files with 26 additions and 10 deletions

View File

@@ -21,6 +21,7 @@ import homeassistant.util.dt as dt_util
_LOGGER = logging.getLogger(__name__)
ATTR_RELEASE_NOTES = 'release_notes'
ATTR_NEWEST_VERSION = 'newest_version'
CONF_REPORTING = 'reporting'
CONF_COMPONENT_REPORTING = 'include_used_components'
@@ -95,15 +96,24 @@ async def async_setup(hass, config):
newest = hass.components.hassio.get_homeassistant_version()
# Validate version
update_available = False
if StrictVersion(newest) > StrictVersion(current_version):
_LOGGER.info("The latest available version is %s", newest)
hass.states.async_set(
ENTITY_ID, newest, {ATTR_FRIENDLY_NAME: 'Update Available',
ATTR_RELEASE_NOTES: releasenotes}
)
update_available = True
elif StrictVersion(newest) == StrictVersion(current_version):
_LOGGER.info(
"You are on the latest version (%s) of Home Assistant", newest)
elif StrictVersion(newest) < StrictVersion(current_version):
_LOGGER.warning(
"You are before the latest version (%s) of Home Assistant",
newest)
hass.states.async_set(
ENTITY_ID, 'on' if update_available else 'off', {
ATTR_FRIENDLY_NAME: 'Update Available',
ATTR_RELEASE_NOTES: releasenotes,
ATTR_NEWEST_VERSION: newest}
)
# Update daily, start 1 hour after startup
_dt = dt_util.utcnow() + timedelta(hours=1)

View File

@@ -46,7 +46,7 @@ def mock_get_uuid():
@asyncio.coroutine
def test_new_version_shows_entity_after_hour(
def test_new_version_shows_entity_true(
hass, mock_get_uuid, mock_get_newest_version):
"""Test if new entity is created if new version is available."""
mock_get_uuid.return_value = MOCK_HUUID
@@ -61,11 +61,13 @@ def test_new_version_shows_entity_after_hour(
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1))
yield from hass.async_block_till_done()
assert hass.states.is_state(updater.ENTITY_ID, NEW_VERSION)
assert hass.states.is_state(updater.ENTITY_ID, 'on')
assert hass.states.get(updater.ENTITY_ID).attributes['newest_version'] is \
NEW_VERSION
@asyncio.coroutine
def test_same_version_not_show_entity(
def test_same_version_shows_entity_false(
hass, mock_get_uuid, mock_get_newest_version):
"""Test if new entity is created if new version is available."""
mock_get_uuid.return_value = MOCK_HUUID
@@ -80,7 +82,9 @@ def test_same_version_not_show_entity(
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1))
yield from hass.async_block_till_done()
assert hass.states.get(updater.ENTITY_ID) is None
assert hass.states.is_state(updater.ENTITY_ID, 'off')
assert hass.states.get(updater.ENTITY_ID).attributes['newest_version'] is \
MOCK_VERSION
@asyncio.coroutine
@@ -100,7 +104,7 @@ def test_disable_reporting(hass, mock_get_uuid, mock_get_newest_version):
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1))
yield from hass.async_block_till_done()
assert hass.states.get(updater.ENTITY_ID) is None
assert hass.states.is_state(updater.ENTITY_ID, 'off')
res = yield from updater.get_newest_version(hass, MOCK_HUUID, MOCK_CONFIG)
call = mock_get_newest_version.mock_calls[0][1]
assert call[0] is hass
@@ -184,4 +188,6 @@ def test_new_version_shows_entity_after_hour_hassio(
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(hours=1))
yield from hass.async_block_till_done()
assert hass.states.is_state(updater.ENTITY_ID, "999.0")
assert hass.states.is_state(updater.ENTITY_ID, 'on')
assert hass.states.get(updater.ENTITY_ID).attributes['newest_version'] is \
"999.0"