Exemplo n.º 1
0
    def _page_menu(
        self, acktime: float, failed_notifications: LivestatusResponse, breadcrumb: Breadcrumb
    ) -> PageMenu:
        confirm_url = make_simple_link(
            make_confirm_link(
                url=makeactionuri(
                    request, transactions, [("acktime", str(acktime)), ("_confirm", "1")]
                ),
                message=_("Do you really want to acknowledge all failed notifications up to %s?")
                % cmk.utils.render.date_and_time(acktime),
            )
        )

        return PageMenu(
            dropdowns=[
                PageMenuDropdown(
                    name="actions",
                    title=_("Actions"),
                    topics=[
                        PageMenuTopic(
                            title=_("Actions"),
                            entries=[
                                PageMenuEntry(
                                    title=_("Confirm"),
                                    icon_name="save",
                                    item=confirm_url,
                                    is_shortcut=True,
                                    is_suggested=True,
                                    is_enabled=bool(failed_notifications),
                                ),
                            ],
                        ),
                    ],
                ),
            ],
            breadcrumb=breadcrumb,
        )
Exemplo n.º 2
0
 def _search_folder_page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="hosts",
                 title=_("Hosts"),
                 topics=[
                     PageMenuTopic(
                         title=_("On selected hosts"),
                         entries=list(
                             self._page_menu_entries_selected_hosts()),
                     ),
                     make_checkbox_selection_topic(),
                 ],
             ),
             PageMenuDropdown(
                 name="search",
                 title=_("Search"),
                 topics=[
                     PageMenuTopic(
                         title=_("Search hosts"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Refine search"),
                                 icon_name="search",
                                 item=make_simple_link(
                                     self._folder.url([("mode", "search")
                                                       ])),
                                 is_shortcut=True,
                             ),
                         ],
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
Exemplo n.º 3
0
 def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="connections",
                 title=_("Connections"),
                 topics=[
                     PageMenuTopic(
                         title=_("Add connection"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Add connection"),
                                 icon_name="new",
                                 item=make_simple_link(
                                     watolib.folder_preserving_link([
                                         ("mode", "edit_ldap_connection")
                                     ])),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                 ],
             ),
             PageMenuDropdown(
                 name="related",
                 title=_("Related"),
                 topics=[
                     PageMenuTopic(
                         title=_("Setup"),
                         entries=list(self._page_menu_entries_related()),
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
Exemplo n.º 4
0
def _log_list_page_menu(breadcrumb: Breadcrumb) -> PageMenu:
    return PageMenu(
        dropdowns=[
            PageMenuDropdown(
                name="logs",
                title=_("Logs"),
                topics=[
                    PageMenuTopic(
                        title=_("Acknowledge"),
                        entries=list(_page_menu_entry_acknowledge()),
                    ),
                ],
            ),
            PageMenuDropdown(
                name="related",
                title=_("Related"),
                topics=[
                    PageMenuTopic(
                        title=_("Setup"),
                        entries=[
                            PageMenuEntry(
                                title=_("Analyze patterns"),
                                icon_name="analyze",
                                item=make_simple_link(
                                    makeuri_contextless(
                                        request,
                                        [("mode", "pattern_editor")],
                                        filename="wato.py",
                                    )),
                            ),
                        ],
                    ),
                ],
            ),
        ],
        breadcrumb=breadcrumb,
    )
Exemplo n.º 5
0
 def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="attributes",
                 title=_("Attributes"),
                 topics=[
                     PageMenuTopic(
                         title=_("Create"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Add attribute"),
                                 icon_name="new",
                                 item=make_simple_link(
                                     watolib.folder_preserving_link([
                                         ("mode",
                                          "edit_%s_attr" % self._type)
                                     ])),
                             ),
                         ],
                     ),
                 ],
             ),
             PageMenuDropdown(
                 name="related",
                 title=_("Related"),
                 topics=[
                     PageMenuTopic(
                         title=_("Setup"),
                         entries=list(self._page_menu_entries_related()),
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
Exemplo n.º 6
0
    def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
        menu = make_simple_form_page_menu(breadcrumb,
                                          form_name="value_editor",
                                          button_name="save")

        reset_possible = self._config_variable.allow_reset(
        ) and self._is_configured()
        default_values = watolib.ABCConfigDomain.get_all_default_globals()
        defvalue = default_values[self._varname]
        value = self._current_settings.get(
            self._varname, self._global_settings.get(self._varname, defvalue))
        menu.dropdowns[0].topics[0].entries.append(
            PageMenuEntry(
                title=_("Remove explicit setting")
                if value == defvalue else _("Reset to default"),
                icon_name="reset",
                item=make_form_submit_link(form_name="value_editor",
                                           button_name="_reset"),
                is_enabled=reset_possible,
                is_shortcut=True,
                is_suggested=True,
            ))

        return menu
Exemplo n.º 7
0
 def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
     menu = PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="roles",
                 title=_("Roles"),
                 topics=[
                     PageMenuTopic(
                         title=_("Overview"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Permission matrix"),
                                 icon_name="matrix",
                                 item=make_simple_link(
                                     watolib.folder_preserving_link([("mode", "role_matrix")])),
                             ),
                         ],
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
     return menu
Exemplo n.º 8
0
 def _page_menu(self, breadcrumb: Breadcrumb, crash_info: CrashInfo) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="crash_reports",
                 title=_("Crash reports"),
                 topics=[
                     PageMenuTopic(
                         title=_("This crash report"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Download"),
                                 icon_name="download",
                                 item=make_simple_link(
                                     makeuri(request, [], filename="download_crash_report.py")
                                 ),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                 ],
             ),
             PageMenuDropdown(
                 name="related",
                 title=_("Related"),
                 topics=[
                     PageMenuTopic(
                         title=_("Monitoring"),
                         entries=list(self._page_menu_entries_related_monitoring(crash_info)),
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
Exemplo n.º 9
0
 def page_menu(self, breadcrumb) -> PageMenu:
     menu = make_simple_form_page_menu(breadcrumb,
                                       form_name="diagnostics",
                                       button_name="_collect_dump",
                                       save_title=_("Collect dump"))
     menu.dropdowns.insert(
         1,
         PageMenuDropdown(
             name="related",
             title=_("Related"),
             topics=[
                 PageMenuTopic(
                     title=_("Setup"),
                     entries=[
                         PageMenuEntry(
                             title=_("Analyze configuration"),
                             icon_name="analyze_config",
                             item=make_simple_link("wato.py?mode=analyze_config"),
                         ),
                     ],
                 ),
             ],
         ))
     return menu
Exemplo n.º 10
0
def _page_menu_entry_acknowledge(
        site: Optional[config.SiteId] = None,
        host_name: Optional[HostName] = None,
        int_filename: Optional[str] = None) -> Iterator[PageMenuEntry]:
    if not config.user.may("general.act") or (host_name and
                                              not may_see(site, host_name)):
        return

    if int_filename:
        label = _("Clear log")
    else:
        label = _("Clear logs")

    urivars: HTTPVariables = [('_ack', '1')]
    if int_filename:
        urivars.append(("file", int_filename))

    yield PageMenuEntry(
        title=label,
        icon_name="delete",
        item=make_simple_link(html.makeactionuri(urivars)),
        is_shortcut=True,
        is_suggested=True,
    )
Exemplo n.º 11
0
    def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
        menu = make_simple_form_page_menu(_("Host"),
                                          breadcrumb,
                                          form_name="rename_host",
                                          button_name="rename",
                                          save_title=_("Rename"))

        host_renaming_job = RenameHostsBackgroundJob()
        actions_dropdown = menu.dropdowns[0]
        actions_dropdown.topics.append(
            PageMenuTopic(
                title=_("Last result"),
                entries=[
                    PageMenuEntry(
                        title=_("Show last rename result"),
                        icon_name="background_job_details",
                        item=make_simple_link(host_renaming_job.detail_url()),
                        is_enabled=host_renaming_job.is_available(),
                    ),
                ],
            ))

        menu.dropdowns.append(
            PageMenuDropdown(
                name="hosts",
                title=_("Hosts"),
                topics=[
                    PageMenuTopic(
                        title=_("For this host"),
                        entries=list(
                            page_menu_host_entries(self.name(), self._host)),
                    ),
                ],
            ))

        return menu
Exemplo n.º 12
0
 def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="hosts",
                 title=_("Hosts"),
                 topics=[
                     self._page_menu_save_topic(),
                     PageMenuTopic(
                         title=_("For this host"),
                         entries=list(
                             page_menu_host_entries(self.name(),
                                                    self._host)),
                     ),
                     PageMenuTopic(
                         title=_("For all hosts on site %s") %
                         self._host.site_id(),
                         entries=[
                             PageMenuEntry(
                                 title=_("Update DNS cache"),
                                 icon_name="update",
                                 item=make_simple_link(
                                     html.makeactionuri([
                                         ("_update_dns_cache", "1")
                                     ])),
                                 shortcut_title=_("Update site DNS cache"),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
Exemplo n.º 13
0
def page_menu_host_entries(mode_name: str,
                           host: CREHost) -> Iterator[PageMenuEntry]:
    if mode_name != "edit_host":
        yield PageMenuEntry(
            title=_("Properties"),
            icon_name="edit",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "edit_host"),
                                                ("host", host.name())])),
        )

    if mode_name != "inventory":
        yield PageMenuEntry(
            title=_("Service configuration"),
            icon_name="services",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "inventory"),
                                                ("host", host.name())])),
        )

    if mode_name != "diag_host" and not host.is_cluster():
        yield PageMenuEntry(
            title=_("Connection tests"),
            icon_name="diagnose",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "diag_host"),
                                                ("host", host.name())])),
        )

    if mode_name != "object_parameters" and user.may("wato.rulesets"):
        yield PageMenuEntry(
            title=_("Effective parameters"),
            icon_name="rulesets",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "object_parameters"),
                                                ("host", host.name())])),
        )

    if mode_name == "object_parameters" or mode_name == "edit_host" and user.may(
            "wato.rulesets"):
        yield PageMenuEntry(
            title=_("Rules"),
            icon_name="rulesets",
            item=make_simple_link(
                makeuri_contextless(
                    request,
                    [
                        ("mode", "rule_search"),
                        ("filled_in", "search"),
                        ("search_p_ruleset_deprecated", "OFF"),
                        ("search_p_rule_host_list_USE", "ON"),
                        ("search_p_rule_host_list", host.name()),
                    ],
                    filename="wato.py",
                )),
        )

    yield make_host_status_link(host_name=host.name(), view_name="hoststatus")

    if user.may("wato.rulesets") and host.is_cluster():
        yield PageMenuEntry(
            title=_("Clustered services"),
            icon_name="rulesets",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "edit_ruleset"),
                                                ("varname",
                                                 "clustered_services")])),
        )

    if watolib.has_agent_bakery() and user.may("wato.download_agents"):
        yield PageMenuEntry(
            title=_("Monitoring agent"),
            icon_name="agents",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "agent_of_host"),
                                                ("host", host.name())])),
        )

    if mode_name == "edit_host" and not host.locked():
        if user.may("wato.rename_hosts"):
            yield PageMenuEntry(
                title=_("Rename"),
                icon_name="rename_host",
                item=make_simple_link(
                    watolib.folder_preserving_link([("mode", "rename_host"),
                                                    ("host", host.name())])),
            )

        if user.may("wato.manage_hosts") and user.may("wato.clone_hosts"):
            yield PageMenuEntry(
                title=_("Clone"),
                icon_name="insert",
                item=make_simple_link(host.clone_url()),
            )

        yield PageMenuEntry(
            title=_("Delete"),
            icon_name="delete",
            item=make_simple_link(
                make_confirm_link(
                    url=makeactionuri(request, transactions,
                                      [("delete", "1")]),
                    message=_(
                        "Do you really want to delete the host <tt>%s</tt>?") %
                    host.name(),
                )),
        )

        if user.may("wato.auditlog"):
            yield PageMenuEntry(
                title=_("Audit log"),
                icon_name="auditlog",
                item=make_simple_link(
                    make_object_audit_log_url(host.object_ref())),
            )
