def handle_azurefile()

in elasticapm/instrumentation/packages/azure.py [0:0]


def handle_azurefile(request, hostname, path, query_params, service, service_type, context):
    """
    Returns the HandlerInfo for Azure File Share Storage operations
    """
    account_name = hostname.split(".")[0]
    method = request.method
    resource_name = path.split("/", 1)[1] if "/" in path else account_name
    headers = request.headers
    context["destination"]["service"] = {
        "name": service,
        "resource": "{}/{}".format(service, account_name),
        "type": service_type,
    }

    operation_name = "Unknown"
    if method.lower() == "get":
        operation_name = "Download"
        if "list" in query_params.get("comp", []):
            operation_name = "List"
        elif "properties" in query_params.get("comp", []):
            operation_name = "GetProperties"
        elif "share" in query_params.get("restype", []):
            operation_name = "GetProperties"
        elif "metadata" in query_params.get("comp", []):
            operation_name = "GetMetadata"
        elif "acl" in query_params.get("comp", []):
            operation_name = "GetAcl"
        elif "stats" in query_params.get("comp", []):
            operation_name = "Stats"
        elif "filepermission" in query_params.get("comp", []):
            operation_name = "GetPermission"
        elif "listhandles" in query_params.get("comp", []):
            operation_name = "ListHandles"
        elif "rangelist" in query_params.get("comp", []):
            operation_name = "ListRanges"
    elif method.lower() == "put":
        operation_name = "Create"
        if "properties" in query_params.get("comp", []):
            operation_name = "SetProperties"
            if "share" in query_params.get("restype", []):
                operation_name = "SetProperties"
        elif "snapshot" in query_params.get("comp", []):
            operation_name = "Snapshot"
        elif "metadata" in query_params.get("comp", []):
            operation_name = "SetMetadata"
        elif "undelete" in query_params.get("comp", []):
            operation_name = "Undelete"
        elif "acl" in query_params.get("comp", []):
            operation_name = "SetAcl"
        elif "filepermission" in query_params.get("comp", []):
            operation_name = "SetPermission"
        elif "directory" in query_params.get("restype", []):
            operation_name = "Create"
        elif "forceclosehandles" in query_params.get("comp", []):
            operation_name = "CloseHandles"
        elif "range" in query_params.get("comp", []):
            operation_name = "Upload"
        elif "x-ms-copy-source" in headers:
            operation_name = "Copy"
        elif "x-ms-copy-action" in headers and headers["x-ms-copy-action"] == "abort":
            operation_name = "Abort"
        elif "lease" in query_params.get("comp", []):
            operation_name = "Lease"
    elif method.lower() == "options":
        operation_name = "Preflight"
    elif method.lower() == "head":
        operation_name = "GetProperties"
        if "share" in query_params.get("restype", []):
            operation_name = "GetProperties"
        elif "metadata" in query_params.get("comp", []):
            operation_name = "GetMetadata"
        elif "acl" in query_params.get("comp", []):
            operation_name = "GetAcl"
    elif method.lower() == "delete":
        operation_name = "Delete"

    signature = "AzureFile {} {}".format(operation_name, resource_name)

    return HandlerInfo(signature, service_type, service, operation_name, context)