def fetchUserInputData()

in lambda/source/create_add_on_zip.py [0:0]


def fetchUserInputData(sourceBucketForParameterFiles,addOn_userInput_filename,addOnProductParameterCoreFile):
    userInputObj=utils.getobj_from_s3(sourceBucketForParameterFiles, addOn_userInput_filename)
    userInputContent=userInputObj['Body'].read()

    # Read sample user-input file content
    sampleUIFile=open(sample_userInput_file,'r')
    sampleUIFileContent=sampleUIFile.read()
    # Merge parameters file content into user-input file
    p=re.compile("productParameters")
    mergedFileContent = p.sub(userInputContent.decode('utf-8'), sampleUIFileContent)
    # replace the product parameter file placeholder with actual product name
    q=re.compile("parameters/core_accounts/productParameterFileName.json")
    mergedFileContent = q.sub(addOnProductParameterCoreFile, mergedFileContent)
    # Write locally
    mergedFileBinaryContent=io.BytesIO(bytes(mergedFileContent,'utf-8'))
    sampleUIFile.close()
    file = open('/tmp/merged-user-input.yaml', 'w')
    file.write(mergedFileContent)
    file.close()
    # Fix indentation
    with open('/tmp/merged-user-input.yaml', 'r+') as text_file:
        fileContent = text_file.readlines()
        text_file.seek(0)
        count = 0
        for line in fileContent:
            if count==3:
                text_file.write("    "+line)
            elif "parameters:" in line:
                text_file.write(line)
                count = count+1
            else:
                text_file.write(line)
        text_file.truncate()

    mergedFile=open('/tmp/merged-user-input.yaml','r')
    mergedFileContent=mergedFile.read()
    mergedFileContentBinary=io.BytesIO(bytes(mergedFileContent,'utf-8'))
    mergedFile.close()

    return (addOn_userInput_filename,mergedFileContentBinary)