Skip to content

Commit 79954aa

Browse files
committed
Deal with pydantic stuff py2.7
1 parent 2874add commit 79954aa

File tree

4 files changed

+102
-311
lines changed

4 files changed

+102
-311
lines changed

cisco_aci/datadog_checks/cisco_aci/fabric.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
44

5-
from six import iteritems
5+
from six import PY3, iteritems
66

77
from datadog_checks.base.utils.serialization import json
8-
from datadog_checks.cisco_aci.models import DeviceMetadata, Eth, InterfaceMetadata, Node
8+
9+
if PY3:
10+
from datadog_checks.cisco_aci.models import DeviceMetadata, Eth, InterfaceMetadata, Node
11+
else:
12+
DeviceMetadata = None
13+
Eth = None
14+
InterfaceMetadata = None
15+
Node = None
916

1017
from . import aci_metrics, exceptions, helpers
1118

@@ -74,7 +81,8 @@ def submit_nodes_health(self, nodes, pods):
7481
continue
7582
self.log.info("processing node %s on pod %s", node_id, pod_id)
7683
try:
77-
self.submit_node_metadata(node_attrs, tags)
84+
if PY3:
85+
self.submit_node_metadata(node_attrs, tags)
7886
self.submit_process_metric(n, tags + self.check_tags + user_tags, hostname=hostname)
7987
except (exceptions.APIConnectionException, exceptions.APIParsingException):
8088
pass
@@ -99,7 +107,8 @@ def process_eth(self, node):
99107
eth_attrs = helpers.get_attributes(e)
100108
eth_id = eth_attrs['id']
101109
tags = self.tagger.get_fabric_tags(e, 'l1PhysIf')
102-
self.submit_interface_metadata(eth_attrs, node['address'], tags)
110+
if PY3:
111+
self.submit_interface_metadata(eth_attrs, node['address'], tags)
103112
try:
104113
stats = self.api.get_eth_stats(pod_id, node['id'], eth_id)
105114
self.submit_fabric_metric(stats, tags, 'l1PhysIf', hostname=hostname)
@@ -256,4 +265,4 @@ def submit_interface_metadata(self, eth_attr, address, tags):
256265
mac_address=eth.attributes.router_mac,
257266
admin_status=eth.attributes.admin_st,
258267
)
259-
self.ndm_metadata(json.dumps(interface.model_dump()))
268+
self.ndm_metadata(json.dumps(interface.model_dump(exclude_none=True)))
Lines changed: 67 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,71 @@
11
# (C) Datadog, Inc. 2024-present
22
# All rights reserved
33
# Licensed under a 3-clause BSD style license (see LICENSE)
4-
from typing import Optional
54

