Example #1
0
def verify_data():
    """Verify data end-to-end, returning HTML results."""

    message = ""
    for vmname in vmnames:
        distname = vmname.split('-')[0]
        vm_log_file = distname + "result.log"
        vm_html_file = distname + "result.html"
        log_open = open(vm_log_file, 'a+')
        html_open = open(vm_html_file, 'a+')

        # Delay to allow data to propagate
        while datetime.now() < (install_times[vmname] +
                                timedelta(minutes=E2E_DELAY)):
            mins, secs = get_time_diff(
                datetime.now(),
                install_times[vmname] + timedelta(minutes=E2E_DELAY))
            sys.stdout.write(
                '\rE2E propagation delay: {0} minutes {1} seconds...'.format(
                    mins, secs))
            sys.stdout.flush()
            sleep(1)
        print('')
        minutes, _ = get_time_diff(install_times[vmname], datetime.now())
        timespan = 'PT{0}M'.format(minutes)
        data = check_e2e(vmname, timespan)

        # write detailed table for vm
        html_open.write("<h2> Verify Data from OMS workspace </h2>")
        write_log_command(log_open, 'Status After Verifying Data')
        results = data[distname][0]
        log_open.write(distname + ':\n' +
                       json.dumps(results, indent=4, separators=(',', ': ')) +
                       '\n')
        # prepend distro column to results row before generating the table
        data = [OrderedDict([('Distro', distname)] + results.items())]
        out = json2html.convert(data)
        html_open.write(out)

        # write to summary table
        from verify_e2e import success_count
        if success_count == 6:
            message += """
                            <td><span style='background-color: #66ff99'>Verify Success</td>"""
        elif 0 < success_count < 6:
            from verify_e2e import success_sources, failed_sources
            message += """
                            <td><span style='background-color: #66ff99'>{0} Success</span> <br><br><span style='background-color: red; color: white'>{1} Failed</span></td>""".format(
                ', '.join(success_sources), ', '.join(failed_sources))
        elif success_count == 0:
            message += """
                            <td><span style='background-color: red; color: white'>Verify Failed</span></td>"""
    return message
def run_operation():
    for vmname, image in images.iteritems():
        print "\n{} - {}: {} \n".format(operation, vmname, image)
        uid = rstr.xeger(r'[0-9a-fA-F]{8}')
        vmname = vmname.lower() + '-' + uid
        dnsname = vmname
        if operation == 'Create VM and Add Extension':
            create_vm(rGroup, vmname, image, username, password, location,
                      dnsname, size, nsg)
            remove_extension(extension, vmname, rGroup)
            copy_to_vm(dnsname, username, password, location)
            run_command(rGroup, vmname, 'RunShellScript',
                        'python /tmp/omsStatusCheck.py -preinstall')
            add_extension(extension, publisher, vmname, rGroup,
                          private_settings, public_settings)
            run_command(rGroup, vmname, 'RunShellScript',
                        'python /tmp/omsStatusCheck.py -postinstall')
            copy_from_vm(dnsname, username, password, location)
        elif operation == 'Create VM':
            create_vm(rGroup, vmname, image, username, password, location,
                      dnsname, size, nsg)
        elif operation == 'Add Extension':
            add_extension(extension, publisher, vmname, rGroup,
                          private_settings, public_settings)
            run_command(rGroup, vmname, 'RunShellScript',
                        'python /tmp/omsStatusCheck.py -status')
            copy_from_vm(dnsname, username, password, location)
        elif operation == 'Verify Data':
            check_e2e(vmname)
        elif operation == 'Remove Extension':
            remove_extension(extension, vmname, rGroup)
            run_command(rGroup, vmname, 'RunShellScript',
                        'python /tmp/omsStatusCheck.py -status')
            copy_from_vm(dnsname, username, password, location)
        elif operation == 'Delete VM':
            delete_vm(rGroup, vmname)
