def lambda_handler()

in process-requests/app.py [0:0]


def lambda_handler(event,context):
    logger.info(json.dumps(event))
    # Get Budget Info
    budget_info = get_budget_info()
    # convert List to Dict for easier lookup
    budget_dict = {}
    update_budget_accruals = False
    for budget in budget_info : 
        business_entity = budget['businessEntity']
        if not budget['budgetForecastProcessed'] :
            logger.info("New Forecast Available for {}, replacing the accruedForecast with forecast from AWS budgets".format(business_entity))
            budget['accruedForecastedSpend'] = budget['forecastedSpend']
            update_budget_accruals = True
        else:
            logger.info("No Budget updated available for {} ".format(business_entity))
        budget_dict[business_entity] = budget
    logger.info("Local Dictionary for Budgets: {}".format(budget_dict))
    # Get Request that are in pending state
    pending_requests = get_requests(pending_req_status)
    
    for pending_request in pending_requests:
        businessEntity = pending_request['businessEntity']
        if 'pendingRequestExists' in budget_dict[businessEntity] :
            # there could be multiple requests for same business Entity, just skips those
            continue 
        else :
            budget_dict[businessEntity]['pendingRequestExists'] = True
    
    pending_request_count = len(pending_requests)
    if  pending_request_count > 0 :
        # recompute blocked requests to see if there is a change in forecast
        process_requests(pending_requests, budget_dict)
        update_budget_accruals = True
    
    # Get if there are any blocked requests
    blocked_requests = get_requests(blocked_req_status)
    
    blocked_request_count = len(blocked_requests)
    if  blocked_request_count > 0 :
        # Process blocked requests for each Business Entity
        process_requests(blocked_requests, budget_dict)
        update_budget_accruals = True
    
    # Get requests in SAVED state
    saved_requests = get_requests(saved_req_status)
   
    saved_request_count = len(saved_requests)
    if  saved_request_count > 0 :
        # process requests that are in saved state
        process_requests(saved_requests, budget_dict)
        update_budget_accruals = True
    
    if update_budget_accruals:
        logger.info("Updating Budgets Accruals")
        # update the budgets with newly calculated accrued amts
        update_accrued_amt(budget_dict)