diff --git a/pnp/CHANGELOG b/pnp/CHANGELOG index 4ddcdfb2f3f2c0691543d6404a947b08de31a420..a21e9b4766f9d8aae0b683911bd02d916ecb2d77 100644 --- a/pnp/CHANGELOG +++ b/pnp/CHANGELOG @@ -25,3 +25,4 @@ changed to load settings from config file (open-pnp.toml by default) in the SETTINGS.__init__ don't exit if cfg_file not found (not strictly needed, can all set viy cli), just print a warning fixed: --config-file option (was cfg_file instead of config-file) +2023-04-17: fixed device update check use version instead of image diff --git a/pnp/images.toml b/pnp/images.toml index abdec3943f8931b9603b7bdfc93e957ad0a2aa2a..6d9633e6089300f22a22e1b43daec911ced95e1e 100644 --- a/pnp/images.toml +++ b/pnp/images.toml @@ -57,4 +57,9 @@ version = "15.2(7)E7" md5 = "11f9750e99be42792eddef7268e58e54" size = 16260096 models = ["WS-C2960L-24TS-LL"] - \ No newline at end of file + +["c2960s-universalk9-mz.152-2.E9.bin"] +version = "15.2(2)E9" +md5 = "EA604D030B378B6C5C3DDA3D501AC2F5" +size = 16800768 +models = ["WS-C2960S-F48TS-L", "WS-C2960S-F24TS-L"] \ No newline at end of file diff --git a/pnp/open-pnp.py b/pnp/open-pnp.py index 6e622746bf8c08eaf95d7a683f722b433e46fe38..2e3b7d64bebde1eb6179f7bb242a5191064385fa 100755 --- a/pnp/open-pnp.py +++ b/pnp/open-pnp.py @@ -41,7 +41,7 @@ # 2023-32-07: changed '_' in cli options to '-' -> better readable/more bash like # 2023-03-13: added '--no-default-cfg' option # 2023-04-11: added flask options to remove whitespaces by default, changed version format (major.minor.micro-date) - +# 2023-04-17: fixed device update check use version instead of image # # pip install flask xmltodict requests ifaddr tomli # @@ -268,7 +268,7 @@ def update_device_info(data: Dict[str, Any]): udi = data['pnp']['@udi'] device = devices[udi] - device.version = data['pnp']['response']['imageInfo']['versionString'] + device.version = data['pnp']['response']['imageInfo']['versionString'].strip() device.image = data['pnp']['response']['imageInfo']['imageFile'].split(':')[1] device.refresh_data = False device.last_contact = strftime(SETTINGS.time_format) @@ -284,7 +284,7 @@ def update_device_info(data: Dict[str, Any]): def check_update(udi: str): device = devices[udi] - if device.image == device.target_image.image: + if device.version == device.target_image.version: device.pnp_flow = PNPFLOW.UPDATE_DOWN else: device.pnp_flow = PNPFLOW.UPDATE_NEEDED diff --git a/pnp/open_pnp_classes.py b/pnp/open_pnp_classes.py index fd7f3d4c94f2e9bd526e42907394edaf15bc56e3..2688fef0d48e4ba7ea1b6bd33107f8de81db1e0c 100644 --- a/pnp/open_pnp_classes.py +++ b/pnp/open_pnp_classes.py @@ -35,6 +35,7 @@ class ErrorCodes: 1816: 'Error verifying checksum for Image', 1829: 'Image copy was unsuccessful', 1803: 'Source file not found', + 1817: 'Running Image checksum same as provided checksum. Upgrade not needed', } def __init__(self): @@ -52,6 +53,7 @@ class ErrorCodes: self.PNP_ERROR_BAD_CHECKSUM = 1816 self.PNP_ERROR_IMAGE_COPY_UNSUCCESSFUL = 1829 self.PNP_ERROR_FILE_NOT_FOUND = 1803 + self.PNP_ERROR_MD5_IDENTICAL = 1817 def readable(self, error_code: int): return self.__readable.get(error_code, f'unknown: {error_code}')