diff --git a/cilium/datadog_checks/cilium/cilium.py b/cilium/datadog_checks/cilium/cilium.py index 93ef94f21b889..f419d19f12727 100644 --- a/cilium/datadog_checks/cilium/cilium.py +++ b/cilium/datadog_checks/cilium/cilium.py @@ -40,6 +40,8 @@ def __init__(self, name, init_config, instances): 'namespace': 'cilium', 'metrics': metrics, 'prometheus_timeout': instance.get('timeout', 10), + 'metadata_metric_name': 'cilium_version', + 'metadata_label_map': {'version': 'version'}, } ) diff --git a/cilium/tests/common.py b/cilium/tests/common.py index 53e5886550dca..574597f56c129 100644 --- a/cilium/tests/common.py +++ b/cilium/tests/common.py @@ -1,9 +1,11 @@ # (C) Datadog, Inc. 2019-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) +import os + CHECK_NAME = 'cilium' NAMESPACE = 'cilium.' - +CILIUM_VERSION = os.getenv('CILIUM_VERSION') AGENT_DEFAULT_METRICS = [ 'cilium.agent.api_process_time.seconds.count', diff --git a/cilium/tests/fixtures/agent_metrics.txt b/cilium/tests/fixtures/agent_metrics.txt index 196638d0c4518..7cef543add7c1 100644 --- a/cilium/tests/fixtures/agent_metrics.txt +++ b/cilium/tests/fixtures/agent_metrics.txt @@ -1082,3 +1082,6 @@ cilium_unreachable_health_endpoints 0 # HELP cilium_unreachable_nodes Number of nodes that cannot be reached # TYPE cilium_unreachable_nodes gauge cilium_unreachable_nodes 1 +# HELP cilium_version Cilium version +# TYPE cilium_version gauge +cilium_version{version="1.6.90"} 0 \ No newline at end of file diff --git a/cilium/tests/terraform/cilium.yaml b/cilium/tests/terraform/cilium.yaml index 17fd27bc13d5c..7357091a935bf 100644 --- a/cilium/tests/terraform/cilium.yaml +++ b/cilium/tests/terraform/cilium.yaml @@ -381,7 +381,7 @@ spec: key: custom-cni-conf name: cilium-config optional: true - image: "docker.io/cilium/cilium:v1.6" + image: "docker.io/cilium/cilium:v1.6.5" imagePullPolicy: IfNotPresent lifecycle: postStart: @@ -449,7 +449,7 @@ spec: initContainers: - name: wait-for-node-init command: ['sh', '-c', 'until stat /tmp/cilium-bootstrap-time > /dev/null 2>&1; do echo "Waiting on node-init to run..."; sleep 1; done'] - image: "docker.io/cilium/cilium:v1.6" + image: "docker.io/cilium/cilium:v1.6.5" imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /tmp/cilium-bootstrap-time @@ -475,7 +475,7 @@ spec: key: wait-bpf-mount name: cilium-config optional: true - image: "docker.io/cilium/cilium:v1.6" + image: "docker.io/cilium/cilium:v1.6.5" imagePullPolicy: IfNotPresent name: clean-cilium-state securityContext: @@ -757,7 +757,7 @@ spec: key: identity-allocation-mode name: cilium-config optional: true - image: "docker.io/cilium/operator:v1.6" + image: "docker.io/cilium/operator:v1.6.5" imagePullPolicy: IfNotPresent name: cilium-operator livenessProbe: diff --git a/cilium/tests/test_cilium.py b/cilium/tests/test_cilium.py index 189e3f002f656..9eebe79457bd0 100644 --- a/cilium/tests/test_cilium.py +++ b/cilium/tests/test_cilium.py @@ -3,7 +3,7 @@ # Licensed under a 3-clause BSD style license (see LICENSE) from datadog_checks.cilium import CiliumCheck -from .common import ADDL_AGENT_METRICS, AGENT_DEFAULT_METRICS, OPERATOR_AWS_METRICS, OPERATOR_METRICS +from .common import ADDL_AGENT_METRICS, AGENT_DEFAULT_METRICS, CILIUM_VERSION, OPERATOR_AWS_METRICS, OPERATOR_METRICS def test_agent_check(aggregator, agent_instance, mock_agent_data): @@ -22,3 +22,20 @@ def test_operator_check(aggregator, operator_instance, mock_operator_data): for m in OPERATOR_METRICS + OPERATOR_AWS_METRICS: aggregator.assert_metric(m) aggregator.assert_all_metrics_covered() + + +def test_version_metadata(datadog_agent, agent_instance, mock_agent_data): + check = CiliumCheck('cilium', {}, [agent_instance]) + check.check_id = 'test:123' + check.check(agent_instance) + + major, minor, patch = CILIUM_VERSION.split('.') + version_metadata = { + 'version.scheme': 'semver', + 'version.major': major, + 'version.minor': minor, + 'version.patch': patch, + 'version.raw': CILIUM_VERSION, + } + + datadog_agent.assert_metadata('test:123', version_metadata) diff --git a/cilium/tox.ini b/cilium/tox.ini index ea6fc4c53fe1d..c3fb556bbcf27 100644 --- a/cilium/tox.ini +++ b/cilium/tox.ini @@ -21,3 +21,5 @@ passenv = commands = pip install -r requirements.in pytest -v {posargs} +setenv = + CILIUM_VERSION = 1.6.90