From a86a549b5db90c4dea4c2f0375432076c2f8feaa Mon Sep 17 00:00:00 2001 From: Greg Hogan Date: Wed, 26 May 2021 18:33:27 -0700 Subject: [PATCH] athena: version endpoint (#21045) * athena: version endpoint * get_version function * more explicit version validation old-commit-hash: ea0f7e27979fc2e39909c778b75f138fd3113a3b --- selfdrive/athena/athenad.py | 12 +++++++++++- selfdrive/athena/tests/test_athenad.py | 8 ++++++++ selfdrive/version.py | 7 +++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index 5d308f7a77..c6d6b8f69b 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -30,7 +30,7 @@ from selfdrive.loggerd.config import ROOT from selfdrive.loggerd.xattr_cache import getxattr, setxattr from selfdrive.swaglog import cloudlog, SWAGLOG_DIR import selfdrive.crash as crash -from selfdrive.version import dirty, origin, branch, commit +from selfdrive.version import dirty, origin, branch, commit, get_version, get_git_remote, get_git_branch, get_git_commit ATHENA_HOST = os.getenv('ATHENA_HOST', 'wss://athena.comma.ai') HANDLER_THREADS = int(os.getenv('HANDLER_THREADS', "4")) @@ -132,6 +132,16 @@ def getMessage(service=None, timeout=1000): return ret.to_dict() +@dispatcher.add_method +def getVersion(): + return { + "version": get_version(), + "remote": get_git_remote(), + "branch": get_git_branch(), + "commit": get_git_commit(), + } + + @dispatcher.add_method def setNavDestination(latitude=0, longitude=0): destination = { diff --git a/selfdrive/athena/tests/test_athenad.py b/selfdrive/athena/tests/test_athenad.py index 102ca063db..4002f60d19 100755 --- a/selfdrive/athena/tests/test_athenad.py +++ b/selfdrive/athena/tests/test_athenad.py @@ -174,6 +174,14 @@ class TestAthenadMethods(unittest.TestCase): keys = dispatcher["getSshAuthorizedKeys"]() self.assertEqual(keys, MockParams().params["GithubSshKeys"].decode('utf-8')) + def test_getVersion(self): + resp = dispatcher["getVersion"]() + keys = ["version", "remote", "branch", "commit"] + self.assertEqual(list(resp.keys()), keys) + for k in keys: + self.assertIsInstance(resp[k], str, f"{k} is not a string") + self.assertTrue(len(resp[k]) > 0, f"{k} has no value") + def test_jsonrpc_handler(self): end_event = threading.Event() thread = threading.Thread(target=athenad.jsonrpc_handler, args=(end_event,)) diff --git a/selfdrive/version.py b/selfdrive/version.py index b06841832b..4289d5ca93 100644 --- a/selfdrive/version.py +++ b/selfdrive/version.py @@ -39,9 +39,12 @@ def get_git_remote(default: Optional[str] = None) -> Optional[str]: return run_cmd_default(["git", "config", "--get", "remote.origin.url"], default=default) -with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "common", "version.h")) as _versionf: - version = _versionf.read().split('"')[1] +def get_version(): + with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "common", "version.h")) as _versionf: + version = _versionf.read().split('"')[1] + return version +version = get_version() prebuilt = os.path.exists(os.path.join(BASEDIR, 'prebuilt')) training_version: bytes = b"0.2.0"