From 7b8a03b5f272603891893dd7623621b927ebb81d Mon Sep 17 00:00:00 2001 From: DevTekVE Date: Fri, 26 Jul 2024 09:24:27 +0000 Subject: [PATCH] Add new parameters for enabling GitLab runner and Sunnylink uploader --- .gitlab-ci.yml | 4 ++-- common/params.cc | 2 ++ system/manager/manager.py | 2 ++ system/manager/process_config.py | 25 ++++++++++++------------- system/manager/sunnylink.py | 5 +++++ 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da0a0d4bc9..a2c27da614 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,13 +30,13 @@ default: - 'git config --global user.name "${GIT_CONFIG_USER_NAME}"' -workflow: # If running on any branch other than main, use the `aws-datacontracts-dev` account; otherwise use `aws-datacontracts` +workflow: # If running on any branch other than main. rules: # We are an MR, but it's a draft, we won't proceed with anything. - if: '$CI_MERGE_REQUEST_TITLE =~ /^wip:/i || $CI_MERGE_REQUEST_TITLE =~ /^draft:/i' when: never # We are a merge request - - if: $CI_MERGE_REQUEST_IID #|| $CI_COMMIT_REF_NAME == "gitlab-pipelines" # TBD once merged + - if: $CI_MERGE_REQUEST_IID variables: EXTRA_VERSION_IDENTIFIER: "-${CI_PIPELINE_IID}" NEW_BRANCH: ${CI_COMMIT_REF_NAME}-prebuilt diff --git a/common/params.cc b/common/params.cc index 054c5d2355..86f18a0a5e 100644 --- a/common/params.cc +++ b/common/params.cc @@ -336,6 +336,8 @@ std::unordered_map keys = { {"SunnylinkCache_Users", PERSISTENT}, {"SunnylinkCache_Roles", PERSISTENT}, + {"EnableGitlabRunner", PERSISTENT | BACKUP}, + {"EnableSunnylinkUploader", PERSISTENT | BACKUP}, // PFEIFER - MAPD {{ {"MapdVersion", PERSISTENT}, diff --git a/system/manager/manager.py b/system/manager/manager.py index 388198736c..032fc0a667 100755 --- a/system/manager/manager.py +++ b/system/manager/manager.py @@ -117,6 +117,8 @@ def manager_init() -> None: ("CustomDrivingModel", "0"), ("DrivingModelGeneration", "4"), ("LastSunnylinkPingTime", "0"), + ("EnableGitlabRunner", "0"), + ("EnableSunnylinkUploader", "0"), ] if not PC: default_params.append(("LastUpdateTime", datetime.datetime.now(datetime.UTC).replace(tzinfo=None).isoformat().encode('utf8'))) diff --git a/system/manager/process_config.py b/system/manager/process_config.py index 8818d3b851..a718ea021b 100644 --- a/system/manager/process_config.py +++ b/system/manager/process_config.py @@ -6,7 +6,7 @@ from openpilot.system.hardware import PC, TICI from openpilot.selfdrive.modeld.custom_model_metadata import CustomModelMetadata, ModelCapabilities from openpilot.system.manager.process import PythonProcess, NativeProcess, DaemonProcess from openpilot.system.mapd_manager import MAPD_PATH, COMMON_DIR -from openpilot.system.manager.sunnylink import sunnylink_need_register, sunnylink_ready +from openpilot.system.manager.sunnylink import sunnylink_need_register, sunnylink_ready, use_sunnylink_uploader WEBCAM = os.getenv("USE_WEBCAM") is not None @@ -44,6 +44,10 @@ def only_onroad(started: bool, params, CP: car.CarParams) -> bool: def only_offroad(started, params, CP: car.CarParams) -> bool: return not started +def use_gitlab_runner(started, params, CP: car.CarParams) -> bool: + return (not PC and params.get_bool("EnableGitlabRunner") and only_offroad(started, params, CP) + and os.path.exists("./gitlab_runner.sh")) + def model_use_nav(started, params, CP: car.CarParams) -> bool: custom_model_metadata = CustomModelMetadata(params=params, init_only=True) return started and custom_model_metadata.valid and custom_model_metadata.capabilities & ModelCapabilities.NoO @@ -56,6 +60,10 @@ def sunnylink_need_register_shim(started, params, CP: car.CarParams) -> bool: """Shim for sunnylink_need_register to match the process manager signature.""" return sunnylink_need_register(params) +def use_sunnylink_uploader_shim(started, params, CP: car.CarParams) -> bool: + """Shim for use_sunnylink_uploader to match the process manager signature.""" + return use_sunnylink_uploader(params) and os.path.exists("../loggerd/sunnylink_uploader.py") + procs = [ DaemonProcess("manage_athenad", "system.athena.manage_athenad", "AthenadPid"), @@ -112,21 +120,12 @@ procs = [ PythonProcess("webrtcd", "system.webrtc.webrtcd", notcar), PythonProcess("webjoystick", "tools.bodyteleop.web", notcar), + # Sunnypilot devs + NativeProcess("gitlab_runner_start", "system/manager", ["./gitlab_runner.sh", "start"], use_gitlab_runner, sigkill=False), # Sunnylink <3 DaemonProcess("manage_sunnylinkd", "system.athena.manage_sunnylinkd", "SunnylinkdPid"), PythonProcess("sunnylink_registration", "system.manager.sunnylink", sunnylink_need_register_shim), + PythonProcess("sunnylink_uploader", "system.loggerd.sunnylink_uploader", use_sunnylink_uploader_shim), ] -if os.path.exists("../loggerd/sunnylink_uploader.py"): - procs += [ - PythonProcess("sunnylink_uploader", "system.loggerd.sunnylink_uploader", sunnylink_ready_shim), - ] - -if os.path.exists("./gitlab_runner.sh") and not PC: - # Only devs! - procs += [ - NativeProcess("gitlab_runner_start", "system/manager", ["./gitlab_runner.sh", "start"], only_offroad, sigkill=False), - NativeProcess("gitlab_runner_stop", "system/manager", ["./gitlab_runner.sh", "stop"], only_onroad, sigkill=False) - ] - managed_processes = {p.name: p for p in procs} diff --git a/system/manager/sunnylink.py b/system/manager/sunnylink.py index 84161fb817..10a5f95a3d 100755 --- a/system/manager/sunnylink.py +++ b/system/manager/sunnylink.py @@ -27,6 +27,11 @@ def sunnylink_ready(params=Params()) -> bool: return is_sunnylink_enabled and is_registered +def use_sunnylink_uploader(params) -> bool: + """Check if the device is ready to use Sunnylink and the uploader is enabled.""" + return sunnylink_ready(params) and params.get_bool("EnableSunnylinkUploader") + + def sunnylink_need_register(params=Params()) -> bool: """Check if the device needs to be registered with Sunnylink.""" is_sunnylink_enabled, is_registered = get_sunnylink_status(params)