Exemple #1
0
    def _serializer(group):
        # type: (Dict[str, str]) -> Any
        ident = group['id']
        extensions = {}
        if "customer" in group:
            customer_id = group["customer"]
            extensions[
                "customer"] = "global" if customer_id is None else customer_id
        elif is_managed_edition():
            extensions["customer"] = managed.default_customer_id()

        return constructors.domain_object(
            domain_type=name,
            identifier=ident,
            title=group['alias'],
            members={
                'title':
                constructors.object_property(
                    name='title',
                    value=group['alias'],
                    prop_format='string',
                    base=constructors.object_href(name, ident),
                ),
            },
            extensions=extensions,
        )
Exemple #2
0
def serialize_password(ident, details):
    return constructors.domain_object(
        domain_type="password",
        identifier=ident,
        title=details["title"],
        members={
            "title":
            constructors.object_property(
                name="title",
                value=details["title"],
                prop_format="string",
                base=constructors.object_href("password", ident),
            )
        },
        extensions={
            k: v
            for k, v in complement_customer(details).items() if k in (
                "comment",
                "docu_url",
                "password",
                "owned_by",
                "shared_with",
                "customer",
            )
        },
    )
Exemple #3
0
def serialize_password(details):
    return constructors.domain_object(domain_type="password",
                                      identifier=details["ident"],
                                      title=details["title"],
                                      members={
                                          "title":
                                          constructors.object_property(
                                              name='title',
                                              value=details["title"],
                                              prop_format='string',
                                              base=constructors.object_href(
                                                  'password',
                                                  details["ident"]),
                                          )
                                      },
                                      extensions={
                                          key: details[key]
                                          for key in details if key in (
                                              "comment",
                                              "docu_url",
                                              "password",
                                              "owned_by",
                                              "shared_with",
                                          )
                                      })
Exemple #4
0
def serialize_service_discovery(host, discovered_services, discovery_state):
    members = {}
    for (table_source, check_type, _checkgroup, item, _discovered_params,
         _check_params, descr, _service_state, _output, _perfdata,
         _service_labels) in discovered_services:

        if table_source == SERVICE_DISCOVERY_STATES[discovery_state]:
            service_hash = checkbox_id(check_type, item)
            members[service_hash] = {
                "service_name":
                descr,
                "check_plugin_name":
                check_type,
                "state":
                object_property(
                    name=descr,
                    title="The service is currently %s" % discovery_state,
                    value=table_source,
                    prop_format='string',
                    base='',
                    links=[
                        link_rel(
                            rel="cmk/service.move-monitored",
                            href=
                            "/objects/host/%s/service/%s/action/move/monitored"
                            % (host.ident(), service_hash),
                            method='put',
                            title='Move the service to monitored'),
                        link_rel(
                            rel="cmk/service.move-undecided",
                            href=
                            "/objects/host/%s/service/%s/action/move/undecided"
                            % (host.ident(), service_hash),
                            method='put',
                            title='Move the service to undecided'),
                        link_rel(
                            rel="cmk/service.move-ignored",
                            href=
                            "/objects/host/%s/service/%s/action/move/ignored" %
                            (host.ident(), service_hash),
                            method='put',
                            title='Move the service to ignored'),
                    ]),
            }

    return domain_object(
        domain_type='service_discovery',
        identifier='%s-services-%s' % (host.ident(), "wato"),
        title='Services discovery',
        members=members,
        extensions={},
    )
Exemple #5
0
def serialize_host_tag_group(details: Dict[str, Any]):
    return constructors.domain_object(
        domain_type='host_tag_group',
        identifier=details['id'],
        title=details['title'],
        members={
            "title": constructors.object_property(
                name='title',
                value=details['title'],
                prop_format='string',
                base=constructors.object_href('host_tag_group', details['id']),
            )
        },
        extensions={key: details[key] for key in details if key in ('topic', 'tags')})
Exemple #6
0
def serialize_host(host):
    base = '/objects/host/%s' % (host.ident(),)
    return constructors.domain_object(
        domain_type='host',
        identifier=host.id(),
        title=host.alias(),
        members={
            'folder': constructors.object_property(
                name='folder',
                value=constructors.object_href('folder', host.folder()),
                prop_format='string',
                base=base,
            ),
        },
        extensions={},
    )
Exemple #7
0
 def _serializer(group):
     # type: (Dict[str, str]) -> Any
     ident = group['id']
     return constructors.domain_object(
         domain_type=name,
         identifier=ident,
         title=group['alias'],
         members={
             'title': constructors.object_property(
                 name='title',
                 value=group['alias'],
                 prop_format='string',
                 base=constructors.object_href(name, ident),
             ),
         },
         extensions={},
     )