def verify_data():
    """Verify data end-to-end, returning HTML results."""
    message = ""
    for hostname in hostnames:
        image = hostname.split('-')[0]
        _, _, _, _, _, log_file, html_file, _ = setup_vars(image)
        write_log_command('\n[{0}] Verify E2E Data Results'.format(image),
                          log_file)
        while datetime.now() < (install_times[image] +
                                timedelta(minutes=E2E_DELAY)):
            mins, secs = get_time_diff(
                datetime.now(),
                install_times[image] + timedelta(minutes=E2E_DELAY))
            sys.stdout.write(
                '\rE2E propagation delay for {0}: {1} minutes {2} seconds ...'.
                format(image, mins, secs))
            sys.stdout.flush()
            sleep(1)
        print('')
        minutes, _ = get_time_diff(install_times[image], datetime.now())
        timespan = 'PT{0}M'.format(minutes)
        data = check_e2e(hostname, timespan)

        # write detailed table for image
        html_file.write("<h2> Verify Data from OMS workspace </h2>")
        results = data[image][0]
        log_file.write(image + ':\n' +
                       json.dumps(results, indent=4, separators=(',', ': ')) +
                       '\n')
        # prepend distro column to results row before generating the table
        data = [OrderedDict([('Distro', image)] + results.items())]
        out = json2html.convert(data)
        html_file.write(out)
        close_files(log_file, html_file)

        # write to summary table
        from verify_e2e import success_count
        if success_count == 6:
            message += SUCCESS_TEMPLATE.format("Verify Success")
        elif 0 < success_count < 6:
            from verify_e2e import success_sources, failed_sources
            message += """<td><span style='background-color: #66ff99'>{0} Success</span> <br><br><span style='background-color: red; color: white'>{1} Failed</span></td>""".format(
                ', '.join(success_sources), ', '.join(failed_sources))
        elif success_count == 0:
            message += FAILURE_TEMPLATE.format("Verify Failed")
    return message
def verify_data():
    """Verify data end-to-end, returning HTML results."""

    message = ""
    for vmname in vmnames:
        distname = vmname.split('-')[0]
        vm_log_file = distname + "result.log"
        vm_html_file = distname + "result.html"
        log_open = open(vm_log_file, 'a+')
        html_open = open(vm_html_file, 'a+')
        
        # Delay to allow data to propagate
        while datetime.now() < (install_times[vmname] + timedelta(minutes=E2E_DELAY)):
            mins, secs = get_time_diff(datetime.now(), install_times[vmname] + timedelta(minutes=E2E_DELAY))
            sys.stdout.write('\rE2E propagation delay: {0} minutes {1} seconds...'.format(mins, secs))
            sys.stdout.flush()
            sleep(1)
        print('')
        minutes, _ = get_time_diff(install_times[vmname], datetime.now())
        timespan = 'PT{0}M'.format(minutes)
        data = check_e2e(vmname, timespan)

        # write detailed table for vm
        html_open.write("<h2> Verify Data from OMS workspace </h2>")
        write_log_command(log_open, 'Status After Verifying Data')
        results = data[distname][0]
        log_open.write(distname + ':\n' + json.dumps(results, indent=4, separators=(',', ': ')) + '\n')
        # prepend distro column to results row before generating the table
        data = [OrderedDict([('Distro', distname)] + results.items())]
        out = json2html.convert(data)
        html_open.write(out)

        # write to summary table
        from verify_e2e import success_count
        if success_count == 6:
            message += """
                            <td><span style='background-color: #66ff99'>Verify Success</td>"""
        elif 0 < success_count < 6:
            from verify_e2e import success_sources, failed_sources
            message += """
                            <td><span style='background-color: #66ff99'>{0} Success</span> <br><br><span style='background-color: red; color: white'>{1} Failed</span></td>""".format(', '.join(success_sources), ', '.join(failed_sources))
        elif success_count == 0:
            message += """
                            <td><span style='background-color: red; color: white'>Verify Failed</span></td>"""
    return message
    elif status == "Agent Not Found":
        all_vms_install_message += """
                        <td><span style='background-color: red; color: white'>Install Failed</span></td>"""

time.sleep(600)

all_vms_verify_message = ""

for vmname in vmnames:
    distname = vmname.split('-')[0]
    vmLog = distname + "result.log"
    htmlFile = distname + "result.html"
    logOpen = open(vmLog, 'a+')
    htmlOpen = open(htmlFile, 'a+')
    os.system('rm e2eresults.json')
    check_e2e(vmname)

    # write detailed table for vm
    htmlOpen.write("<h2> Verify Data from OMS workspace </h2>")
    write_log_command(logOpen, 'Status After Verifying Data')
    with open('e2eresults.json', 'r') as infile:
        data = json.load(infile)
    results = data[distname][0]
    logOpen.write(distname + ':\n' +
                  json.dumps(results, indent=4, separators=(',', ': ')) + '\n')
    # prepend distro column to results row before generating the table
    data = [OrderedDict([('Distro', distname)] + results.items())]
    out = json2html.convert(data)
    htmlOpen.write(out)

    # write to summary table