-
Notifications
You must be signed in to change notification settings - Fork 42
Expand file tree
/
Copy pathgnmi_call_template.py
More file actions
26 lines (22 loc) · 1018 Bytes
/
gnmi_call_template.py
File metadata and controls
26 lines (22 loc) · 1018 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from typing import Optional, Dict, List, Literal
from utcp.data.call_template import CallTemplate
from utcp.interfaces.serializer import Serializer
from utcp.exceptions import UtcpSerializerValidationError
import traceback
class GnmiCallTemplate(CallTemplate):
call_template_type: Literal["gnmi"] = "gnmi"
target: str
use_tls: bool = True
metadata: Optional[Dict[str, str]] = None
metadata_fields: Optional[List[str]] = None
operation: Literal["capabilities", "get", "set", "subscribe"] = "get"
stub_module: str = "gnmi_pb2_grpc"
message_module: str = "gnmi_pb2"
class GnmiCallTemplateSerializer(Serializer[GnmiCallTemplate]):
def to_dict(self, obj: GnmiCallTemplate) -> dict:
return obj.model_dump()
def validate_dict(self, obj: dict) -> GnmiCallTemplate:
try:
return GnmiCallTemplate.model_validate(obj)
except Exception as e:
raise UtcpSerializerValidationError("Invalid GnmiCallTemplate: " + traceback.format_exc()) from e