<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def tenant_quota_usages(request, tenant_id=None, targets=None):
 """Get our quotas and construct our usage object. :param tenant_id: Target tenant ID. If no tenant_id is provided, a the request.user.project_id is assumed to be used. :param targets: A tuple of quota names to be retrieved. If unspecified, all quota and usage information is retrieved. """

    if not tenant_id:
        tenant_id = request.user.project_id

    disabled_quotas = get_disabled_quotas(request, targets)
    usages = QuotaUsage()

    futurist_utils.call_functions_parallel(
        (_get_tenant_compute_usages,
         [request, usages, disabled_quotas, tenant_id]),
        (_get_tenant_network_usages,
         [request, usages, disabled_quotas, tenant_id]),
        (_get_tenant_volume_usages,
         [request, usages, disabled_quotas, tenant_id]))

    return usages