diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2023-12-30 13:59:07 +0000 |
---|---|---|
committer | Viacheslav Hletenko <v.gletenko@vyos.io> | 2023-12-30 13:59:07 +0000 |
commit | 87202912e871eeafe20ba24c5fcbf696ce5171ff (patch) | |
tree | 5081b0f4ac1c9a1362f388fde8370f7e982a489d | |
parent | 1e46cd606d9d87226fe0400bf3a53bda360808d8 (diff) | |
download | vyos-1x-87202912e871eeafe20ba24c5fcbf696ce5171ff.tar.gz vyos-1x-87202912e871eeafe20ba24c5fcbf696ce5171ff.zip |
T3476: Add option latest to add system image
Add option `latest` for op-mode command `add system image`
If the update check is configured we can get the remote `latest`
version from conrfgure URL
```
set system update-check url 'https://example.com/version.json'
```
This way we can use "latest" option for image update:
```
add system image latest
```
-rw-r--r-- | op-mode-definitions/system-image.xml.in | 2 | ||||
-rwxr-xr-x | src/op_mode/image_installer.py | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/op-mode-definitions/system-image.xml.in b/op-mode-definitions/system-image.xml.in index c131087be..7b5260b4e 100644 --- a/op-mode-definitions/system-image.xml.in +++ b/op-mode-definitions/system-image.xml.in @@ -14,7 +14,7 @@ <properties> <help>Add a new image to the system</help> <completionHelp> - <list>/path/to/vyos-image.iso "http://example.com/vyos-image.iso"</list> + <list>/path/to/vyos-image.iso "http://example.com/vyos-image.iso" latest</list> </completionHelp> </properties> <command>sudo ${vyos_op_scripts_dir}/image_installer.py --action add --image-path "${4}"</command> diff --git a/src/op_mode/image_installer.py b/src/op_mode/image_installer.py index 529b388c8..5cc5b9bdb 100755 --- a/src/op_mode/image_installer.py +++ b/src/op_mode/image_installer.py @@ -31,12 +31,14 @@ from passlib.hosts import linux_context from psutil import disk_partitions from vyos.configtree import ConfigTree +from vyos.configquery import ConfigTreeQuery from vyos.remote import download from vyos.system import disk, grub, image, compat, raid, SYSTEM_CFG_VER from vyos.template import render from vyos.utils.io import ask_input, ask_yes_no, select_entry from vyos.utils.file import chmod_2775 from vyos.utils.process import cmd, run +from vyos.version import get_remote_version # define text messages MSG_ERR_NOT_LIVE: str = 'The system is already installed. Please use "add system image" instead.' @@ -486,6 +488,14 @@ def image_fetch(image_path: str, vrf: str = None, Returns: Path: a path to a local file """ + # Latest version gets url from configured "system update-check url" + if image_path == 'latest': + config = ConfigTreeQuery() + if config.exists('system update-check url'): + configured_url_version = config.value('system update-check url') + remote_url_list = get_remote_version(configured_url_version) + image_path = remote_url_list[0].get('url') + try: # check a type of path if urlparse(image_path).scheme: |