summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2026-02-10 11:48:09 -0600
committerGitHub <noreply@github.com>2026-02-10 11:48:09 -0600
commit4824a493701180b2d9eb37bce6420cf5ccf602c8 (patch)
tree009c8b124bc3851917341098a67edb4ecab3c229 /src
parentd9aa7405a3e0259370b86caa7ea704f0022faf32 (diff)
parent8262f78e0013291f747203e0b3768bb412bf1aed (diff)
downloadvyos-1x-4824a493701180b2d9eb37bce6420cf5ccf602c8.tar.gz
vyos-1x-4824a493701180b2d9eb37bce6420cf5ccf602c8.zip
Merge pull request #4980 from alexandr-san4ez/T7945-current
update-check: T7945: Improve reliability during early boot and error handling
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/system_update-check.py17
-rwxr-xr-xsrc/system/vyos-system-update-check.py2
2 files changed, 18 insertions, 1 deletions
diff --git a/src/conf_mode/system_update-check.py b/src/conf_mode/system_update-check.py
index 7ed736eac..6a07d93a6 100755
--- a/src/conf_mode/system_update-check.py
+++ b/src/conf_mode/system_update-check.py
@@ -15,10 +15,12 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import json
+import requests
from pathlib import Path
from sys import exit
+from vyos.base import Warning
from vyos.config import Config
from vyos.utils.process import call
from vyos import ConfigError
@@ -54,6 +56,21 @@ def verify(config):
if 'url' not in config:
raise ConfigError('URL is required!')
+ url = config['url']
+
+ # Make sure that provided URL is available and responses a valid JSON
+ # otherwise print warning and display type of error (connection, timeout and etc.)
+ try:
+ response = requests.get(url, timeout=10)
+ response.raise_for_status()
+ response.json()
+ except requests.exceptions.RequestException as e:
+ error_type = type(e).__name__
+ Warning(
+ '"system update-check url" has a valid URL but '
+ f'unable to retrieve data from the server: {error_type}'
+ )
+
def generate(config):
# bail out early - looks like removal from running config
diff --git a/src/system/vyos-system-update-check.py b/src/system/vyos-system-update-check.py
index 66a8b0d02..b7d1fc7c5 100755
--- a/src/system/vyos-system-update-check.py
+++ b/src/system/vyos-system-update-check.py
@@ -60,7 +60,7 @@ if __name__ == '__main__':
remote_version = jmespath.search('[0].version', remote_data)
if local_version != remote_version and remote_version:
call(f'wall -n "Update available: {remote_version} \nUpdate URL: {url}"')
- # MOTD used in /run/motd.d/10-update
+ # MOTD used in /run/motd.d/10-vyos-update
motd_file.parent.mkdir(exist_ok=True)
motd_file.write_text(f'---\n'
f'Current version: {local_version}\n'