in scripts/ValidateParameters/ValidateParameters.py [0:0]
def handler(input, context):
status = cfnresponse.SUCCESS
try:
subnet1 = input['ResourceProperties']['PrimarySubnetId']
subnet2 = input['ResourceProperties']['SecondarySubnetId']
tagkey = input['ResourceProperties']['PaceMakerTag']
virtualip = input['ResourceProperties']['VirtualIP']
vpcId = input['ResourceProperties']['VPCID']
vpcCIDR = get_vpc_CIDR(vpcId)
print("VPC CIDR is " + vpcCIDR)
if (input['RequestType'] == "Update") or (input['RequestType'] == "Create"):
if count_instances_by_tagkey(tagkey) > 0:
#Tag already exists and not unique
responseStr["Status"]["ValidateParametersLambda"] = "Tag not unique"
cfnresponse.send(input, context, cfnresponse.FAILED, {'Status':'Tag not unique'})
return
if ip_in_subnetwork(virtualip,vpcCIDR):
#IP Address in VPC CIDR
responseStr["Status"]["ValidateParametersLambda"] = "Virtual IP address should not be in VPC CIDR"
cfnresponse.send(input, context, cfnresponse.FAILED, {'Status':'Virtual IP address should not be in VPC CIDR'})
return
if not validate_common_route_table(subnet1, subnet2,vpcId):
#Route Table not common
responseStr["Status"]["ValidateParametersLambda"] = "Primary and Secondary Subnet must have same route table"
cfnresponse.send(input, context, cfnresponse.FAILED, {'Status':'Primary and Secondary Subnet must have same route table'})
return
if check_duplicate_virtual_ip(routeTableID,virtualip):
#Virtual IP already in usage
responseStr["Status"]["ValidateParametersLambda"] = "Virtual IP is already being used (in Route Table of Subnet)"
cfnresponse.send(input, context, cfnresponse.FAILED, {'Status':'Virtual IP is already being used (in Route Table of Subnet)'})
return
responseStr["Status"]["ValidateParametersLambda"] = "Success"
cfnresponse.send(input, context, cfnresponse.SUCCESS, {'Status':json.dumps(responseStr)})
else:
responseStr['Status'] = 'Nothing to do as Request Type is : ' + input['RequestType']
cfnresponse.send(input, context, cfnresponse.SUCCESS, {'Status':json.dumps(responseStr)})
except Exception as e:
responseStr['Status']['ValidateParametersLambda'] = str(e)
cfnresponse.send(input, context, cfnresponse.FAILED, {'Status':json.dumps(responseStr)})