예제 #1
0
def crawl_account_hierarchy(request):
    """Return crawl account hierarchy async task ID."""
    # Require provider_uuid parameter for both GET & POST method
    params = request.query_params
    provider_uuid = params.get("provider_uuid")
    if provider_uuid is None:
        errmsg = "provider_uuid is a required parameter."
        return Response({"Error": errmsg}, status=status.HTTP_400_BAD_REQUEST)

    if request.method == "GET":
        # Note: That we need to check that the provider uuid exists here, because the
        # Orchestrator.get_accounts will return all accounts if the provider_uuid does
        # not exist.
        with ProviderCollector() as collector:
            all_providers = collector.get_provider_uuid_map()
            provider = all_providers.get(str(provider_uuid))
            if not provider:
                errmsg = f"The provider_uuid {provider_uuid} does not exist."
                return Response({"Error": errmsg},
                                status=status.HTTP_400_BAD_REQUEST)

        async_crawl_hierarchy = crawl_hierarchy.delay(
            provider_uuid=provider_uuid)
        return Response(
            {"Crawl Account Hierarchy Task ID": str(async_crawl_hierarchy)})

    if request.method == "POST":
        data = request.data
        schema_name = data.get("schema")
        if schema_name is None:
            errmsg = "schema is a required parameter."
            return Response({"Error": errmsg},
                            status=status.HTTP_400_BAD_REQUEST)
        days_list = data.get("account_structure", {}).get("days")
        if days_list is None:
            errmsg = "Unexpected json structure. Can not find days key."
            return Response({"Error": errmsg},
                            status=status.HTTP_400_BAD_REQUEST)
        if data.get("start_date"):
            insert_obj = InsertAwsOrgTree(schema=schema_name,
                                          provider_uuid=provider_uuid,
                                          start_date=data.get("start_date"))
        else:
            insert_obj = InsertAwsOrgTree(schema=schema_name,
                                          provider_uuid=provider_uuid)
        insert_obj.insert_tree(day_list=days_list)
        return Response(data)
예제 #2
0
def crawl_account_hierarchy(request):
    """Return crawl account hierarchy async task ID."""
    params = request.query_params
    provider_uuid = params.get("provider_uuid")
    if provider_uuid is None:
        errmsg = "provider_uuid is a required parameter."
        return Response({"Error": errmsg}, status=status.HTTP_400_BAD_REQUEST)

    # Note: That we need to check that the provider uuid exists here, because the
    # Orchestrator.get_accounts will return all accounts if the provider_uuid does
    # not exist.
    with ProviderCollector() as collector:
        all_providers = collector.get_provider_uuid_map()
        provider = all_providers.get(str(provider_uuid))
        if not provider:
            errmsg = f"The provider_uuid {provider_uuid} does not exist."
            return Response({"Error": errmsg},
                            status=status.HTTP_400_BAD_REQUEST)

    async_crawl_hierarchy = crawl_hierarchy.delay(provider_uuid=provider_uuid)
    return Response(
        {"Crawl Account Hierarchy Task ID": str(async_crawl_hierarchy)})
예제 #3
0
def crawl_account_hierarchy(request):
    """Return download file async task ID."""
    async_crawl_hierarchy = crawl_hierarchy.delay()
    return Response({"Crawl account hierarchy Task ID": str(async_crawl_hierarchy)})