6-
from pydantic import BaseModel, Field, computed_field
7-
8-
9-
class NodeAttributes(BaseModel):
10-
address: Optional[str] = None
11-
ad_st: Optional[str] = Field(default=None, alias="adSt")
12-
role: Optional[str] = None
13-
dn: Optional[str] = None
14-
model: Optional[str] = None
15-
version: Optional[str] = None
16-
serial: Optional[str] = None
17-
vendor: Optional[str] = Field(default='cisco_aci')
18-
namespace: Optional[str] = Field(default='default')
19-
20-
21-
class Node(BaseModel):
22-
attributes: NodeAttributes
23-
24-
25-
class EthAttributes(BaseModel):
26-
admin_st: Optional[str] = Field(default=None, alias="adminSt")
27-
id: Optional[str] = None
28-
name: Optional[str] = None
29-
desc: Optional[str] = None
30-
router_mac: Optional[str] = Field(default=None, alias="routerMac")
31-
32-
33-
class Eth(BaseModel):
34-
attributes: EthAttributes
35-
36-
37-
class DeviceMetadata(BaseModel):
38-
device_id: Optional[str] = Field(default=None)
39-
id_tags: list = Field(default_factory=list)
40-
tags: list = Field(default_factory=list)
41-
name: Optional[str] = Field(default=None)
42-
ip_address: Optional[str] = Field(default=None)
43-
model: Optional[str] = Field(default=None)
44-
ad_st: Optional[str] = Field(default=None, exclude=True)
45-
vendor: Optional[str] = Field(default=None)
46-
version: Optional[str] = Field(default=None)
47-
serial_number: Optional[str] = Field(default=None)
48-
49-
@computed_field
50-
@property
51-
def status(self) -> int:
52-
return 1 if self.ad_st == 'on' else 2
53-
54-
55-
class DeviceMetadataList(BaseModel):
56-
device_metadata: list = Field(default_factory=list)
57-
58-
59-
class InterfaceMetadata(BaseModel):
60-
device_id: Optional[str] = Field(default=None)
61-
id_tags: list = Field(default_factory=list)
62-
index: Optional[str] = Field(default=None)
63-
name: Optional[str] = Field(default=None)
64-
description: Optional[str] = Field(default=None)
65-
mac_address: Optional[str] = Field(default=None)
66-
admin_status: Optional[str] = Field(default=None, exclude=True)
67-
68-
@computed_field
69-
@property
70-
def status(self) -> int:
71-
return 1 if self.admin_status == 'up' else 2
72-
73-
74-
class InterfaceMetadataList(BaseModel):
75-
interface_metadata: list = Field(default_factory=list)
5+
import six
6+
7+
if six.PY3:
8+
from typing import Optional
9+
10+
from pydantic import BaseModel, Field, computed_field
11+
12+
class NodeAttributes(BaseModel):
13+
address: Optional[str] = None
14+
ad_st: Optional[str] = Field(default=None, alias="adSt")
15+
role: Optional[str] = None
16+
dn: Optional[str] = None
17+
model: Optional[str] = None
18+
version: Optional[str] = None
19+
serial: Optional[str] = None
20+
vendor: Optional[str] = Field(default='cisco_aci')
21+
namespace: Optional[str] = Field(default='default')
22+
23+
class Node(BaseModel):
24+
attributes: NodeAttributes
25+
26+
class EthAttributes(BaseModel):
27+
admin_st: Optional[str] = Field(default=None, alias="adminSt")
28+
id: Optional[str] = None
29+
name: Optional[str] = None
30+
desc: Optional[str] = None
31+
router_mac: Optional[str] = Field(default=None, alias="routerMac")
32+
33+
class Eth(BaseModel):
34+
attributes: EthAttributes
35+
36+
class DeviceMetadata(BaseModel):
37+
device_id: Optional[str] = Field(default=None)
38+
id_tags: list = Field(default_factory=list)
39+
tags: list = Field(default_factory=list)
40+
name: Optional[str] = Field(default=None)
41+
ip_address: Optional[str] = Field(default=None)
42+
model: Optional[str] = Field(default=None)
43+
ad_st: Optional[str] = Field(default=None, exclude=True)
44+
vendor: Optional[str] = Field(default=None)
45+
version: Optional[str] = Field(default=None)
46+
serial_number: Optional[str] = Field(default=None)
47+
48+
@computed_field
49+
@property
50+
def status(self) -> int:
51+
return 1 if self.ad_st == 'on' else 2
52+
53+
class DeviceMetadataList(BaseModel):
54+
device_metadata: list = Field(default_factory=list)
55+
56+
class InterfaceMetadata(BaseModel):
57+
device_id: Optional[str] = Field(default=None)
58+
id_tags: list = Field(default_factory=list)
59+
index: Optional[str] = Field(default=None)
60+
name: Optional[str] = Field(default=None)
61+
description: Optional[str] = Field(default=None)
62+
mac_address: Optional[str] = Field(default=None)
63+
admin_status: Optional[str] = Field(default=None, exclude=True)
64+
65+
@computed_field
66+
@property
67+
def status(self) -> int:
68+
return 1 if self.admin_status == 'up' else 2
69+
70+
class InterfaceMetadataList(BaseModel):
71+
interface_metadata: list = Field(default_factory=list)

0 commit comments

Comments
 (0)