Exemplo n.º 14
0
 def _page_menu(
     self,
     breadcrumb: Breadcrumb,
     site_id: SiteId,
     host_name: HostName,
     service_description: str,
 ) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="robotmk_logs",
                 title=_("RobotMK logs"),
                 topics=[
                     PageMenuTopic(
                         title=_("This log"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Download"),
                                 icon_name="download",
                                 item=make_simple_link(
                                     makeuri(
                                         request,
                                         [
                                             ("report_type",
                                              self._report_type()),
                                             ("site", site_id),
                                             ("host", host_name),
                                             ("service",
                                              service_description),
                                         ],
                                         filename=
                                         "download_robotmk_report.py",
                                     )),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                     PageMenuTopic(
                         title=_("Other logs for this service"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Last error log")
                                 if self._is_last_log() else _("Last log"),
                                 icon_name="robotmk_error"
                                 if self._is_last_log() else "robotmk",
                                 item=make_simple_link(
                                     makeuri(
                                         request,
                                         [
                                             (
                                                 "report_type",
                                                 "robotmk_error"
                                                 if self._is_last_log() else
                                                 "robotmk",
                                             ),
                                             ("site", site_id),
                                             ("host", host_name),
                                             ("service",
                                              service_description),
                                         ],
                                         filename="robotmk.py",
                                     )),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
Exemplo n.º 15
0
 def _page_menu_entries_filter(self) -> Iterator[PageMenuEntry]:
     yield PageMenuEntry(
         title="",
         icon_name="trans",
         item=PageMenuSearch(),
     )
Exemplo n.º 16
0
 def _page_menu_entries_related(self) -> Iterator[PageMenuEntry]:
     yield PageMenuEntry(
         title=_("Sites"),
         icon_name="sites",
         item=make_simple_link("wato.py?mode=sites"),
     )
Exemplo n.º 17
0
def _show_file_page_menu(breadcrumb: Breadcrumb, site_id: SiteId,
                         host_name: HostName, int_filename: str) -> PageMenu:

    menu = PageMenu(
        dropdowns=[
            PageMenuDropdown(
                name="logs",
                title=_("Logs"),
                topics=[
                    PageMenuTopic(
                        title=_("This log file"),
                        entries=list(
                            _page_menu_entry_acknowledge(
                                site_id, host_name, int_filename)),
                    ),
                    PageMenuTopic(
                        title=_("Log files"),
                        entries=[
                            PageMenuEntry(
                                title=_("Log files of host %s") % host_name,
                                icon_name="logwatch",
                                item=make_simple_link(
                                    makeuri(request, [("file", "")])),
                            ),
                            PageMenuEntry(
                                title=_("All log files"),
                                icon_name="logwatch",
                                item=make_simple_link(
                                    makeuri(request,
                                            [("site", ""), ("host", ""),
                                             ("file", "")])),
                            ),
                        ],
                    ),
                ],
            ),
            PageMenuDropdown(
                name="related",
                title=_("Related"),
                topics=[
                    PageMenuTopic(
                        title=_("Monitoring"),
                        entries=[
                            PageMenuEntry(
                                title=_("Services of host"),
                                icon_name="services",
                                item=make_simple_link(
                                    services_url(site_id, host_name)),
                            ),
                        ],
                    ),
                    PageMenuTopic(
                        title=_("Setup"),
                        entries=[
                            PageMenuEntry(
                                title=_("Analyze host patterns"),
                                icon_name="analyze",
                                item=make_simple_link(
                                    analyse_url(site_id, host_name)),
                            ),
                        ],
                    ),
                ],
            ),
        ],
        breadcrumb=breadcrumb,
    )
    _extend_display_dropdown(menu)
    return menu
Exemplo n.º 18
0
def _host_log_list_page_menu(breadcrumb: Breadcrumb, site_id: SiteId,
                             host_name: HostName) -> PageMenu:
    return PageMenu(
        dropdowns=[
            PageMenuDropdown(
                name="logs",
                title=_("Logs"),
                topics=[
                    PageMenuTopic(
                        title=_("Current log files"),
                        entries=list(
                            _page_menu_entry_acknowledge(site_id, host_name)),
                    ),
                    PageMenuTopic(
                        title=_("Log files"),
                        entries=[
                            PageMenuEntry(
                                title=_("All log files"),
                                icon_name="logwatch",
                                item=make_simple_link(
                                    makeuri(
                                        request,
                                        [("site", ""), ("host", ""),
                                         ("file", "")],
                                    )),
                            ),
                        ],
                    ),
                ],
            ),
            PageMenuDropdown(
                name="related",
                title=_("Related"),
                topics=[
                    PageMenuTopic(
                        title=_("Monitoring"),
                        entries=[
                            PageMenuEntry(
                                title=_("Services of host"),
                                icon_name="services",
                                item=make_simple_link(
                                    services_url(site_id, host_name)),
                            ),
                        ],
                    ),
                    PageMenuTopic(
                        title=_("Setup"),
                        entries=[
                            PageMenuEntry(
                                title=_("Analyze host patterns"),
                                icon_name="analyze",
                                item=make_simple_link(
                                    analyse_url(site_id, host_name)),
                            ),
                        ],
                    ),
                ],
            ),
        ],
        breadcrumb=breadcrumb,
    )
Exemplo n.º 19
0
 def _page_menu_entries_related(self) -> Iterator[PageMenuEntry]:
     yield PageMenuEntry(
         title=_("Users"),
         icon_name="users",
         item=make_simple_link(watolib.folder_preserving_link([("mode", "users")])),
     )
Exemplo n.º 20
0
 def _page_menu_entries_search(self) -> Iterator[PageMenuEntry]:
     yield PageMenuEntry(
         title=_("Search hosts"),
         icon_name="search",
         item=make_simple_link(watolib.folder_preserving_link([("mode", "search")])),
     )
Exemplo n.º 21
0
    def _page_menu_entries_selected_hosts(self) -> Iterator[PageMenuEntry]:
        if not config.user.may("wato.edit_hosts") and not config.user.may("wato.manage_hosts"):
            return

        hostnames = sorted(self._folder.hosts().keys(), key=utils.key_num_split)
        search_text = html.request.var("search")

        # Remember if that host has a target folder (i.e. was imported with
        # a folder information but not yet moved to that folder). If at least
        # one host has a target folder, then we show an additional bulk action.
        at_least_one_imported = False
        for hostname in hostnames:
            if search_text and (search_text.lower() not in hostname.lower()):
                continue

            host = self._folder.host(hostname)
            effective = host.effective_attributes()

            if effective.get("imported_folder"):
                at_least_one_imported = True

        if not self._folder.locked_hosts():
            if config.user.may("wato.manage_hosts"):
                yield PageMenuEntry(
                    title=_("Delete hosts"),
                    icon_name="delete",
                    item=make_form_submit_link(
                        form_name="hosts",
                        button_name="_bulk_delete",
                    ),
                )

            if config.user.may("wato.edit_hosts"):
                yield PageMenuEntry(
                    title=_("Edit attributes"),
                    icon_name="edit",
                    item=make_form_submit_link(
                        form_name="hosts",
                        button_name="_bulk_edit",
                    ),
                )

                yield PageMenuEntry(
                    title=_("Remove explicit attribute settings"),
                    icon_name="cleanup",
                    item=make_form_submit_link(
                        form_name="hosts",
                        button_name="_bulk_cleanup",
                    ),
                )

        if config.user.may("wato.services"):
            yield PageMenuEntry(
                title=_("Discover services"),
                icon_name="services",
                item=make_form_submit_link(
                    form_name="hosts",
                    button_name="_bulk_inventory",
                ),
            )

        if not self._folder.locked_hosts():
            if config.user.may("wato.parentscan"):
                yield PageMenuEntry(
                    title=_("Detect network parent hosts"),
                    icon_name="parentscan",
                    item=make_form_submit_link(
                        form_name="hosts",
                        button_name="_parentscan",
                    ),
                )
            if config.user.may("wato.edit_hosts") and config.user.may("wato.move_hosts"):
                yield PageMenuEntry(
                    title=_("Move to other folder"),
                    icon_name="move",
                    name="move_rules",
                    item=PageMenuPopup(self._render_bulk_move_form()),
                )

                if at_least_one_imported:
                    yield PageMenuEntry(
                        title=_("Move to target folders"),
                        icon_name="move",
                        item=make_form_submit_link(
                            form_name="hosts",
                            button_name="_bulk_movetotarget",
                        ),
                    )
Exemplo n.º 22
0
 def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu:
     return PageMenu(
         dropdowns=[
             PageMenuDropdown(
                 name="users",
                 title=_("Users"),
                 topics=[
                     PageMenuTopic(
                         title=_("Add user"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Add user"),
                                 icon_name="new",
                                 item=make_simple_link(
                                     watolib.folder_preserving_link([("mode", "edit_user")])),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                     PageMenuTopic(
                         title=_("On selected users"),
                         entries=[
                             PageMenuEntry(
                                 title=_("Delete users"),
                                 shortcut_title=_("Delete selected users"),
                                 icon_name="delete",
                                 item=make_confirmed_form_submit_link(
                                     form_name="bulk_delete_form",
                                     button_name="_bulk_delete_users",
                                     message=_(
                                         "Do you really want to delete the selected users?"),
                                 ),
                                 is_shortcut=True,
                                 is_suggested=True,
                             ),
                         ],
                     ),
                     PageMenuTopic(
                         title=_("Synchronized users"),
                         entries=list(self._page_menu_entries_synchronized_users()),
                     ),
                     PageMenuTopic(
                         title=_("Notify users"),
                         entries=list(self._page_menu_entries_notify_users()),
                     ),
                 ],
             ),
             PageMenuDropdown(
                 name="related",
                 title=_("Related"),
                 topics=[
                     PageMenuTopic(
                         title=_("Setup"),
                         entries=list(self._page_menu_entries_related()),
                     ),
                 ],
             ),
         ],
         breadcrumb=breadcrumb,
     )
Exemplo n.º 23
0
def page_menu_host_entries(mode_name: str, host: CREHost) -> Iterator[PageMenuEntry]:
    if mode_name != "edit_host":
        yield PageMenuEntry(
            title=_("Properties"),
            icon_name="edit",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "edit_host"), ("host", host.name())])),
        )

    if mode_name != "inventory":
        yield PageMenuEntry(
            title=_("Service configuration"),
            icon_name="services",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "inventory"), ("host", host.name())])),
        )

    if mode_name != "diag_host" and not host.is_cluster():
        yield PageMenuEntry(
            title=_("Connection tests"),
            icon_name="diagnose",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "diag_host"), ("host", host.name())])),
        )

    if mode_name != "object_parameters" and config.user.may('wato.rulesets'):
        yield PageMenuEntry(
            title=_("Effective parameters"),
            icon_name="rulesets",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "object_parameters"),
                                                ("host", host.name())])),
        )

    yield make_host_status_link(host_name=host.name(), view_name="hoststatus")

    if config.user.may('wato.rulesets') and host.is_cluster():
        yield PageMenuEntry(
            title=_("Clustered services"),
            icon_name="rulesets",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "edit_ruleset"),
                                                ("varname", "clustered_services")])),
        )

    if watolib.has_agent_bakery() and config.user.may('wato.download_agents'):
        yield PageMenuEntry(
            title=_("Monitoring agent"),
            icon_name="agents",
            item=make_simple_link(
                watolib.folder_preserving_link([("mode", "agent_of_host"), ("host", host.name())])),
        )

    if mode_name == "edit_host" and not host.locked():
        if config.user.may("wato.rename_hosts"):
            yield PageMenuEntry(
                title=_("Rename"),
                icon_name="rename_host",
                item=make_simple_link(
                    watolib.folder_preserving_link([("mode", "rename_host"),
                                                    ("host", host.name())])),
            )

        if config.user.may("wato.manage_hosts") and config.user.may("wato.clone_hosts"):
            yield PageMenuEntry(
                title=_("Clone"),
                icon_name="insert",
                item=make_simple_link(host.clone_url()),
            )

        yield PageMenuEntry(
            title=_("Delete"),
            icon_name="delete",
            item=make_simple_link(html.makeactionuri([("delete", "1")])),
        )
