def lambda_handler()

in scripts/HAConfig/HAConfig.py [0:0]


def lambda_handler(input, context):
    global responseStr
    try:
        if (input['RequestType'] == "Update") or (input['RequestType'] == "Create"):
            HANAPrimaryInstanceID = input['ResourceProperties']['PrimaryInstanceId']
            HANASecondaryInstanceID = input['ResourceProperties']['SecondaryInstanceId']
            HANAPrimaryHostname = input['ResourceProperties']['PrimaryHostName']
            HANASecondaryHostname = input['ResourceProperties']['SecondaryHostName']
            PaceMakerTag = input['ResourceProperties']['PaceMakerTag']
            AWSRegion = input['ResourceProperties']['AWSRegion']
            HANAVirtualIP = input['ResourceProperties']['VirtualIP']
            PrimarySubnetId = input['ResourceProperties']['PrimarySubnetId']
            SecondarySubnetId = input['ResourceProperties']['SecondarySubnetId']
            hanaSID = input['ResourceProperties']['SID']
            hanaInstanceNo = input['ResourceProperties']['InstanceNo']
            HANAMasterPass = input['ResourceProperties']['HANAMasterPass']
            TempS3Bucket = input['ResourceProperties']['TempS3Bucket']
            HANAPrimaryIPAddress = input['ResourceProperties']['HANAPrimaryIPAddress']
            HANASecondaryIPAddress = input['ResourceProperties']['HANASecondaryIPAddress']
            domainName = input['ResourceProperties']['domainName']
            HANAPrimarySite = input['ResourceProperties']['PrimaryHANASite']
            HANASecondarySite = input['ResourceProperties']['SecondaryHANASite']
            VPCID=input['ResourceProperties']['VPCID']
            MyOS = input['ResourceProperties']['MyOS']
            MyOS = MyOS.upper()
            HANAPrimaryCorosync2ndIP = input['ResourceProperties']['HANAPrimaryCorosync2ndIP']
            HANASecondaryCorosync2ndIP = input['ResourceProperties']['HANASecondaryCorosync2ndIP']
            sidadm = hanaSID.lower()+"adm"

            retValue = setupAWSConfigProfile(HANAPrimaryInstanceID,HANASecondaryInstanceID,AWSRegion)
            manageRetValue(retValue,"setupAWSConfigProfile",input, context)

            retValue = createPacemakerTag(HANAPrimaryInstanceID,HANASecondaryInstanceID,PaceMakerTag,HANAPrimaryHostname,HANASecondaryHostname,hanaSID,AWSRegion)
            manageRetValue(retValue,"createPacemakerTag",input, context)

            retValue = disableSourceDestinationCheck(HANAPrimaryInstanceID,HANASecondaryInstanceID,AWSRegion)
            manageRetValue(retValue,"disableSourceDestinationCheck",input, context)
            
            RTabId = getRouteTableID(PrimarySubnetId,SecondarySubnetId,VPCID,AWSRegion)
            updateRouteTable(HANAPrimaryInstanceID,HANAVirtualIP,RTabId,AWSRegion)
            manageRetValue(retValue,"getRouteTableID",input, context)

            if 'SUSE' in MyOS :
                 retValue = installRsyslog(HANAPrimaryInstanceID,HANASecondaryInstanceID,AWSRegion)
                 responseStr["Status"]["installRsyslog"] = "Success"

            retValue = copySSFSFilesFromPrimaryToS3(HANAPrimaryInstanceID,TempS3Bucket,hanaSID,AWSRegion)
            manageRetValue(retValue,"copySSFSFilesFromPrimaryToS3",input, context)

            retValue = copySSFSFilesFromS3ToSecondary(HANASecondaryInstanceID,TempS3Bucket,hanaSID,AWSRegion)
            manageRetValue(retValue,"copySSFSFilesFromS3ToSecondary",input, context)

            retValue = disableHANAAutoStartSecondary(HANASecondaryInstanceID,HANASecondaryHostname,hanaSID,hanaInstanceNo,AWSRegion)
            manageRetValue(retValue,"disableHANAAutoStartSecondary",input, context)

            retValue = disableHANAAutoStartPrimary(HANAPrimaryInstanceID,HANAPrimaryHostname,hanaSID,hanaInstanceNo,AWSRegion)
            manageRetValue(retValue,"disableHANAAutoStartPrimary",input, context)

            retValue = updateHostFileSecondary(HANASecondaryInstanceID,HANAPrimaryHostname,HANAPrimaryIPAddress,domainName,AWSRegion)
            manageRetValue(retValue,"updateHostFileSecondary",input, context)

            retValue = updateHostFilePrimary(HANAPrimaryInstanceID,HANASecondaryHostname,HANASecondaryIPAddress,domainName,AWSRegion)
            manageRetValue(retValue,"updateHostFilePrimary",input, context)

            retValue = updatePreserveHostName(HANAPrimaryInstanceID,HANASecondaryInstanceID,AWSRegion)
            manageRetValue(retValue,"updatePreserveHostName",input, context)
            
            if 'SUSE' in MyOS :
                retValue = updateDefaultTasksMax(HANAPrimaryInstanceID,HANASecondaryInstanceID,AWSRegion)
                manageRetValue(retValue,"updateDefaultTasksMax",input, context)

            retValue = setupHSRPrimary(HANAPrimaryInstanceID,HANASecondaryInstanceID,HANAPrimarySite,HANASecondarySite,HANAPrimaryHostname,hanaSID,hanaInstanceNo,AWSRegion)
            manageRetValue(retValue,"setupHSRPrimary",input, context)

            retValue = setupHSRSecondary(HANAPrimaryInstanceID,HANASecondaryInstanceID,HANAPrimarySite,HANASecondarySite,HANAPrimaryHostname,hanaSID,hanaInstanceNo,AWSRegion)
            manageRetValue(retValue,"setupHSRSecondary",input, context)

            if 'SUSE' in MyOS :
                retValue = setupCoroSyncKeyPrimary(HANAPrimaryInstanceID,HANASecondaryInstanceID,TempS3Bucket,AWSRegion)
                manageRetValue(retValue,"setupCoroSyncKeyPrimary",input, context)

                retValue = copyCoroSyncKeyToSecondary(HANAPrimaryInstanceID,HANASecondaryInstanceID,TempS3Bucket,AWSRegion)
                manageRetValue(retValue,"copyCoroSyncKeyToSecondary",input, context)

                retValue = createCoroSyncConfig(HANAPrimaryInstanceID,HANASecondaryInstanceID,HANASecondaryIPAddress,HANAPrimaryIPAddress,HANAPrimaryCorosync2ndIP,HANASecondaryCorosync2ndIP,AWSRegion)
                manageRetValue(retValue,"createCoroSyncConfig",input, context)
                
                retValue = setupSUSESAPHanaHook(HANAPrimaryInstanceID,HANASecondaryInstanceID,hanaSID,sidadm,AWSRegion)
                manageRetValue(retValue,"setupSUSESAPHanaHook",input, context)

                retValue = StartPaceMaker(HANAPrimaryInstanceID,HANASecondaryInstanceID,HANAMasterPass,AWSRegion)
                manageRetValue(retValue,"StartPaceMaker",input, context)

                retValue = CompleteCoroSyncSetup(HANAPrimaryInstanceID,RTabId,HANAVirtualIP,hanaSID,hanaInstanceNo,PaceMakerTag,AWSRegion)
                manageRetValue(retValue,"CompleteCoroSyncSetup",input, context)
            else:
                retValue = RHELStartPCSService(HANAPrimaryInstanceID,HANASecondaryInstanceID,HANAMasterPass,AWSRegion)
                manageRetValue(retValue,"CompletePCSDServiceRHEL",input, context)

                retValue = RHELSetupHANACluster(HANAPrimaryInstanceID,HANASecondaryInstanceID,HANAPrimaryHostname,HANASecondaryHostname,HANAMasterPass,AWSRegion,hanaSID,hanaInstanceNo,HANAVirtualIP,RTabId)
                manageRetValue(retValue,"HANAClusterConfigRHEL",input, context)

            cfnresponse.send(input, context, cfnresponse.SUCCESS, {'Status':json.dumps(responseStr)})
        elif (input['RequestType'] == "Delete"):
            AWSRegion = input['ResourceProperties']['AWSRegion']
            HANAVirtualIP = input['ResourceProperties']['VirtualIP']
            PrimarySubnetId = input['ResourceProperties']['PrimarySubnetId']
            SecondarySubnetId = input['ResourceProperties']['SecondarySubnetId']
            VPCID=input['ResourceProperties']['VPCID']
            RTabId = getRouteTableID(PrimarySubnetId,SecondarySubnetId,VPCID,AWSRegion)
            deleteVirtualIPRoute(HANAVirtualIP,RTabId,AWSRegion)
            responseStr['Status'] = 'Virtual IP ' + HANAVirtualIP +'Removed From Route Table :' + RTabId
            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'] = str(e)
        cfnresponse.send(input, context, cfnresponse.FAILED, {'Status':json.dumps(responseStr)})