def handler()

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)})