]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: policy: schema for custom answer
authorAleš <ales.mrazek@nic.cz>
Wed, 24 Nov 2021 13:35:01 +0000 (14:35 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:53 +0000 (16:17 +0200)
manager/knot_resolver_manager/datamodel/policy_schema.py

index b23c5c3c4c69907126dcc4145f69b110201ba818..07851188cf7b4c3fac5ce88a533e37a048a3597b 100644 (file)
@@ -1,12 +1,12 @@
 from typing import List, Optional
 
-from knot_resolver_manager.datamodel.types import IPAddressPort
+from knot_resolver_manager.datamodel.types import IPAddressPort, TimeUnit
 from knot_resolver_manager.datamodel.view_schema import FlagsEnum
 from knot_resolver_manager.utils import SchemaNode
 from knot_resolver_manager.utils.types import LiteralEnum
 
 # TODO: add all other options
-ActionEnum = LiteralEnum["deny", "pass", "mirror"]
+ActionEnum = LiteralEnum["pass", "deny", "mirror", "forward", "modify"]
 
 
 class FilterSchema(SchemaNode):
@@ -16,17 +16,21 @@ class FilterSchema(SchemaNode):
 
 
 class AnswerSchema(SchemaNode):
-    pass
+    query_type: str
+    rdata: str
+    ttl: TimeUnit = TimeUnit("1s")
+    no_data: bool = False
 
 
 class PolicySchema(SchemaNode):
     action: ActionEnum
-    mirror: Optional[List[IPAddressPort]] = None
     filters: Optional[List[FilterSchema]] = None
-    message: Optional[str] = None
-    answer: Optional[AnswerSchema] = None
     views: Optional[List[str]] = None
     options: Optional[List[FlagsEnum]] = None
+    message: Optional[str] = None
+    mirror: Optional[List[IPAddressPort]] = None
+    forward: Optional[List[IPAddressPort]] = None
+    answer: Optional[AnswerSchema] = None
 
     def _validate(self) -> None:
         pass