summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2023-12-18 00:42:19 -0600
committerJohn Estabrook <jestabro@vyos.io>2023-12-18 12:30:44 -0600
commit4ab72043bc0bf91e6c3e7c4d7c51950872bae677 (patch)
tree2490dbf2777b1aaad7a1ca443d1df3872e384661
parentd3f0d65c54e95e0fba3c11083f3bd80bf6df5c53 (diff)
downloadvyos-1x-4ab72043bc0bf91e6c3e7c4d7c51950872bae677.tar.gz
vyos-1x-4ab72043bc0bf91e6c3e7c4d7c51950872bae677.zip
image-tools: T5831: show system image reverse ordered by date
(cherry picked from commit f19b2acb34e77baeae34aa156ea96d0580a61725)
-rw-r--r--python/vyos/system/grub.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/python/vyos/system/grub.py b/python/vyos/system/grub.py
index 4ebf229a0..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()
+ 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