diff --git a/meta-digi-containers/README.md b/meta-digi-containers/README.md index e28de3543..2da5b4d7b 100644 --- a/meta-digi-containers/README.md +++ b/meta-digi-containers/README.md @@ -91,6 +91,24 @@ This generates: - `./flutter-demo_artifact_podman_ccmp25-dvk.tar.gz` +## Digi Remote Manager metrics support + +`dey-image-container-manager` includes `cc-container-mng` that has the capability to +publish container statistics through the local CCCS Python API. +For generated DCPs, per-container DRM sampling is enabled +through `registration_defaults.stats_publish` in the artifact manifest. +The image recipe generates the DCP automatically from the following variables: + +- `CONTAINER_STATS_PUBLISH_ENABLED` +- `CONTAINER_STATS_PUBLISH_SAMPLE_INTERVAL` + +Example: + +```conf +CONTAINER_STATS_PUBLISH_ENABLED = "true" +CONTAINER_STATS_PUBLISH_SAMPLE_INTERVAL = "30" +``` + ## Layer Scope Main recipes: @@ -267,6 +285,8 @@ Relevant variables: - `CONTAINER_PACKAGE_ID` - `CONTAINER_ARTIFACT_VERSION` - `CONTAINER_CREATE_ARGS_PODMAN` +- `CONTAINER_STATS_PUBLISH_ENABLED` +- `CONTAINER_STATS_PUBLISH_SAMPLE_INTERVAL` - `CONTAINER_FIRMWARE_VERSIONS` - `CONTAINER_DEVICE_TYPES_JSON` - `CONTAINER_ARTIFACT_DESCRIPTION` diff --git a/meta-digi-containers/recipes-core/images/dey-image-container-artifact.inc b/meta-digi-containers/recipes-core/images/dey-image-container-artifact.inc index 8c4ffbc61..fe1bb8e46 100644 --- a/meta-digi-containers/recipes-core/images/dey-image-container-artifact.inc +++ b/meta-digi-containers/recipes-core/images/dey-image-container-artifact.inc @@ -53,6 +53,8 @@ do_image_container_artifacts() { CREATE_ARGS="${create_args}" \ AUTOSTART="${CONTAINER_AUTOSTART}" \ MONITOR="${CONTAINER_MONITOR}" \ + STATS_PUBLISH_ENABLED="${CONTAINER_STATS_PUBLISH_ENABLED}" \ + STATS_PUBLISH_SAMPLE_INTERVAL="${CONTAINER_STATS_PUBLISH_SAMPLE_INTERVAL}" \ RESTART_ENABLED="${CONTAINER_RESTART_ENABLED}" \ RESTART_MAX_RETRIES="${CONTAINER_RESTART_MAX_RETRIES}" \ RESTART_WINDOW="${CONTAINER_RESTART_WINDOW}" \ @@ -64,7 +66,7 @@ do_image_container_artifacts() { LABELS_JSON="${CONTAINER_ARTIFACT_LABELS_JSON}" \ python3 -c 'import json, os, sys; \ parse_bool = lambda name: os.environ[name].strip().lower() == "true"; \ -payload = {"package_id": os.environ["PACKAGE_ID"], "version": os.environ["VERSION"], "runtime": os.environ["RUNTIME"], "registration_defaults": {"autostart": parse_bool("AUTOSTART"), "monitor": parse_bool("MONITOR"), "restart": {"enabled": parse_bool("RESTART_ENABLED"), "max_retries": int(os.environ["RESTART_MAX_RETRIES"]), "window": int(os.environ["RESTART_WINDOW"]), "retry_delay": int(os.environ["RESTART_RETRY_DELAY"]) } }, "device_types": json.loads(os.environ["DEVICE_TYPES_JSON"]), "firmware_versions": os.environ["FIRMWARE_VERSIONS"], "build_id": os.environ["BUILD_ID"], "description": os.environ["DESCRIPTION"], "labels": json.loads(os.environ["LABELS_JSON"])}; \ +payload = {"package_id": os.environ["PACKAGE_ID"], "version": os.environ["VERSION"], "runtime": os.environ["RUNTIME"], "registration_defaults": {"autostart": parse_bool("AUTOSTART"), "monitor": parse_bool("MONITOR"), "stats_publish": {"enabled": parse_bool("STATS_PUBLISH_ENABLED"), "sample_interval_s": int(os.environ["STATS_PUBLISH_SAMPLE_INTERVAL"])}, "restart": {"enabled": parse_bool("RESTART_ENABLED"), "max_retries": int(os.environ["RESTART_MAX_RETRIES"]), "window": int(os.environ["RESTART_WINDOW"]), "retry_delay": int(os.environ["RESTART_RETRY_DELAY"]) } }, "device_types": json.loads(os.environ["DEVICE_TYPES_JSON"]), "firmware_versions": os.environ["FIRMWARE_VERSIONS"], "build_id": os.environ["BUILD_ID"], "description": os.environ["DESCRIPTION"], "labels": json.loads(os.environ["LABELS_JSON"])}; \ create_args = os.environ["CREATE_ARGS"].strip(); \ payload.update({"create_args": create_args} if create_args else {}); \ open(sys.argv[1], "w", encoding="utf-8").write(json.dumps(payload, indent=2) + "\n")' \ diff --git a/meta-digi-containers/recipes-core/images/dey-image-container.bb b/meta-digi-containers/recipes-core/images/dey-image-container.bb index 5d259673d..411372725 100644 --- a/meta-digi-containers/recipes-core/images/dey-image-container.bb +++ b/meta-digi-containers/recipes-core/images/dey-image-container.bb @@ -69,6 +69,8 @@ CONTAINER_ARTIFACT_LABELS_JSON ?= "{}" # monitor and (auto/re)start configuration CONTAINER_AUTOSTART ?= "true" CONTAINER_MONITOR ?= "true" +CONTAINER_STATS_PUBLISH_ENABLED ?= "true" +CONTAINER_STATS_PUBLISH_SAMPLE_INTERVAL ?= "30" CONTAINER_RESTART_ENABLED ?= "true" CONTAINER_RESTART_MAX_RETRIES ?= "3" CONTAINER_RESTART_WINDOW ?= "60"