Skip to content

Commit 2dc6b77

Browse files
committed
Add unit test for device metadata, update fixture
1 parent eece332 commit 2dc6b77

File tree

2 files changed

+302
-1
lines changed

2 files changed

+302
-1
lines changed
Lines changed: 208 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,208 @@
1-
{"totalCount":"7","imdata":[{"fabricNode":{"attributes":{"adSt":"on","annotation":"","childAction":"","delayedHeartbeat":"no","dn":"topology/pod-1/node-101","extMngdBy":"","fabricSt":"active","id":"101","lastStateModTs":"2018-05-29T16:53:17.789-07:00","lcOwn":"local","modTs":"2018-05-29T16:53:58.209-07:00","model":"N9K-C93180YC-FX","monPolDn":"uni/fabric/monfab-default","name":"leaf101","nameAlias":"","nodeType":"unspecified","role":"leaf","serial":"FDO20440TS1","status":"","uid":"0","vendor":"Cisco Systems, Inc","version":""}}},{"fabricNode":{"attributes":{"adSt":"on","annotation":"","childAction":"","delayedHeartbeat":"no","dn":"topology/pod-1/node-102","extMngdBy":"","fabricSt":"active","id":"102","lastStateModTs":"2018-05-29T16:53:17.790-07:00","lcOwn":"local","modTs":"2018-05-29T16:53:58.207-07:00","model":"N9K-C93180YC-FX","monPolDn":"uni/fabric/monfab-default","name":"leaf102","nameAlias":"","nodeType":"unspecified","role":"leaf","serial":"FDO20510HCA","status":"","uid":"0","vendor":"Cisco Systems, Inc","version":""}}},{"fabricNode":{"attributes":{"adSt":"on","annotation":"","childAction":"","delayedHeartbeat":"no","dn":"topology/pod-1/node-202","extMngdBy":"","fabricSt":"active","id":"202","lastStateModTs":"2018-05-29T16:53:17.892-07:00","lcOwn":"local","modTs":"2018-05-29T16:53:58.202-07:00","model":"N9K-C9336PQ","monPolDn":"uni/fabric/monfab-default","name":"spine202","nameAlias":"","nodeType":"unspecified","role":"spine","serial":"SAL2014N5T7","status":"","uid":"0","vendor":"Cisco Systems, Inc","version":""}}},{"fabricNode":{"attributes":{"adSt":"on","annotation":"","childAction":"","delayedHeartbeat":"no","dn":"topology/pod-1/node-3","extMngdBy":"","fabricSt":"unknown","id":"3","lastStateModTs":"1969-12-31T17:00:00.000-07:00","lcOwn":"local","modTs":"2018-05-10T19:01:36.971-07:00","model":"APIC-SERVER-M1","monPolDn":"uni/fabric/monfab-default","name":"apic3","nameAlias":"","nodeType":"unspecified","role":"controller","serial":"FCH1927V11T","status":"","uid":"0","vendor":"Cisco Systems, Inc","version":"A"}}},{"fabricNode":{"attributes":{"adSt":"on","annotation":"","childAction":"","delayedHeartbeat":"no","dn":"topology/pod-1/node-1","extMngdBy":"","fabricSt":"unknown","id":"1","lastStateModTs":"1969-12-31T17:00:00.000-07:00","lcOwn":"local","modTs":"2016-07-20T11:29:10.877-07:00","model":"APIC-SERVER-M1","monPolDn":"uni/fabric/monfab-default","name":"apic1","nameAlias":"","nodeType":"unspecified","role":"controller","serial":"FCH1928V0SL","status":"","uid":"0","vendor":"Cisco Systems, Inc","version":"A"}}},{"fabricNode":{"attributes":{"adSt":"on","annotation":"","childAction":"","delayedHeartbeat":"no","dn":"topology/pod-1/node-201","extMngdBy":"","fabricSt":"active","id":"201","lastStateModTs":"2018-05-29T16:53:17.887-07:00","lcOwn":"local","modTs":"2018-05-29T16:54:03.494-07:00","model":"N9K-C9336PQ","monPolDn":"uni/fabric/monfab-default","name":"spine201","nameAlias":"","nodeType":"unspecified","role":"spine","serial":"SAL2014N5U4","status":"","uid":"0","vendor":"Cisco Systems, Inc","version":""}}},{"fabricNode":{"attributes":{"adSt":"on","annotation":"","childAction":"","delayedHeartbeat":"no","dn":"topology/pod-1/node-2","extMngdBy":"","fabricSt":"unknown","id":"2","lastStateModTs":"1969-12-31T17:00:00.000-07:00","lcOwn":"local","modTs":"2016-07-20T12:19:20.101-07:00","model":"APIC-SERVER-M1","monPolDn":"uni/fabric/monfab-default","name":"apic2","nameAlias":"","nodeType":"unspecified","role":"controller","serial":"FCH1928V06Q","status":"","uid":"0","vendor":"Cisco Systems, Inc","version":"A"}}}]}
1+
{
2+
"totalCount": "7",
3+
"imdata": [
4+
{
5+
"fabricNode": {
6+
"attributes": {
7+
"adSt": "on",
8+
"address": "10.0.200.0",
9+
"annotation": "",
10+
"childAction": "",
11+
"delayedHeartbeat": "no",
12+
"dn": "topology/pod-1/node-101",
13+
"extMngdBy": "",
14+
"fabricSt": "active",
15+
"id": "101",
16+
"lastStateModTs": "2018-05-29T16:53:17.789-07:00",
17+
"lcOwn": "local",
18+
"modTs": "2018-05-29T16:53:58.209-07:00",
19+
"model": "N9K-C93180YC-FX",
20+
"monPolDn": "uni/fabric/monfab-default",
21+
"name": "leaf101",
22+
"nameAlias": "",
23+
"nodeType": "unspecified",
24+
"role": "leaf",
25+
"serial": "FDO20440TS1",
26+
"status": "",
27+
"uid": "0",
28+
"vendor": "Cisco Systems, Inc",
29+
"version": ""
30+
}
31+
}
32+
},
33+
{
34+
"fabricNode": {
35+
"attributes": {
36+
"adSt": "on",
37+
"address": "10.0.200.1",
38+
"annotation": "",
39+
"childAction": "",
40+
"delayedHeartbeat": "no",
41+
"dn": "topology/pod-1/node-102",
42+
"extMngdBy": "",
43+
"fabricSt": "active",
44+
"id": "102",
45+
"lastStateModTs": "2018-05-29T16:53:17.790-07:00",
46+
"lcOwn": "local",
47+
"modTs": "2018-05-29T16:53:58.207-07:00",
48+
"model": "N9K-C93180YC-FX",
49+
"monPolDn": "uni/fabric/monfab-default",
50+
"name": "leaf102",
51+
"nameAlias": "",
52+
"nodeType": "unspecified",
53+
"role": "leaf",
54+
"serial": "FDO20510HCA",
55+
"status": "",
56+
"uid": "0",
57+
"vendor": "Cisco Systems, Inc",
58+
"version": ""
59+
}
60+
}
61+
},
62+
{
63+
"fabricNode": {
64+
"attributes": {
65+
"adSt": "on",
66+
"address": "10.0.200.2",
67+
"annotation": "",
68+
"childAction": "",
69+
"delayedHeartbeat": "no",
70+
"dn": "topology/pod-1/node-202",
71+
"extMngdBy": "",
72+
"fabricSt": "active",
73+
"id": "202",
74+
"lastStateModTs": "2018-05-29T16:53:17.892-07:00",
75+
"lcOwn": "local",
76+
"modTs": "2018-05-29T16:53:58.202-07:00",
77+
"model": "N9K-C9336PQ",
78+
"monPolDn": "uni/fabric/monfab-default",
79+
"name": "spine202",
80+
"nameAlias": "",
81+
"nodeType": "unspecified",
82+
"role": "spine",
83+
"serial": "SAL2014N5T7",
84+
"status": "",
85+
"uid": "0",
86+
"vendor": "Cisco Systems, Inc",
87+
"version": ""
88+
}
89+
}
90+
},
91+
{
92+
"fabricNode": {
93+
"attributes": {
94+
"adSt": "on",
95+
"address": "10.0.200.3",
96+
"annotation": "",
97+
"childAction": "",
98+
"delayedHeartbeat": "no",
99+
"dn": "topology/pod-1/node-3",
100+
"extMngdBy": "",
101+
"fabricSt": "unknown",
102+
"id": "3",
103+
"lastStateModTs": "1969-12-31T17:00:00.000-07:00",
104+
"lcOwn": "local",
105+
"modTs": "2018-05-10T19:01:36.971-07:00",
106+
"model": "APIC-SERVER-M1",
107+
"monPolDn": "uni/fabric/monfab-default",
108+
"name": "apic3",
109+
"nameAlias": "",
110+
"nodeType": "unspecified",
111+
"role": "controller",
112+
"serial": "FCH1927V11T",
113+
"status": "",
114+
"uid": "0",
115+
"vendor": "Cisco Systems, Inc",
116+
"version": "A"
117+
}
118+
}
119+
},
120+
{
121+
"fabricNode": {
122+
"attributes": {
123+
"adSt": "on",
124+
"address": "10.0.200.4",
125+
"annotation": "",
126+
"childAction": "",
127+
"delayedHeartbeat": "no",
128+
"dn": "topology/pod-1/node-1",
129+
"extMngdBy": "",
130+
"fabricSt": "unknown",
131+
"id": "1",
132+
"lastStateModTs": "1969-12-31T17:00:00.000-07:00",
133+
"lcOwn": "local",
134+
"modTs": "2016-07-20T11:29:10.877-07:00",
135+
"model": "APIC-SERVER-M1",
136+
"monPolDn": "uni/fabric/monfab-default",
137+
"name": "apic1",
138+
"nameAlias": "",
139+
"nodeType": "unspecified",
140+
"role": "controller",
141+
"serial": "FCH1928V0SL",
142+
"status": "",
143+
"uid": "0",
144+
"vendor": "Cisco Systems, Inc",
145+
"version": "A"
146+
}
147+
}
148+
},
149+
{
150+
"fabricNode": {
151+
"attributes": {
152+
"adSt": "on",
153+
"address": "10.0.200.5",
154+
"annotation": "",
155+
"childAction": "",
156+
"delayedHeartbeat": "no",
157+
"dn": "topology/pod-1/node-201",
158+
"extMngdBy": "",
159+
"fabricSt": "active",
160+
"id": "201",
161+
"lastStateModTs": "2018-05-29T16:53:17.887-07:00",
162+
"lcOwn": "local",
163+
"modTs": "2018-05-29T16:54:03.494-07:00",
164+
"model": "N9K-C9336PQ",
165+
"monPolDn": "uni/fabric/monfab-default",
166+
"name": "spine201",
167+
"nameAlias": "",
168+
"nodeType": "unspecified",
169+
"role": "spine",
170+
"serial": "SAL2014N5U4",
171+
"status": "",
172+
"uid": "0",
173+
"vendor": "Cisco Systems, Inc",
174+
"version": ""
175+
}
176+
}
177+
},
178+
{
179+
"fabricNode": {
180+
"attributes": {
181+
"adSt": "on",
182+
"address": "10.0.200.6",
183+
"annotation": "",
184+
"childAction": "",
185+
"delayedHeartbeat": "no",
186+
"dn": "topology/pod-1/node-2",
187+
"extMngdBy": "",
188+
"fabricSt": "unknown",
189+
"id": "2",
190+
"lastStateModTs": "1969-12-31T17:00:00.000-07:00",
191+
"lcOwn": "local",
192+
"modTs": "2016-07-20T12:19:20.101-07:00",
193+
"model": "APIC-SERVER-M1",
194+
"monPolDn": "uni/fabric/monfab-default",
195+
"name": "apic2",
196+
"nameAlias": "",
197+
"nodeType": "unspecified",
198+
"role": "controller",
199+
"serial": "FCH1928V06Q",
200+
"status": "",
201+
"uid": "0",
202+
"vendor": "Cisco Systems, Inc",
203+
"version": "A"
204+
}
205+
}
206+
}
207+
]
208+
}

