diff options
| author | John Estabrook <jestabro@vyos.io> | 2023-12-18 00:42:19 -0600 | 
|---|---|---|
| committer | John Estabrook <jestabro@vyos.io> | 2023-12-18 11:56:30 -0600 | 
| commit | f19b2acb34e77baeae34aa156ea96d0580a61725 (patch) | |
| tree | 805c70e9da670598a042bde4e9efe78a975f5ae0 | |
| parent | 7036c761e74bcd48e3ba714dec4545208ee0e313 (diff) | |
| download | vyos-1x-f19b2acb34e77baeae34aa156ea96d0580a61725.tar.gz vyos-1x-f19b2acb34e77baeae34aa156ea96d0580a61725.zip  | |
image-tools: T5831: show system image reverse ordered by date
| -rw-r--r-- | python/vyos/system/grub.py | 16 | 
1 files changed, 12 insertions, 4 deletions
diff --git a/python/vyos/system/grub.py b/python/vyos/system/grub.py index 2692aaea1..61a9c7749 100644 --- a/python/vyos/system/grub.py +++ b/python/vyos/system/grub.py @@ -19,7 +19,7 @@ from typing import Union  from uuid import uuid5, NAMESPACE_URL, UUID  from vyos.template import render -from vyos.utils.process import cmd +from vyos.utils.process import cmd, rc_cmd  from vyos.system import disk  # Define variables @@ -131,14 +131,22 @@ def version_list(root_dir: str = '') -> list[str]:      Returns:          list: A list with versions names + +    N.B. coreutils stat reports st_birthtime, but not available in +    Path.stat()/os.stat()      """      if not root_dir:          root_dir = disk.find_persistence()      versions_files = Path(f'{root_dir}/{GRUB_DIR_VYOS_VERS}').glob('*.cfg') -    versions_list: list[str] = [] +    versions_order: dict[str, int] = {}      for file in versions_files: -        versions_list.append(file.stem) -    versions_list.sort(reverse=True) +        p = Path(root_dir).joinpath('boot').joinpath(file.stem) +        command = f'stat -c %W {p.as_posix()}' +        rc, out = rc_cmd(command) +        if rc == 0: +            versions_order[file.stem] = int(out) +    versions_order = sorted(versions_order, key=versions_order.get, reverse=True) +    versions_list: list[str] = list(versions_order)      return versions_list  | 
