Skip to content

Commit e6d3e49

Browse files
authored
Cisco ACI faults require NDM metadata to be enabled. (#20279)
* Cisco ACI faults require NDM metadata to be enabled. * Add collecting faults info log. * Empty commit
1 parent a90006e commit e6d3e49

File tree

5 files changed

+28
-3
lines changed

5 files changed

+28
-3
lines changed

cisco_aci/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ To configure this check for an Agent running on a host:
5555
# - <TENANT_2>
5656

5757
## @param send_ndm_metadata - boolean - optional - default: false
58-
## Set to `true` to enable Network Device Monitoring metadata (for devices and interfaces) to be sent.
58+
## Set to `true` to enable Network Device Monitoring metadata (for devices, interfaces, topology) to be sent
59+
## and to allow Cisco ACI fault collection to be enabled.
5960
#
6061
# send_ndm_metadata: false
6162

cisco_aci/assets/configuration/spec.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ files:
101101
example: default
102102
- name: send_ndm_metadata
103103
description: |
104-
Set to `true` to enable Network Device Monitoring metadata (for devices, interfaces, topology) to be sent.
104+
Set to `true` to enable Network Device Monitoring metadata (for devices, interfaces, topology) to be sent
105+
and to allow Cisco ACI fault collection to be enabled.
105106
value:
106107
type: boolean
107108
example: False

cisco_aci/datadog_checks/cisco_aci/data/conf.yaml.example

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ instances:
131131
# namespace: default
132132

133133
## @param send_ndm_metadata - boolean - optional - default: false
134-
## Set to `true` to enable Network Device Monitoring metadata (for devices, interfaces, topology) to be sent.
134+
## Set to `true` to enable Network Device Monitoring metadata (for devices, interfaces, topology) to be sent
135+
## and to allow Cisco ACI fault collection to be enabled.
135136
#
136137
# send_ndm_metadata: false
137138

cisco_aci/datadog_checks/cisco_aci/faults.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,28 @@ def __init__(self, check, api, instance, namespace):
3232
self.send_log = check.send_log
3333
self.write_persistent_cache = check.write_persistent_cache
3434

35+
# Config for submitting device/interface metadata to NDM
36+
self.send_ndm_metadata = self.instance.get('send_ndm_metadata', False)
3537
# Config for submitting faultInst faults as logs
3638
self.send_faultinst_faults = self.instance.get('send_faultinst_faults', False)
3739
# Config for submitting faultDelegate faults as logs
3840
self.send_faultdelegate_faults = self.instance.get('send_faultdelegate_faults', False)
3941

42+
def ndm_metadata_enabled(self):
43+
return self.send_ndm_metadata
44+
4045
def faultinst_faults_enabled(self):
4146
return self.send_faultinst_faults
4247

4348
def faultdelegate_faults_enabled(self):
4449
return self.send_faultdelegate_faults
4550

4651
def collect(self):
52+
if self.faultinst_faults_enabled() or self.faultdelegate_faults_enabled():
53+
if not self.ndm_metadata_enabled():
54+
self.log.warning("NDM metadata must be enabled (send_ndm_metadata) to collect faults")
55+
return
56+
self.log.info("collecting faults")
4757
if self.faultinst_faults_enabled():
4858
data = self.read_persistent_cache("max_timestamp_{}".format(Faults.FAULTINST_KEY))
4959
max_timestamp = from_json(data) if data else None

cisco_aci/tests/test_faults.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,15 @@ def test_faults_mocked(aggregator, datadog_agent):
1919
check.check({})
2020
check.check({}) # Run twice to exercise the max_timestamp logic
2121
datadog_agent.assert_logs(check.check_id, EXPECTED_FAULT_LOGS)
22+
23+
24+
def test_faults_ndm_metadata_false_mocked(aggregator, datadog_agent):
25+
config_without_ndm = common.CONFIG_WITH_TAGS.copy()
26+
config_without_ndm['send_ndm_metadata'] = False
27+
check = CiscoACICheck(common.CHECK_NAME, {}, [config_without_ndm])
28+
api = Api(common.ACI_URLS, check.http, common.USERNAME, password=common.PASSWORD, log=check.log)
29+
api.wrapper_factory = common.FakeFaultsSessionWrapper
30+
check._api_cache[hash_mutable(config_without_ndm)] = api
31+
32+
check.check({})
33+
datadog_agent.assert_logs(check.check_id, [])

0 commit comments

Comments
 (0)