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"], )
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, )
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, )
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"], )
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"], )
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"], )
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, )