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