Ejemplo n.º 1
0
def _fts(settings: Dict[str, Any],
         health_check: c2cwsgiutils.health_check.HealthCheck) -> None:
    fts_settings = settings["fulltextsearch"]
    if fts_settings.get("disable", False):
        return

    def get_both(
        request: pyramid.request.Request
    ) -> Dict[str, Union[str, Dict[str, str]]]:
        return build_url("Check the fulltextsearch",
                         request.route_path("fulltextsearch"), request)

    def check(_request: pyramid.request.Request,
              response: pyramid.response.Response) -> None:
        assert response.json()["features"], "No result"

    health_check.add_url_check(
        name="checker_fulltextsearch",
        url=lambda r: get_both(r)["url"],  # type: ignore
        headers=lambda r: get_both(r)["headers"],  # type: ignore
        params={
            "query": fts_settings["search"],
            "limit": "1"
        },
        check_cb=check,
        level=fts_settings["level"],
    )
Ejemplo n.º 2
0
def _routes(settings: Dict[str, Any],
            health_check: c2cwsgiutils.health_check.HealthCheck) -> None:
    routes_settings = settings["routes"]
    for route in routes_settings["routes"]:
        if route.get("checker_name",
                     route["name"]) not in routes_settings["disable"]:
            name = "checker_routes_" + route.get("checker_name", route["name"])

            class GetRequest:
                """Get the request information about the current route name."""
                def __init__(self, route_name: str, type_: str) -> None:
                    self.route_name = route_name
                    self.type = type_

                def __call__(
                    self, request: pyramid.request.Request
                ) -> Union[str, Dict[str, str]]:
                    return build_url("route",
                                     request.route_path(self.route_name),
                                     request)[self.type]

            health_check.add_url_check(
                url=GetRequest(route["name"], "url"),  # type: ignore
                name=name,
                params=route.get("params", None),
                headers=GetRequest(route["name"], "headers"),  # type: ignore
                level=route["level"],
                timeout=30,
            )
Ejemplo n.º 3
0
def _routes(settings, health_check):
    routes_settings = settings["routes"]
    for route in routes_settings["routes"]:
        if route.get("checker_name",
                     route["name"]) not in routes_settings["disable"]:
            name = "checker_routes_" + route.get("checker_name", route["name"])

            class GetRequest:
                """
                Get the request information about the current route name
                """
                def __init__(self, route_name, type_):
                    self.route_name = route_name
                    self.type = type_

                def __call__(self, request):
                    return build_url("route",
                                     request.route_path(self.route_name),
                                     request)[self.type]

            health_check.add_url_check(
                url=GetRequest(route['name'], 'url'),
                name=name,
                params=route.get("params", None),
                headers=GetRequest(route['name'], 'headers'),
                level=route["level"],
                timeout=30,
            )
Ejemplo n.º 4
0
def _lang_files(global_settings, settings, health_check):
    lang_settings = settings["lang"]
    available_locale_names = global_settings["available_locale_names"]

    default_name = global_settings["default_locale_name"]
    assert \
        default_name in available_locale_names, \
        "default_locale_name '{}' not in available_locale_names: {}".format(
            default_name, ", ".join(available_locale_names)
        )

    for type_ in lang_settings.get("files", []):
        for lang in available_locale_names:
            if type_ == "cgxp-api":
                url = "{package}_geoportal:static/build/api-lang-{lang}.js"
            elif type_ == "ngeo":
                url = "{package}_geoportal:static-ngeo/build/{lang}.json"
            else:
                raise Exception("Your language type value '%s' is not valid, "
                                "available values [cgxp-api, ngeo]" % type_)
            name = "checker_lang_{}_{}".format(type_, lang)

            def get_both(url, lang, request):
                return build_url(
                    name,
                    request.static_path(url.format(package=global_settings["package"], lang=lang)),
                    request
                )

            health_check.add_url_check(
                name=name,
                url=lambda r, u=url, la=lang: get_both(u, la, r)["url"],
                headers=lambda r, u=url, la=lang: get_both(u, la, r)["headers"],
                level=lang_settings["level"],
            )
Ejemplo n.º 5
0
def _lang_files(
    global_settings: Dict[str, Any],
    settings: Dict[str, Any],
    health_check: c2cwsgiutils.health_check.HealthCheck,
) -> None:
    lang_settings = settings["lang"]
    available_locale_names = global_settings["available_locale_names"]

    default_name = global_settings["default_locale_name"]
    assert (
        default_name in available_locale_names
    ), "default_locale_name '{}' not in available_locale_names: {}".format(
        default_name, ", ".join(available_locale_names))

    for type_ in lang_settings.get("files", []):
        for lang in available_locale_names:
            if type_ == "ngeo":
                url = "/etc/geomapfish/static/{lang}.json"
            else:
                raise Exception("Your language type value '%s' is not valid, "
                                "available values [ngeo]" % type_)

            name = "checker_lang_{}_{}".format(type_, lang)

            class GetRequest:
                """
                Get the request information about the current route name
                """
                def __init__(self, name: str, url: str, lang: str,
                             type_: str) -> None:
                    self.name = name
                    self.url = url
                    self.lang = lang
                    self.type = type_

                def __call__(
                    self, request: pyramid.request.Request
                ) -> Union[str, Dict[str, str]]:
                    return build_url(
                        self.name,
                        request.static_path(
                            self.url.format(package=global_settings["package"],
                                            lang=self.lang)),
                        request,
                    )[self.type]

            health_check.add_url_check(
                name=name,
                url=GetRequest(name, url, lang, "url"),
                headers=GetRequest(name, url, lang, "headers"),
                level=lang_settings["level"],
            )
Ejemplo n.º 6
0
def _lang_files(global_settings, settings, health_check):
    lang_settings = settings["lang"]
    available_locale_names = global_settings["available_locale_names"]

    default_name = global_settings["default_locale_name"]
    assert \
        default_name in available_locale_names, \
        "default_locale_name '{}' not in available_locale_names: {}".format(
            default_name, ", ".join(available_locale_names)
        )

    for type_ in lang_settings.get("files", []):
        for lang in available_locale_names:
            if type_ == "ngeo":
                url = "/etc/geomapfish/static/{lang}.json"
            else:
                raise Exception("Your language type value '%s' is not valid, "
                                "available values [ngeo]" % type_)

            name = "checker_lang_{}_{}".format(type_, lang)

            class GetRequest:
                """
                Get the request information about the current route name
                """
                def __init__(self, name, url, lang, type_):
                    self.name = name
                    self.url = url
                    self.lang = lang
                    self.type = type_

                def __call__(self, request):
                    return build_url(
                        self.name,
                        request.static_path(
                            self.url.format(package=global_settings["package"],
                                            lang=self.lang)),
                        request)[self.type]

            health_check.add_url_check(
                name=name,
                url=GetRequest(name, url, lang, 'url'),
                headers=GetRequest(name, url, lang, 'headers'),
                level=lang_settings["level"],
            )
Ejemplo n.º 7
0
def _fts(settings, health_check):
    fts_settings = settings["fulltextsearch"]
    if fts_settings.get("disable", False):
        return

    def get_both(request):
        return build_url("Check the fulltextsearch", request.route_path("fulltextsearch"), request)

    def check(_request, response):
        assert len(response.json()["features"]) > 0, "No result"

    health_check.add_url_check(
        name="checker_fulltextsearch",
        url=lambda r: get_both(r)["url"],
        headers=lambda r: get_both(r)["headers"],
        params={
            "query": fts_settings["search"],
            "limit": "1",
        },
        check_cb=check,
    )