bug: fix error code handling in list
This commit is contained in:
@@ -388,20 +388,30 @@ class MinerData(BaseModel):
|
|||||||
def serialize_list(key: str, value: list[Any]) -> str | None:
|
def serialize_list(key: str, value: list[Any]) -> str | None:
|
||||||
if len(value) == 0:
|
if len(value) == 0:
|
||||||
return None
|
return None
|
||||||
return ",".join(
|
|
||||||
list(
|
list_field_data = []
|
||||||
filter(
|
for idx, list_field_val in enumerate(value):
|
||||||
lambda x: x is not None,
|
item_serialization_func = serialization_map.get(
|
||||||
[
|
type(list_field_val), lambda _k, _v: None
|
||||||
serialization_map.get(type(v), lambda _k, _v: None)(
|
|
||||||
f"{key}{level_delimiter}{i}",
|
|
||||||
v,
|
|
||||||
)
|
|
||||||
for i, v in enumerate(value)
|
|
||||||
],
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
)
|
item_serialized = item_serialization_func(
|
||||||
|
f"{key}{level_delimiter}{idx}", list_field_val
|
||||||
|
)
|
||||||
|
if item_serialized is not None:
|
||||||
|
list_field_data.append(item_serialized)
|
||||||
|
continue
|
||||||
|
for dt in serialization_map_instance:
|
||||||
|
if item_serialized is None:
|
||||||
|
if isinstance(list_field_val, dt):
|
||||||
|
item_serialized = serialization_map_instance[dt](
|
||||||
|
f"{key}{level_delimiter}{idx}", list_field_val
|
||||||
|
)
|
||||||
|
if item_serialized is not None:
|
||||||
|
list_field_data.append(item_serialized)
|
||||||
|
return ",".join(list_field_data)
|
||||||
|
|
||||||
|
def serialize_miner_error(key: str, value: BaseMinerError):
|
||||||
|
return value.as_influxdb(key, level_delimiter=level_delimiter)
|
||||||
|
|
||||||
def serialize_fan(key: str, value: Fan) -> str:
|
def serialize_fan(key: str, value: Fan) -> str:
|
||||||
return f"{key}{level_delimiter}speed={value.speed}"
|
return f"{key}{level_delimiter}speed={value.speed}"
|
||||||
@@ -438,6 +448,7 @@ class MinerData(BaseModel):
|
|||||||
|
|
||||||
serialization_map_instance = {
|
serialization_map_instance = {
|
||||||
AlgoHashRateType: serialize_algo_hash_rate,
|
AlgoHashRateType: serialize_algo_hash_rate,
|
||||||
|
BaseMinerError: serialize_miner_error,
|
||||||
}
|
}
|
||||||
serialization_map = {
|
serialization_map = {
|
||||||
int: serialize_int,
|
int: serialize_int,
|
||||||
|
|||||||
@@ -17,12 +17,16 @@ class BaseMinerError(BaseModel):
|
|||||||
"""
|
"""
|
||||||
return self.asdict()
|
return self.asdict()
|
||||||
|
|
||||||
def as_influxdb(self, root_key: str) -> str:
|
def as_influxdb(self, root_key: str, level_delimiter: str = ".") -> str:
|
||||||
field_data = []
|
field_data = []
|
||||||
|
|
||||||
if self.error_code is not None:
|
if self.error_code is not None:
|
||||||
field_data.append(f"{root_key}.error_code={self.error_code}")
|
field_data.append(
|
||||||
|
f"{root_key}{level_delimiter}error_code={self.error_code}"
|
||||||
|
)
|
||||||
if self.error_message is not None:
|
if self.error_message is not None:
|
||||||
field_data.append(f'{root_key}.error_code="{self.error_message}"')
|
field_data.append(
|
||||||
|
f'{root_key}{level_delimiter}error_message="{self.error_message}"'
|
||||||
|
)
|
||||||
|
|
||||||
return ",".join(field_data)
|
return ",".join(field_data)
|
||||||
|
|||||||
Reference in New Issue
Block a user