예제 #1
0
def parse_command(command_name, payload):
    """Parse and build a BgUtil command."""
    # Import that here only because we are inside a command and `commands`
    # need to be able to import files from all commands.
    from biggraphite.cli import commands

    cmd = None
    for cmd in commands.COMMANDS:
        if cmd.NAME == command_name:
            break
    if not cmd or cmd.NAME != command_name:
        raise UnknownCommandException(command_name)

    parser = NonExitingArgumentParser(add_help=False)
    parser.add_argument(
        "--help",
        action=_HelpAction,
        default=argparse.SUPPRESS,
        help="Show this help message and exit.",
    )
    bg_settings.add_argparse_arguments(parser)
    cmd.add_arguments(parser)

    if not payload:
        arguments = []
    else:
        arguments = payload.get("arguments", [])

    args = [a for a in arguments]
    opts = parser.parse_args(args)

    return cmd, opts
예제 #2
0
    def test_run(self):
        self.accessor.drop_all_metrics()

        cmd = command_list.CommandList()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)

        name = "foo.bar"
        metadata = bg_metric.MetricMetadata(
            retention=bg_metric.Retention.from_string("1440*60s"))

        self.accessor.create_metric(bg_test_utils.make_metric(name, metadata))

        opts = parser.parse_args(["foo.*"])
        cmd.run(self.accessor, opts)
        metrics = command_list.list_metrics(self.accessor, opts.glob,
                                            opts.graphite)
        self.assertEqual(name, list(metrics)[0].name)

        opts = parser.parse_args(["--graphite", "foo.{bar}"])
        metrics = command_list.list_metrics(self.accessor, opts.glob,
                                            opts.graphite)
        self.assertEqual(name, list(metrics)[0].name)
예제 #3
0
def parse_command(command_name, payload):
    """Parse and build a BgUtil command."""
    # Import that here only because we are inside a command and `commands`
    # need to be able to import files from all commands.
    from biggraphite.cli import commands

    cmd = None
    for cmd in commands.COMMANDS:
        if cmd.NAME == command_name:
            break
    if not cmd or cmd.NAME != command_name:
        raise UnknownCommandException(command_name)

    parser = NonExitingArgumentParser(add_help=False)
    parser.add_argument(
        "--help",
        action=_HelpAction,
        default=argparse.SUPPRESS,
        help="Show this help message and exit.",
    )
    bg_settings.add_argparse_arguments(parser)
    cmd.add_arguments(parser)

    if not payload:
        arguments = []
    else:
        arguments = payload.get("arguments", [])

    args = [a for a in arguments]
    opts = parser.parse_args(args)

    return cmd, opts
예제 #4
0
    def test_run(self):
        cmd = command_test.CommandTest()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args([])
        cmd.run(self.accessor, opts)
예제 #5
0
    def test_run(self):
        cmd = command_web.CommandWeb()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(["--dry-run"])
        cmd.run(self.accessor, opts)
예제 #6
0
    def test_run(self, prometheus_registry_mock):
        cmd = command_web.CommandWeb()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(["--dry-run"])
        cmd.run(self.accessor, opts)
예제 #7
0
    def test_run(self):
        cmd = command_write.CommandWrite()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(["metric", "1"])
        cmd.run(self.accessor, opts)
예제 #8
0
    def test_run(self):
        cmd = command_repair.CommandRepair()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(["--shard=0", "--nshards=5"])
        cmd.run(self.accessor, opts)
예제 #9
0
    def test_run(self):
        cmd = command_syncdb.CommandSyncdb()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(["--retention", "86400*1s:10080*60s"])
        cmd.run(self.accessor, opts)
        opts = parser.parse_args(["--dry_run"])
        cmd.run(self.accessor, opts)
예제 #10
0
    def test_run(self):
        name = "foo.bar"
        metadata = bg_metric.MetricMetadata.create(
            retention=bg_metric.Retention.from_string("1440*60s"))
        self.accessor.create_metric(bg_test_utils.make_metric(name, metadata))

        cmd = command_read.CommandRead()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args([name])
        cmd.run(self.accessor, opts)
예제 #11
0
    def test_run(self):
        name = "foo.bar"
        metadata = bg_metric.MetricMetadata.create(
            retention=bg_metric.Retention.from_string("1440*60s")
        )
        self.accessor.create_metric(bg_test_utils.make_metric_with_defaults(name, metadata))

        cmd = command_read.CommandRead()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args([name])
        cmd.run(self.accessor, opts)