cisco_aci/tests/test_fabric.py

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,101 @@
55
from datadog_checks.base.utils.containers import hash_mutable
66
from datadog_checks.cisco_aci import CiscoACICheck
77
from datadog_checks.cisco_aci.api import Api
8+
from datadog_checks.cisco_aci.models import DeviceMetadataList
89

910
from . import common
1011

1112

13+
DATA = [
14+
{
15+
'device_id': 'default:10.0.200.0',
16+
'id_tags': ['namespace:default', 'system_ip:10.0.200.0'],
17+
'tags': ['device_vendor:cisco_aci', 'device_namespace:default', 'device_hostname:topology/pod-1/node-101', 'hostname:topology/pod-1/node-101', 'system_ip:10.0.200.0', 'device_ip:10.0.200.0', 'device_id:default:10.0.200.0', 'switch_role:leaf', 'apic_role:leaf', 'node_id:101', 'fabric_state:active', 'fabric_pod_id:1'],
18+
'ip_address': '10.0.200.0',
19+
'model': 'N9K-C93180YC-FX',
20+
'name': 'topology/pod-1/node-101',
21+
'serial_number': 'FDO20440TS1',
22+
'status': 1,
23+
'vendor': 'cisco_aci',
24+
'version': '',
25+
},
26+
{
27+
'device_id': 'default:10.0.200.1',
28+
'id_tags': ['namespace:default', 'system_ip:10.0.200.1'],
29+
'tags': ['device_vendor:cisco_aci', 'device_namespace:default', 'device_hostname:topology/pod-1/node-102', 'hostname:topology/pod-1/node-102', 'system_ip:10.0.200.1', 'device_ip:10.0.200.1', 'device_id:default:10.0.200.1', 'switch_role:leaf', 'apic_role:leaf', 'node_id:102', 'fabric_state:active', 'fabric_pod_id:1'],
30+
'ip_address': '10.0.200.1',
31+
'model': 'N9K-C93180YC-FX',
32+
'name': 'topology/pod-1/node-102',
33+
'serial_number': 'FDO20510HCA',
34+
'status': 1,
35+
'vendor': 'cisco_aci',
36+
'version': '',
37+
},
38+
{
39+
'device_id': 'default:10.0.200.2',
40+
'id_tags': ['namespace:default', 'system_ip:10.0.200.2'],
41+
'tags': ['device_vendor:cisco_aci', 'device_namespace:default', 'device_hostname:topology/pod-1/node-202', 'hostname:topology/pod-1/node-202', 'system_ip:10.0.200.2', 'device_ip:10.0.200.2', 'device_id:default:10.0.200.2', 'switch_role:spine', 'apic_role:spine', 'node_id:202', 'fabric_state:active', 'fabric_pod_id:1'],
42+
'ip_address': '10.0.200.2',
43+
'model': 'N9K-C9336PQ',
44+
'name': 'topology/pod-1/node-202',
45+
'serial_number': 'SAL2014N5T7',
46+
'status': 1,
47+
'vendor': 'cisco_aci',
48+
'version': '',
49+
},
50+
{
51+
'device_id': 'default:10.0.200.3',
52+
'id_tags': ['namespace:default', 'system_ip:10.0.200.3'],
53+
'tags': ['device_vendor:cisco_aci', 'device_namespace:default', 'device_hostname:topology/pod-1/node-3', 'hostname:topology/pod-1/node-3', 'system_ip:10.0.200.3', 'device_ip:10.0.200.3', 'device_id:default:10.0.200.3', 'apic_role:controller', 'node_id:3', 'fabric_state:unknown', 'fabric_pod_id:1'],
54+
'ip_address': '10.0.200.3',
55+
'model': 'APIC-SERVER-M1',
56+
'name': 'topology/pod-1/node-3',
57+
'serial_number': 'FCH1927V11T',
58+
'status': 1,
59+
'vendor': 'cisco_aci',
60+
'version': 'A',
61+
},
62+
{
63+
'device_id': 'default:10.0.200.4',
64+
'id_tags': ['namespace:default', 'system_ip:10.0.200.4'],
65+
'tags': ['device_vendor:cisco_aci', 'device_namespace:default', 'device_hostname:topology/pod-1/node-1', 'hostname:topology/pod-1/node-1', 'system_ip:10.0.200.4', 'device_ip:10.0.200.4', 'device_id:default:10.0.200.4', 'apic_role:controller', 'node_id:1', 'fabric_state:unknown', 'fabric_pod_id:1'],
66+
'ip_address': '10.0.200.4',
67+
'model': 'APIC-SERVER-M1',
68+
'name': 'topology/pod-1/node-1',
69+
'serial_number': 'FCH1928V0SL',
70+
'status': 1,
71+
'vendor': 'cisco_aci',
72+
'version': 'A',
73+
},
74+
{
75+
'device_id': 'default:10.0.200.5',
76+
'id_tags': ['namespace:default', 'system_ip:10.0.200.5'],
77+
'tags': ['device_vendor:cisco_aci', 'device_namespace:default', 'device_hostname:topology/pod-1/node-201', 'hostname:topology/pod-1/node-201', 'system_ip:10.0.200.5', 'device_ip:10.0.200.5', 'device_id:default:10.0.200.5', 'switch_role:spine', 'apic_role:spine', 'node_id:201', 'fabric_state:active', 'fabric_pod_id:1'],
78+
'ip_address': '10.0.200.5',
79+
'model': 'N9K-C9336PQ',
80+
'name': 'topology/pod-1/node-201',
81+
'serial_number': 'SAL2014N5U4',
82+
'status': 1,
83+
'vendor': 'cisco_aci',
84+
'version': '',
85+
},
86+
{
87+
'device_id': 'default:10.0.200.6',
88+
'id_tags': ['namespace:default', 'system_ip:10.0.200.6'],
89+
'tags': ['device_vendor:cisco_aci', 'device_namespace:default', 'device_hostname:topology/pod-1/node-2', 'hostname:topology/pod-1/node-2', 'system_ip:10.0.200.6', 'device_ip:10.0.200.6', 'device_id:default:10.0.200.6', 'apic_role:controller', 'node_id:2', 'fabric_state:unknown', 'fabric_pod_id:1'],
90+
'ip_address': '10.0.200.6',
91+
'model': 'APIC-SERVER-M1',
92+
'name': 'topology/pod-1/node-2',
93+
'serial_number': 'FCH1928V06Q',
94+
'status': 1,
95+
'vendor': 'cisco_aci',
96+
'version': 'A',
97+
},
98+
]
99+
100+
EXPECTED_RESULT = DeviceMetadataList(device_metadata=DATA)
101+
102+
12103
def test_fabric_mocked(aggregator):
13104
check = CiscoACICheck(common.CHECK_NAME, {}, [common.CONFIG_WITH_TAGS])
14105
api = Api(common.ACI_URLS, check.http, common.USERNAME, password=common.PASSWORD, log=check.log)
@@ -17,6 +108,9 @@ def test_fabric_mocked(aggregator):
17108

18109
check.check({})
19110

111+
ndm_metadata = aggregator.get_event_platform_events("ndm")
112+
assert ndm_metadata == EXPECTED_RESULT.device_metadata
113+
20114
tags000 = ['cisco', 'project:cisco_aci', 'medium:broadcast', 'snmpTrapSt:enable', 'fabric_pod_id:1']
21115
tags101 = tags000 + ['node_id:101']
22116
tags102 = tags000 + ['node_id:102']

0 commit comments

Comments
 (0)