Exemplo n.º 24
0
    def _page_menu_entries_selected_hosts(self) -> Iterator[PageMenuEntry]:
        if not config.user.may("wato.edit_hosts") and not config.user.may("wato.manage_hosts"):
            return

        hostnames = sorted(self._folder.hosts().keys(), key=utils.key_num_split)
        is_enabled = bool(self._folder.has_hosts())
        search_text = html.request.var("search")

        # Remember if that host has a target folder (i.e. was imported with
        # a folder information but not yet moved to that folder). If at least
        # one host has a target folder, then we show an additional bulk action.
        at_least_one_imported = False
        for hostname in hostnames:
            if search_text and (search_text.lower() not in hostname.lower()):
                continue

            host = self._folder.host(hostname)
            effective = host.effective_attributes()

            if effective.get("imported_folder"):
                at_least_one_imported = True

        if not self._folder.locked_hosts():
            if config.user.may("wato.manage_hosts"):
                yield PageMenuEntry(
                    title=_("Delete hosts"),
                    icon_name="delete",
                    item=make_confirmed_form_submit_link(
                        form_name="hosts",
                        button_name="_bulk_delete",
                        message=_("Do you really want to delete the selected hosts?"),
                    ),
                    is_enabled=is_enabled,
                )

            if config.user.may("wato.edit_hosts"):
                yield PageMenuEntry(
                    title=_("Edit attributes"),
                    icon_name="edit",
                    item=make_form_submit_link(
                        form_name="hosts",
                        button_name="_bulk_edit",
                    ),
                    is_enabled=is_enabled,
                )

                yield PageMenuEntry(
                    title=_("Remove explicit attribute settings"),
                    icon_name="cleanup",
                    item=make_form_submit_link(
                        form_name="hosts",
                        button_name="_bulk_cleanup",
                    ),
                    is_enabled=is_enabled,
                )

        if config.user.may("wato.services"):
            yield PageMenuEntry(
                title=_("Discover services"),
                icon_name="services",
                item=make_form_submit_link(
                    form_name="hosts",
                    button_name="_bulk_inventory",
                ),
                is_enabled=is_enabled,
            )

        if not self._folder.locked_hosts():
            if config.user.may("wato.parentscan"):
                yield PageMenuEntry(
                    title=_("Detect network parent hosts"),
                    icon_name="parentscan",
                    item=make_form_submit_link(
                        form_name="hosts",
                        button_name="_parentscan",
                    ),
                    is_enabled=is_enabled,
                )
            if config.user.may("wato.edit_hosts") and config.user.may("wato.move_hosts"):
                yield PageMenuEntry(
                    title=_("Move to other folder"),
                    icon_name="move",
                    name="move_rules",
                    item=PageMenuPopup(self._render_bulk_move_form()),
                    is_enabled=is_enabled,
                )

                if at_least_one_imported:
                    yield PageMenuEntry(
                        title=_("Move to target folders"),
                        icon_name="move",
                        item=make_confirmed_form_submit_link(
                            form_name="hosts",
                            button_name="_bulk_movetotarget",
                            message=_('You are going to move the selected hosts to folders '
                                      'representing their original folder location in the system '
                                      'you did the import from. Please make sure that you have '
                                      'done an <b>inventory</b> before moving the hosts.'),
                        ),
                        is_enabled=is_enabled,
                    )