From: Aleš Mrázek Date: Mon, 12 Sep 2022 08:20:31 +0000 (+0200) Subject: manager: kresctl: schema command added X-Git-Tag: v6.0.0a1~12^2~40 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=a98ae40216da4058b0f1fe411e9a0abcaa98327a;p=thirdparty%2Fknot-resolver.git manager: kresctl: schema command added --- diff --git a/manager/knot_resolver_manager/cli/cmd/metrics.py b/manager/knot_resolver_manager/cli/cmd/metrics.py index 73f4cbaf8..967e79fd8 100644 --- a/manager/knot_resolver_manager/cli/cmd/metrics.py +++ b/manager/knot_resolver_manager/cli/cmd/metrics.py @@ -28,7 +28,7 @@ class MetricsCommand(Command): response = request("GET", url) if self.file and response.status == 200: - with open(self.file, 'a') as f: + with open(self.file, 'w') as f: f.write(response.body) else: print(response) diff --git a/manager/knot_resolver_manager/cli/cmd/schema.py b/manager/knot_resolver_manager/cli/cmd/schema.py new file mode 100644 index 000000000..bbc1780c0 --- /dev/null +++ b/manager/knot_resolver_manager/cli/cmd/schema.py @@ -0,0 +1,34 @@ +import argparse +from optparse import Option +import sys +from typing import Optional, Tuple, Type +from knot_resolver_manager.utils.requests import request + +from knot_resolver_manager.cli.command import Command, CommandArgs, register_command + + +@register_command +class SchemaCommand(Command): + + def __init__(self, namespace: argparse.Namespace) -> None: + self.file: Optional[str] = namespace.file + + super().__init__(namespace) + + @staticmethod + def register_args_subparser( + parser: "argparse._SubParsersAction[argparse.ArgumentParser]", + ) -> Tuple[argparse.ArgumentParser, "Type[Command]"]: + schema = parser.add_parser("schema", help="get JSON schema reprezentation of the configuration") + schema.add_argument('file', help="optional, file to export JSON schema to", nargs='?', default=None) + return schema, SchemaCommand + + def run(self, args: CommandArgs) -> None: + url = f"{args.socket}/schema" + response = request("GET", url) + + if self.file and response.status == 200: + with open(self.file, 'w') as f: + f.write(response.body) + else: + print(response)