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)