Skip to content

Commit 6d8c377

Browse files
committed
Add enums for interface status
1 parent 63e2f08 commit 6d8c377

File tree

1 file changed

+39
-24
lines changed

1 file changed

+39
-24
lines changed

cisco_aci/datadog_checks/cisco_aci/models.py

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import six
66

77
if six.PY3:
8+
from enum import Enum, IntEnum
89
from typing import Optional
910

1011
from pydantic import BaseModel, ConfigDict, Field, computed_field, field_validator
@@ -76,65 +77,79 @@ def status(self) -> int:
7677
mapping = {
7778
'active': 1,
7879
'inactive': 2,
79-
'disabled': 5,
80+
'disabled': 2,
8081
'discovering': 2,
8182
'undiscovered': 2,
8283
'unsupported': 2,
83-
'unknown': 4,
84+
'unknown': 2,
8485
}
85-
return mapping.get(self.fabric_st, 7)
86+
return mapping.get(self.fabric_st, 2)
8687

8788
class DeviceMetadataList(BaseModel):
8889
device_metadata: list = Field(default_factory=list)
8990

91+
class AdminStatus(IntEnum):
92+
UP = 1
93+
DOWN = 2
94+
95+
class OperStatus(IntEnum):
96+
UP = 1
97+
DOWN = 2
98+
99+
class Status(str, Enum):
100+
UP = "up"
101+
DOWN = "down"
102+
WARNING = "warning"
103+
OFF = "off"
104+
90105
class InterfaceMetadata(BaseModel):
91106
device_id: Optional[str] = Field(default=None)
92107
id_tags: list = Field(default_factory=list)
93108
index: Optional[str] = Field(default=None)
94109
name: Optional[str] = Field(default=None)
95110
description: Optional[str] = Field(default=None)
96111
mac_address: Optional[str] = Field(default=None)
97-
admin_status: Optional[int] = Field(default=None)
98-
oper_status: Optional[int] = Field(default=None)
112+
admin_status: Optional[AdminStatus] = Field(default=None)
113+
oper_status: Optional[OperStatus] = Field(default=None)
99114

100115
model_config = ConfigDict(validate_assignment=True)
101116

102117
@field_validator("admin_status", mode="before")
103118
@classmethod
104-
def parse_admin_status(cls, admin_status: int | None) -> int | None:
119+
def parse_admin_status(cls, admin_status: AdminStatus | None) -> AdminStatus | None:
105120
if not admin_status:
106121
return None
107122

108123
if admin_status == "up":
109-
return 1
110-
return 2
124+
return AdminStatus.UP
125+
return AdminStatus.DOWN
111126

112127
@field_validator("oper_status", mode="before")
113128
@classmethod
114-
def parse_oper_status(cls, oper_status: int | None) -> int | None:
129+
def parse_oper_status(cls, oper_status: OperStatus | None) -> OperStatus | None:
115130
if not oper_status:
116131
return None
117132

118133
if oper_status == "up":
119-
return 1
120-
return 2
134+
return OperStatus.UP
135+
return OperStatus.DOWN
121136

122137
@computed_field
123138
@property
124139
def status(self) -> str:
125-
if self.admin_status == 1:
126-
if self.oper_status == 1:
127-
return "up"
128-
if self.oper_status == 2:
129-
return "down"
130-
return "warning"
131-
if self.admin_status == 2:
132-
if self.oper_status == 1:
133-
return "down"
134-
if self.oper_status == 2:
135-
return "off"
136-
return "warning"
137-
return "down"
140+
if self.admin_status == AdminStatus.UP:
141+
if self.oper_status == OperStatus.UP:
142+
return Status.UP
143+
if self.oper_status == OperStatus.DOWN:
144+
return Status.DOWN
145+
return Status.WARNING
146+
if self.admin_status == AdminStatus.DOWN:
147+
if self.oper_status == OperStatus.UP:
148+
return Status.DOWN
149+
if self.oper_status == OperStatus.DOWN:
150+
return Status.OFF
151+
return Status.WARNING
152+
return Status.DOWN
138153

139154
class InterfaceMetadataList(BaseModel):
140155
interface_metadata: list = Field(default_factory=list)

0 commit comments

Comments
 (0)