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