示例#1
0
    def set_health_input_data(self, data):
        self.health_input_data = data
        if not data or not isinstance(data, dict):
            raise ValueError(terminal.fg_red() +
                             "Wrong Input Data for HealthChecker" +
                             terminal.fg_clear())

        self._set_parser_input(data)
示例#2
0
def cmdloop(shell, func, args, use_yappi, single_command):
    try:
        if use_yappi:
            import yappi
            yappi.start()
            func(*args)
            yappi.get_func_stats().print_all()
        else:
            func(*args)
    except (KeyboardInterrupt, SystemExit):
        if not single_command:
            shell.intro = terminal.fg_red() + \
                "\nTo exit asadm utility please run exit command." + \
                terminal.fg_clear()
        cmdloop(shell, func, args, use_yappi, single_command)
示例#3
0
    def __init__(self,
                 admin_version,
                 seeds,
                 user=None,
                 password=None,
                 use_services_alumni=False,
                 use_services_alt=False,
                 log_path="",
                 log_analyser=False,
                 collectinfo=False,
                 ssl_context=None,
                 only_connect_seed=False,
                 execute_only_mode=False,
                 timeout=5):

        # indicates shell created successfully and connected to cluster/collectinfo/logfile
        self.connected = True

        self.execute_only_mode = execute_only_mode

        if log_analyser:
            self.name = 'Aerospike Log Analyzer Shell'
        elif collectinfo:
            self.name = 'Aerospike Collectinfo Shell'
        else:
            self.name = 'Aerospike Interactive Shell'

        if not execute_only_mode:
            print terminal.bold() + self.name + ', version ' +\
                admin_version + terminal.reset() + "\n"

        cmd.Cmd.__init__(self)

        try:
            if log_analyser:
                if not log_path:
                    log_path = " "
                self.ctrl = LogRootController(admin_version, log_path)

                self.prompt = "Log-analyzer> "
            elif collectinfo:
                if not log_path:
                    logger.error(
                        "You have not specified any collectinfo path. Usage: asadm -c -f <collectinfopath>"
                    )
                    self.do_exit('')
                    exit(1)

                self.ctrl = CollectinfoRootController(admin_version,
                                                      clinfo_path=log_path)

                self.prompt = "Collectinfo-analyzer> "
                if not execute_only_mode:
                    self.intro = str(self.ctrl.loghdlr)
            else:
                if user is not None:
                    if password == "prompt" or password is None:
                        if sys.stdin.isatty():
                            password = getpass.getpass("Enter Password:"******"Not able to connect any cluster with " +
                                     str(seeds) + ".")
                        self.connected = False
                        return
                    else:
                        logger.critical(
                            "Not able to connect any cluster with " +
                            str(seeds) + ".")

                self.prompt = "Admin> "
                self.intro = ""
                if not execute_only_mode:
                    self.intro += str(self.ctrl.cluster) + "\n"
                    cluster_visibility_error_nodes = self.ctrl.cluster.get_visibility_error_nodes(
                    )

                    if cluster_visibility_error_nodes:
                        self.intro += terminal.fg_red(
                        ) + "Cluster Visibility error (Please check services list): %s" % (
                            ", ".join(cluster_visibility_error_nodes)
                        ) + terminal.fg_clear() + "\n"

                    cluster_down_nodes = self.ctrl.cluster.get_down_nodes()

                    if cluster_down_nodes:
                        self.intro += terminal.fg_red(
                        ) + "Extra nodes in alumni list: %s" % (", ".join(
                            cluster_down_nodes)) + terminal.fg_clear() + "\n"

            if self.use_rawinput:
                self.prompt = "\001" + terminal.bold() + terminal.fg_red() + "\002" +\
                              self.prompt + "\001" +\
                              terminal.unbold() + terminal.fg_clear() + "\002"
        except Exception as e:
            self.do_exit('')
            logger.critical(str(e))

        if not execute_only_mode:
            try:
                readline.read_history_file(ADMINHIST)
            except Exception:
                readline.write_history_file(ADMINHIST)

        self.commands = set()

        regex = re.compile("^do_(.*)$")
        commands = map(lambda v: regex.match(v).groups()[0],
                       filter(regex.search, dir(self)))

        for command in commands:
            if command != 'help':
                self.commands.add(command)