def lambda_handler()

in lambda/index.py [0:0]


def lambda_handler(event, context):
    print(event)
    if event['httpMethod'] == 'POST':
        for failureCount in range(0,3):
            if failureCount < 3:
                try:
                    prefix = int(event['queryStringParameters']['prefix'])
                    AccountId = int(event['queryStringParameters']['AccountId'])
                    Requestor = event['queryStringParameters']['Requestor']
                    Reason = event['queryStringParameters']['Reason']
                    Region = event['queryStringParameters']['Region']
                    Env = event['queryStringParameters']['Env']
                    
                    if "ProjectCode" in event['queryStringParameters']:
                        ProjectCode = event['queryStringParameters']['ProjectCode']
                    else:
                        ProjectCode = None
                    
                    supernet = returnSupernet(supernetTable, Region, Env)
                    usedSubnets = getUsedCidrs(Region, Env)
                
                    supernetSet = IPSet(supernet)
                    cidrToAssign = str(returnAvailableSubnet(supernetSet, usedSubnets, prefix, Region, Env))
                    
                    addToDDB(cidrToAssign, AccountId, Requestor, Reason, Region, Env, ProjectCode)
                    
                    response = {
                              'isBase64Encoded': False,
                              'statusCode': 200,
                              'headers': {},
                              'multiValueHeaders': {},
                              'body': '{"cidr": "' + cidrToAssign +'" }'
                            }
                    return response
                except botocore.exceptions.ClientError as e:
                    if e.response['Error']['Code'] == 'ConditionalCheckFailedException':
                        print(e)
                        print('record already allocated, retrying...')
                        continue
                except Exception as e:
                    response = {
                      'isBase64Encoded': False,
                      'statusCode': 500,
                      'headers': {},
                      'multiValueHeaders': {},
                      'body': '{"Error": "' + str(e) +'" }'
                    }
                    return response
                break
    elif event['httpMethod'] == 'DELETE':
        try:
            cidr = event['queryStringParameters']['Cidr']
            print(cidr)
            deleteCidrDDB(cidr)
            response = {
              'isBase64Encoded': False,
              'statusCode': 200,
              'headers': {},
              'multiValueHeaders': {},
              'body': 'CIDR: ' + cidr + ' deleted'
            }
            return response
        except Exception as e:
            response = {
              'isBase64Encoded': False,
              'statusCode': 500,
              'headers': {},
              'multiValueHeaders': {},
              'body': 'Error: ' + str(e)
            }
            return response
    elif event['httpMethod'] == 'PUT':
        try:
            cidr = event['queryStringParameters']['Cidr']
            VpcId = event['queryStringParameters']['VpcId']
            updateCidrDDB(cidr, VpcId)
            response = {
              'isBase64Encoded': False,
              'statusCode': 200,
              'headers': {},
              'multiValueHeaders': {},
              'body': 'CIDR: ' + cidr + ' updated'
            }
            return response
        except Exception as e:
            response = {
              'isBase64Encoded': False,
              'statusCode': 500,
              'headers': {},
              'multiValueHeaders': {},
              'body': 'Error: ' + str(e)
            }
            return response
    elif event['httpMethod'] == 'GET':
        try:
            cidr = event['queryStringParameters']['Cidr']
            cidrDetails = getCidrDDB(cidr)
            response = {
              'isBase64Encoded': False,
              'statusCode': 200,
              'headers': {},
              'multiValueHeaders': {},
              'body': 'CIDR information: ' + cidrDetails
            }
            return response
        except Exception as e:
            response = {
              'isBase64Encoded': False,
              'statusCode': 500,
              'headers': {},
              'multiValueHeaders': {},
              'body': 'Error: ' + str(e)
            }
            return response