示例#1
0
def _validate_general_host_attributes(host_attributes,
                                      extra_attrs: Sequence[str], new: bool):
    """Check if the given attribute name exists, no type check"""
    all_host_attribute_names = _retrieve_host_attributes()
    all_host_attribute_names.extend(extra_attrs)
    for name, value in host_attributes.items():
        if name not in all_host_attribute_names:
            raise MKUserError(
                None,
                _("Unknown attribute: %s") % escaping.escape_attribute(name))

        # For real host attributes validate the values
        try:
            attr: Optional[ABCHostAttribute] = host_attribute(name)
        except KeyError:
            attr = None

        if attr is not None:
            if attr.needs_validation("host", new):
                attr.validate_input(value, "")

        # The site attribute gets an extra check
        if name == "site" and value not in allsites().keys():
            raise MKUserError(
                None,
                _("Unknown site %s") % escaping.escape_attribute(value))
示例#2
0
def _validate_general_host_attributes(host_attributes, new):
    # inventory_failed and site are no "real" host_attributes (TODO: Clean this up!)
    all_host_attribute_names = list(
        host_attribute_registry.keys()) + ["inventory_failed", "site"]
    for name, value in host_attributes.items():
        if name not in all_host_attribute_names:
            raise MKUserError(
                None,
                _("Unknown attribute: %s") % escaping.escape_attribute(name))

        # For real host attributes validate the values
        try:
            attr: Optional[ABCHostAttribute] = watolib.host_attribute(name)
        except KeyError:
            attr = None

        if attr is not None:
            if attr.needs_validation("host", new):
                attr.validate_input(value, "")

        # The site attribute gets an extra check
        if name == "site" and value not in allsites().keys():
            raise MKUserError(
                None,
                _("Unknown site %s") % escaping.escape_attribute(value))
示例#3
0
 def authorized_login_sites(self) -> SiteConfigurations:
     login_site_ids = site_config.get_login_slave_sites()
     return self.authorized_sites(
         SiteConfigurations({
             site_id: s
             for site_id, s in site_config.allsites().items()
             if site_id in login_site_ids  #
         }))
示例#4
0
    def show(self):
        only_sites = snapin_site_choice(
            "performance", user_sites.get_configured_site_choices())

        def write_line(left, right, show_more):
            html.open_tr(class_="show_more_mode" if show_more else "basic")
            html.td(left, class_="left")
            html.td(HTMLWriter.render_strong(right), class_="right")
            html.close_tr()

        html.open_table(class_=["performance"])

        try:
            sites.live().set_only_sites(only_sites)
            data = sites.live().query(
                "GET status\nColumns: service_checks_rate host_checks_rate "
                "external_commands_rate connections_rate forks_rate "
                "log_messages_rate cached_log_messages\n")
        finally:
            sites.live().set_only_sites(None)

        for what, show_more, col, format_str in [
            ("Service checks", False, 0, "%.2f/s"),
            ("Host checks", False, 1, "%.2f/s"),
            ("External commands", True, 2, "%.2f/s"),
            ("Livestatus-conn.", True, 3, "%.2f/s"),
            ("Process creations", True, 4, "%.2f/s"),
            ("New log messages", True, 5, "%.2f/s"),
            ("Cached log messages", True, 6, "%d"),
        ]:
            write_line(what + ":",
                       format_str % sum(row[col] for row in data),
                       show_more=show_more)

        if only_sites is None and len(site_config.allsites()) == 1:
            try:
                data = sites.live().query(
                    "GET status\nColumns: external_command_buffer_slots "
                    "external_command_buffer_max\n")
            finally:
                sites.live().set_only_sites(None)
            size = sum([row[0] for row in data])
            maxx = sum([row[1] for row in data])
            write_line(_("Com. buf. max/total"),
                       "%d / %d" % (maxx, size),
                       show_more=True)

        html.close_table()
示例#5
0
    def authorized_sites(
        self,
        unfiltered_sites: Optional[SiteConfigurations] = None
    ) -> SiteConfigurations:
        if unfiltered_sites is None:
            unfiltered_sites = site_config.allsites()

        authorized_sites = self.get_attribute("authorized_sites")
        if authorized_sites is None:
            return SiteConfigurations(dict(unfiltered_sites))

        return SiteConfigurations({
            site_id: s
            for site_id, s in unfiltered_sites.items()
            if site_id in authorized_sites  #
        })
示例#6
0
 def _validate(self, value):
     if value not in allsites().keys():
         raise self.make_error("unknown_site", site=value)