def _parse_query_parameters(request_body: Dict[str, Any]) -> Dict[str, str]: """ This function searches for the `target` field in Grafana's `SimpleJson` json. Once located, the target string is parsed by splitting on semi-colons (;). Each part in the resulting list is then split by an equal sign (=) to be read as key-value pairs. """ # Try to get the `target` targets = request_body.get("targets", []) if len(targets) > 1: logger.warn( f"The 'targets' list contains more then one element ({len(targets)}), all targets except the first one are " f"ignored.") target_obj = targets[0] if targets else {} target_query = target_obj.get("target") if target_obj else "" if not target_query: raise MLRunBadRequestError( f"Target missing in request body:\n {request_body}") parameters = {} for query in target_query.split(";"): query_parts = query.split("=") if len(query_parts) < 2: raise MLRunBadRequestError( f"Query must contain both query key and query value. Expected query_key=query_value, " f"found {query} instead.") parameters[query_parts[0]] = query_parts[1] return parameters
def _validate_query_parameters(query_parameters: Dict[str, str]): """Validates the parameters sent via Grafana's SimpleJson query""" if "target_endpoint" not in query_parameters: raise MLRunBadRequestError( f"Expected 'target_endpoint' field in query, found {query_parameters} instead" ) if query_parameters["target_endpoint"] not in NAME_TO_FUNCTION_DICTIONARY: raise MLRunBadRequestError( f"{query_parameters['target_endpoint']} unsupported in query parameters: {query_parameters}. " f"Currently supports: {','.join(NAME_TO_FUNCTION_DICTIONARY.keys())}" )
def _validate_query_parameters(query_parameters: Dict[str, str], supported_endpoints: Optional[Set[str]] = None): """Validates the parameters sent via Grafana's SimpleJson query""" if "target_endpoint" not in query_parameters: raise MLRunBadRequestError( f"Expected 'target_endpoint' field in query, found {query_parameters} instead" ) if (supported_endpoints is not None and query_parameters["target_endpoint"] not in supported_endpoints): raise MLRunBadRequestError( f"{query_parameters['target_endpoint']} unsupported in query parameters: {query_parameters}. " f"Currently supports: {','.join(supported_endpoints)}")
def get_access_key(request: Request): access_key = request.headers.get("X-V3io-Session-Key") if not access_key: raise MLRunBadRequestError( "Request header missing 'X-V3io-Session-Key' parameter." ) return access_key
def _parse_query_parameters(request_body: Dict[str, Any]) -> Dict[str, str]: """ This function searches for the target field in Grafana's SimpleJson json. Once located, the target string is parsed by splitting on semi-colons (;). Each part in the resulting list is then split by an equal sign (=) to be read as key-value pairs. """ # Try to get the target targets = request_body.get("targets", []) if len(targets) > 1: logger.warn( f"The 'targets' list contains more then one element ({len(targets)}), all targets except the first one are " f"ignored.") target_obj = targets[0] if targets else {} target_query = target_obj.get("target") if target_obj else "" if not target_query: raise MLRunBadRequestError( f"Target missing in request body:\n {request_body}") parameters = _parse_parameters(target_query) return parameters
def _parse_parameters(target_query): parameters = {} for query in filter(lambda q: q, target_query.split(";")): query_parts = query.split("=") if len(query_parts) < 2: raise MLRunBadRequestError( f"Query must contain both query key and query value. Expected query_key=query_value, found {query} " f"instead.") parameters[query_parts[0]] = query_parts[1] return parameters
def _parse_search_parameters(request_body: Dict[str, Any]) -> Dict[str, str]: """ This function searches for the target field in Grafana's SimpleJson json. Once located, the target string is parsed by splitting on semi-colons (;). Each part in the resulting list is then split by an equal sign (=) to be read as key-value pairs. """ # Try to get the target target = request_body.get("target") if not target: raise MLRunBadRequestError( f"Target missing in request body:\n {request_body}") parameters = _parse_parameters(target) return parameters
def get_access_key(auth_info: mlrun.api.schemas.AuthInfo): access_key = auth_info.data_session if not access_key: raise MLRunBadRequestError("Data session is missing") return access_key