예제 #12
0
    def test_run(self):
        cmd = command_clean.CommandClean()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args([
            "--shard=0",
            "--nshards=5",
            "--clean-cache",
            "--clean-backend",
            "--clean-corrupted",
        ])
        cmd.run(self.accessor, opts)
    def test_run(self):
        name = "foo.bar"
        metadata = bg_metric.MetricMetadata.create(
            retention=bg_metric.Retention.from_string("1440*60s")
        )
        self.accessor.create_metric(bg_test_utils.make_metric(name, metadata))
        self.accessor.flush()

        cmd = command_graphite_web.CommandGraphiteWeb()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(["foo.bar"])
        cmd.run(self.accessor, opts)
예제 #14
0
    def get_output(self, args, mock_stdout):
        self.accessor.drop_all_metrics()
        for metric in self.metrics:
            self.accessor.create_metric(
                bg_test_utils.make_metric(metric, self.metadata))

        cmd = command_du.CommandDu()

        parser = argparse.ArgumentParser(add_help=False)
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)

        opts = parser.parse_args(args)
        cmd.run(self.accessor, opts)
        return mock_stdout.getvalue()
    def test_run(self):
        name = "foo.bar"
        metadata = bg_metric.MetricMetadata.create(
            retention=bg_metric.Retention.from_string("1440*60s"))
        self.accessor.create_metric(
            bg_test_utils.make_metric_with_defaults(name, metadata))
        self.accessor.flush()

        cmd = command_graphite_web.CommandGraphiteWeb()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(["foo.bar"])
        cmd.run(self.accessor, opts)
예제 #16
0
def parse_opts(args):
    """Parse command line arguments."""
    parser = argparse.ArgumentParser(description="BigGraphite command line utility.")
    bg_settings.add_argparse_arguments(parser)
    subparsers = parser.add_subparsers(help="commands")
    for command in COMMANDS:
        subparser = subparsers.add_parser(
            command.NAME, add_help=False
        )  # accept -h for du
        # but we still want --help
        subparser.add_argument(
            "--help", action="help", help="show this help message and exit"
        )
        command.add_arguments(subparser)
        subparser.set_defaults(func=command.run)
    return parser.parse_args(args)
예제 #17
0
    def get_output(self, args, mock_stdout):
        self.accessor.drop_all_metrics()
        for metric in self.metrics:
            self.accessor.create_metric(
                bg_test_utils.make_metric(metric, self.metadata)
            )

        cmd = command_stats.CommandStats()

        parser = argparse.ArgumentParser(add_help=False)
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)

        opts = parser.parse_args(args)
        cmd.run(self.accessor, opts)
        return mock_stdout.getvalue()
예제 #18
0
    def test_run(self):
        cmd = command_clean.CommandClean()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(
            [
                "--shard=0",
                "--nshards=5",
                "--clean-cache",
                "--clean-backend",
                "--clean-corrupted",
            ]
        )
        cmd.run(self.accessor, opts)
예제 #19
0
    def test_run_with_args(self):
        cmd = command_test.CommandTest()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)
        opts = parser.parse_args(
            [
                "--cassandra_contact_points=127.0.0.1,192.168.0.1",
                "--cassandra_contact_points_metadata=127.0.0.1,192.168.1.1",
            ]
        )
        settings = bg_settings.settings_from_args(opts)
        self.assertIsInstance(settings["cassandra_contact_points"], list)
        self.assertIsInstance(settings["cassandra_contact_points_metadata"], list)

        cmd.run(self.accessor, opts)
예제 #20
0
    def test_run(self):
        self.accessor.drop_all_metrics()

        cmd = command_delete.CommandDelete()

        parser = argparse.ArgumentParser()
        bg_setting.add_argparse_arguments(parser)
        cmd.add_arguments(parser)

        name = "foo.bar"
        metadata = bg_metric.MetricMetadata(
            retention=bg_metric.Retention.from_string("1440*60s"))

        self.accessor.create_metric(bg_test_utils.make_metric(name, metadata))
        opts = parser.parse_args(["foo", "--recursive", "--dry-run"])
        cmd.run(self.accessor, opts)
        self.assertIn(name, self.accessor.glob_metric_names("*.*"))

        opts = parser.parse_args(["foo", "--recursive"])
        cmd.run(self.accessor, opts)
        self.assertNotIn(name, self.accessor.glob_metric_names("*.*"))
예제 #21
0
    def test_run(self):
        self.accessor.drop_all_metrics()

        cmd = command_delete.CommandDelete()

        parser = argparse.ArgumentParser()
        bg_setting.add_argparse_arguments(parser)
        cmd.add_arguments(parser)

        name = "foo.bar"
        metadata = bg_metric.MetricMetadata(
            retention=bg_metric.Retention.from_string("1440*60s")
        )

        self.accessor.create_metric(bg_test_utils.make_metric(name, metadata))
        opts = parser.parse_args(["foo", "--recursive", "--dry-run"])
        cmd.run(self.accessor, opts)
        self.assertIn(name, self.accessor.glob_metric_names("*.*"))

        opts = parser.parse_args(["foo", "--recursive"])
        cmd.run(self.accessor, opts)
        self.assertNotIn(name, self.accessor.glob_metric_names("*.*"))
