From fc2bb6cf47bd7e6e84199e44eef5a70074e8b14e Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Tue, 27 Oct 2020 10:45:26 +0100 Subject: [PATCH] Add Upgrade detail infos (#86) * get update detail info * missing new line at the end * black compliant * flake8 compliant * fix pre-commit * Update tests/api_data/dsm_6/core/const_6_core_upgrade.py * Update tests/api_data/dsm_6/core/const_6_core_upgrade.py Co-authored-by: Quentame --- README.rst | 10 +++++++++ src/synology_dsm/api/core/upgrade.py | 17 +++++++++++++- tests/__init__.py | 4 ++-- tests/api_data/dsm_6/__init__.py | 6 +++-- .../dsm_6/core/const_6_core_upgrade.py | 22 ++++++++++++++++++- tests/test_synology_dsm.py | 5 ++++- 6 files changed, 57 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index 83465a8..e414250 100644 --- a/README.rst +++ b/README.rst @@ -252,6 +252,16 @@ Upgrade usage if upgrade.update_available: do something ... + # get available version string (return None if no update available) + upgrade.available_version + + # get need of reboot (return None if no update available) + upgrade.reboot_needed + + # get need of service restarts (return None if no update available) + upgrade.service_restarts + + Credits / Special Thanks ======================== - https://github.com/florianeinfalt diff --git a/src/synology_dsm/api/core/upgrade.py b/src/synology_dsm/api/core/upgrade.py index 250f380..d00839d 100644 --- a/src/synology_dsm/api/core/upgrade.py +++ b/src/synology_dsm/api/core/upgrade.py @@ -20,5 +20,20 @@ class SynoCoreUpgrade: @property def update_available(self): - """Gets all Upgrade info.""" + """Gets available update info.""" return self._data["update"].get("available") + + @property + def available_version(self): + """Gets available verion info.""" + return self._data["update"].get("version") + + @property + def reboot_needed(self): + """Gets info if reboot is needed.""" + return self._data["update"].get("reboot") + + @property + def service_restarts(self): + """Gets info if services are restarted.""" + return self._data["update"].get("restart") diff --git a/tests/__init__.py b/tests/__init__.py index 40653d0..11bf54b 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -23,7 +23,7 @@ from .api_data.dsm_6 import DSM_6_CORE_SECURITY from .api_data.dsm_6 import DSM_6_CORE_SECURITY_UPDATE_OUTOFDATE from .api_data.dsm_6 import DSM_6_CORE_SHARE from .api_data.dsm_6 import DSM_6_CORE_SYSTEM_DS918_PLUS -from .api_data.dsm_6 import DSM_6_CORE_UPGRADE +from .api_data.dsm_6 import DSM_6_CORE_UPGRADE_TRUE from .api_data.dsm_6 import DSM_6_CORE_UTILIZATION from .api_data.dsm_6 import DSM_6_CORE_UTILIZATION_ERROR_1055 from .api_data.dsm_6 import DSM_6_DOWNLOAD_STATION_INFO_CONFIG @@ -88,7 +88,7 @@ API_SWITCHER = { "CORE_SHARE": DSM_6_CORE_SHARE, "CORE_SYSTEM": DSM_6_CORE_SYSTEM_DS918_PLUS, "CORE_UTILIZATION": DSM_6_CORE_UTILIZATION, - "CORE_UPGRADE": DSM_6_CORE_UPGRADE, + "CORE_UPGRADE": DSM_6_CORE_UPGRADE_TRUE, "STORAGE_STORAGE": { "RAID": DSM_6_STORAGE_STORAGE_DS918_PLUS_RAID5_3DISKS_1VOL, "SHR1": DSM_6_STORAGE_STORAGE_DS213_PLUS_SHR1_2DISKS_2VOLS, diff --git a/tests/api_data/dsm_6/__init__.py b/tests/api_data/dsm_6/__init__.py index 2642944..3734187 100644 --- a/tests/api_data/dsm_6/__init__.py +++ b/tests/api_data/dsm_6/__init__.py @@ -8,7 +8,8 @@ from .core.const_6_core_security import DSM_6_CORE_SECURITY_UPDATE_OUTOFDATE from .core.const_6_core_share import DSM_6_CORE_SHARE from .core.const_6_core_system import DSM_6_CORE_SYSTEM_DS218_PLAY from .core.const_6_core_system import DSM_6_CORE_SYSTEM_DS918_PLUS -from .core.const_6_core_upgrade import DSM_6_CORE_UPGRADE +from .core.const_6_core_upgrade import DSM_6_CORE_UPGRADE_FALSE +from .core.const_6_core_upgrade import DSM_6_CORE_UPGRADE_TRUE from .core.const_6_core_utilization import DSM_6_CORE_UTILIZATION from .core.const_6_core_utilization import DSM_6_CORE_UTILIZATION_ERROR_1055 from .download_station.const_6_download_station_info import ( @@ -69,7 +70,8 @@ __all__ = [ "DSM_6_CORE_SHARE", "DSM_6_CORE_SYSTEM_DS218_PLAY", "DSM_6_CORE_SYSTEM_DS918_PLUS", - "DSM_6_CORE_UPGRADE", + "DSM_6_CORE_UPGRADE_FALSE", + "DSM_6_CORE_UPGRADE_TRUE", "DSM_6_CORE_UTILIZATION", "DSM_6_CORE_UTILIZATION_ERROR_1055", "DSM_6_DOWNLOAD_STATION_INFO_CONFIG", diff --git a/tests/api_data/dsm_6/core/const_6_core_upgrade.py b/tests/api_data/dsm_6/core/const_6_core_upgrade.py index aaf83c6..a1c4ed7 100644 --- a/tests/api_data/dsm_6/core/const_6_core_upgrade.py +++ b/tests/api_data/dsm_6/core/const_6_core_upgrade.py @@ -1,3 +1,23 @@ """DSM 6 SYNO.Core.Upgrade data.""" -DSM_6_CORE_UPGRADE = {"data": {"update": {"available": False}}, "success": True} +DSM_6_CORE_UPGRADE_FALSE = {"data": {"update": {"available": False}}, "success": True} +DSM_6_CORE_UPGRADE_TRUE = { + "data": { + "update": { + "available": True, + "reboot": "now", + "restart": "some", + "type": "nano", + "version": "DSM 6.2.3-25426 Update 2", + "version_details": { + "buildnumber": 25426, + "major": 6, + "micro": 3, + "minor": 2, + "nano": 2, + "os_name": "DSM", + }, + } + }, + "success": True, +} diff --git a/tests/test_synology_dsm.py b/tests/test_synology_dsm.py index de9ccae..d24023a 100644 --- a/tests/test_synology_dsm.py +++ b/tests/test_synology_dsm.py @@ -574,7 +574,10 @@ class TestSynologyDSM(TestCase): """Test upgrade.""" assert self.api.upgrade self.api.upgrade.update() - assert self.api.upgrade.update_available is False + assert self.api.upgrade.update_available + assert self.api.upgrade.available_version == "DSM 6.2.3-25426 Update 2" + assert self.api.upgrade.reboot_needed == "now" + assert self.api.upgrade.service_restarts == "some" def test_utilisation(self): """Test utilisation."""