Exemple #8
0
def _serialize_folder(folder):
    # type: (CREFolder) -> DomainObject
    uri = '/objects/folder/%s' % (folder.id(), )
    return constructors.domain_object(
        domain_type='folder',
        identifier=folder.id(),
        title=folder.title(),
        members={
            'hosts':
            constructors.object_collection(
                name='hosts',
                entries=[
                    constructors.link_rel(
                        rel='.../value;collection="items"',
                        href=constructors.object_href('host', host),
                    ) for host in folder.hosts().values()
                ],
                base=uri,
            ),
            'move':
            constructors.object_action(
                name='move',
                base=uri,
                parameters=dict([
                    constructors.action_parameter(
                        action='move',
                        parameter='destination',
                        friendly_name=
                        'The destination folder of this move action',
                        optional=False,
                        pattern="[0-9a-fA-F]{32}|root",
                    ),
                ]),
            ),
            'title':
            constructors.object_property(
                name='title',
                value=folder.title(),
                prop_format='string',
                base=uri,
            ),
        },
        extensions={
            'attributes': folder.attributes(),
        },
    )
Exemple #9
0
def serialize_host_tag_group(details: Dict[str, Any]):
    return constructors.domain_object(
        domain_type="host_tag_group",
        identifier=details["id"],
        title=details["title"],
        members={
            "title":
            constructors.object_property(
                name="title",
                value=details["title"],
                prop_format="string",
                base=constructors.object_href("host_tag_group", details["id"]),
            )
        },
        extensions={
            key: details[key]
            for key in details if key in ("topic", "tags")
        },
    )
Exemple #10
0
def serialize_service_discovery(
    host: watolib.CREHost,
    discovered_services: CheckTable,
    discovery_phases: List[str],
):

    members = {}
    host_name = host.name()
    for entry in discovered_services:
        (table_source, check_type, _checkgroup, item, _discovered_params,
         _check_params, descr, _service_phase, _output, _perfdata,
         _service_labels, _found_on_nodes) = entry
        if _in_phase(table_source, discovery_phases):
            service_phase = _lookup_phase_name(table_source)
            members[f"{check_type}-{item}"] = object_property(
                name=descr,
                title=f"The service is currently {service_phase!r}",
                value=service_phase,
                prop_format='string',
                linkable=False,
                extensions={
                    "host_name": host_name,
                    "check_plugin_name": check_type,
                    "service_name": descr,
                    "service_item": item,
                    "service_phase": service_phase,
                },
                base='',
                links=[
                    link_rel(
                        rel="cmk/service.move-monitored",
                        href=update_service_phase.path.format(
                            host_name=host_name),
                        body_params={
                            'target_phase': 'monitored',
                            'check_type': check_type,
                            'service_item': item,
                        },
                        method='put',
                        title='Move the service to monitored',
                    ),
                    link_rel(
                        rel="cmk/service.move-undecided",
                        href=update_service_phase.path.format(
                            host_name=host_name),
                        body_params={
                            'target_phase': 'undecided',
                            'check_type': check_type,
                            'service_item': item,
                        },
                        method='put',
                        title='Move the service to undecided',
                    ),
                    link_rel(
                        rel="cmk/service.move-ignored",
                        href=update_service_phase.path.format(
                            host_name=host_name),
                        body_params={
                            'target_phase': 'ignored',
                            'check_type': check_type,
                            'service_item': item,
                        },
                        method='put',
                        title='Move the service to ignored',
                    ),
                ],
            )

    return domain_object(
        domain_type='service_discovery',
        identifier=f'{host_name}-services-wato',
        title='Services discovery',
        members=members,
        editable=False,
        deletable=False,
        extensions={},
    )
Exemple #11
0
def serialize_service_discovery(
    host: CREHost,
    discovered_services: Sequence[CheckPreviewEntry],
    discovery_phases: List[str],
):

    members = {}
    host_name = host.name()
    for entry in discovered_services:
        if _in_phase(entry.check_source, discovery_phases):
            service_phase = _lookup_phase_name(entry.check_source)
            members[
                f"{entry.check_plugin_name}-{entry.item}"] = object_property(
                    name=entry.description,
                    title=f"The service is currently {service_phase!r}",
                    value=service_phase,
                    prop_format="string",
                    linkable=False,
                    extensions={
                        "host_name": host_name,
                        "check_plugin_name": entry.check_plugin_name,
                        "service_name": entry.description,
                        "service_item": entry.item,
                        "service_phase": service_phase,
                    },
                    base="",
                    links=[
                        link_rel(
                            rel="cmk/service.move-monitored",
                            href=update_service_phase.path.format(
                                host_name=host_name),
                            body_params={
                                "target_phase": "monitored",
                                "check_type": entry.check_plugin_name,
                                "service_item": entry.item,
                            },
                            method="put",
                            title="Move the service to monitored",
                        ),
                        link_rel(
                            rel="cmk/service.move-undecided",
                            href=update_service_phase.path.format(
                                host_name=host_name),
                            body_params={
                                "target_phase": "undecided",
                                "check_type": entry.check_plugin_name,
                                "service_item": entry.item,
                            },
                            method="put",
                            title="Move the service to undecided",
                        ),
                        link_rel(
                            rel="cmk/service.move-ignored",
                            href=update_service_phase.path.format(
                                host_name=host_name),
                            body_params={
                                "target_phase": "ignored",
                                "check_type": entry.check_plugin_name,
                                "service_item": entry.item,
                            },
                            method="put",
                            title="Move the service to ignored",
                        ),
                    ],
                )

    return domain_object(
        domain_type="service_discovery",
        identifier=f"{host_name}-services-wato",
        title="Services discovery",
        members=members,
        editable=False,
        deletable=False,
        extensions={},
    )