예제 #22
0
    def test_run(self):
        self.accessor.drop_all_metrics()

        cmd = command_list.CommandList()

        parser = argparse.ArgumentParser()
        bg_settings.add_argparse_arguments(parser)
        cmd.add_arguments(parser)

        name = "foo.bar"
        metadata = bg_metric.MetricMetadata.create(
            retention=bg_metric.Retention.from_string("1440*60s")
        )

        self.accessor.create_metric(bg_test_utils.make_metric_with_defaults(name, metadata))

        opts = parser.parse_args(["foo.*"])
        cmd.run(self.accessor, opts)
        metrics = command_list.list_metrics(self.accessor, opts.glob, opts.graphite)
        self.assertEqual(name, list(metrics)[0].name)

        opts = parser.parse_args(["--graphite", "foo.{bar}"])
        metrics = command_list.list_metrics(self.accessor, opts.glob, opts.graphite)
        self.assertEqual(name, list(metrics)[0].name)
예제 #23
0
def _parse_opts(args):
    parser = argparse.ArgumentParser(
        description="Import whisper files into BigGraphite.")
    parser.add_argument(
        "root_directory",
        metavar="WHISPER_DIR",
        help="directory in which to find whisper files",
    )
    parser.add_argument(
        "--filter",
        type=str,
        default=r".*\.wsp",
        help="Only import metrics matching this filter",
    )
    parser.add_argument(
        "--prefix",
        metavar="WHISPER_PREFIX",
        default="",
        help="prefix to prepend to metric names",
    )
    parser.add_argument(
        "--quiet",
        action="store_const",
        default=False,
        const=True,
        help="Show no output unless there are problems.",
    )
    parser.add_argument(
        "--process",
        metavar="N",
        type=int,
        help="number of concurrent process",
        default=multiprocessing.cpu_count(),
    )
    parser.add_argument("--no-data",
                        action="store_true",
                        help="Do not import data, only metadata.")
    parser.add_argument("--no-metadata",
                        action="store_true",
                        help="Do not import metadata, only data.")
    parser.add_argument(
        "--ignored_stages",
        nargs="*",
        help="Do not import data for these stages.",
        default=[],
    )
    parser.add_argument(
        "--time-start",
        action=command.ParseDateTimeArg,
        help="Read points written later than this time.",
        default=datetime.datetime.fromtimestamp(0),
        required=False,
    )
    parser.add_argument(
        "--time-end",
        action=command.ParseDateTimeArg,
        help="Read points written earlier than this time.",
        default=datetime.datetime.now(),
        required=False,
    )
    bg_settings.add_argparse_arguments(parser)
    opts = parser.parse_args(args)
    opts.ignored_stages = [
        bg_metric.Stage.from_string(s) for s in opts.ignored_stages
    ]
    return opts
예제 #24
0
def _parse_opts(args):
    parser = argparse.ArgumentParser(
        description="Import whisper files into BigGraphite."
    )
    parser.add_argument(
        "root_directory",
        metavar="WHISPER_DIR",
        help="directory in which to find whisper files",
    )
    parser.add_argument(
        "--filter",
        type=str,
        default=r".*\.wsp",
        help="Only import metrics matching this filter",
    )
    parser.add_argument(
        "--prefix",
        metavar="WHISPER_PREFIX",
        default="",
        help="prefix to prepend to metric names",
    )
    parser.add_argument(
        "--quiet",
        action="store_const",
        default=False,
        const=True,
        help="Show no output unless there are problems.",
    )
    parser.add_argument(
        "--process",
        metavar="N",
        type=int,
        help="number of concurrent process",
        default=multiprocessing.cpu_count(),
    )
    parser.add_argument(
        "--no-data", action="store_true", help="Do not import data, only metadata."
    )
    parser.add_argument(
        "--no-metadata", action="store_true", help="Do not import metadata, only data."
    )
    parser.add_argument(
        "--ignored_stages",
        nargs="*",
        help="Do not import data for these stages.",
        default=[],
    )
    parser.add_argument(
        "--time-start",
        action=command.ParseDateTimeArg,
        help="Read points written later than this time.",
        default=datetime.datetime.fromtimestamp(0),
        required=False,
    )
    parser.add_argument(
        "--time-end",
        action=command.ParseDateTimeArg,
        help="Read points written earlier than this time.",
        default=datetime.datetime.now(),
        required=False,
    )
    bg_settings.add_argparse_arguments(parser)
    opts = parser.parse_args(args)
    opts.ignored_stages = [bg_metric.Stage.from_string(s) for s in opts.ignored_stages]
    return opts