Example #1
0
sites = set(metricMetric.getSites()).union(set(overrideMetric.getSites()))

outputEntries = []

#dateNow = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
for site in sites:
    entryFromMetric = metricMetric.getSiteEntry(site)
    entryFromOverride = overrideMetric.getSiteEntry(site)
    if entryFromMetric is not None and entryFromOverride is not None:
        newEntry = entryFromMetric
        newEntry.value = entryFromOverride.value
        newEntry.color = entryFromOverride.color
        newEntry.nvalue = entryFromOverride.nvalue
        newEntry.date = None
    elif entryFromMetric is not None:
        newEntry = entryFromMetric
        newEntry.date = None
    elif entryFromOverride is not None:
        newEntry = entryFromOverride
        newEntry.date = None
    outputEntries.append(newEntry)

if len(outputEntries) > 1:
    header = dashboard.printHeader(scriptName="Manual Override", documentationUrl="A combination file "+ metricFileName + " and override file " + overrideFileName )
    outputFile = open(outputFileName, 'w')
    outputFile.write(header)
    for entry in outputEntries:
        outputFile.write(str(entry) + '\n')
    outputFile.close()
outputEntries = []

#dateNow = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
for site in sites:
    entryFromMetric = metricMetric.getSiteEntry(site)
    entryFromOverride = overrideMetric.getSiteEntry(site)
    if entryFromMetric is not None and entryFromOverride is not None:
        newEntry = entryFromMetric
        newEntry.value = entryFromOverride.value
        newEntry.color = entryFromOverride.color
        newEntry.nvalue = entryFromOverride.nvalue
        newEntry.date = None
    elif entryFromMetric is not None:
        newEntry = entryFromMetric
        newEntry.date = None
    elif entryFromOverride is not None:
        newEntry = entryFromOverride
        newEntry.date = None
    outputEntries.append(newEntry)

if len(outputEntries) > 1:
    header = dashboard.printHeader(scriptName="Manual Override",
                                   documentationUrl="A combination file " +
                                   metricFileName + " and override file " +
                                   overrideFileName)
    outputFile = open(outputFileName, 'w')
    outputFile.write(header)
    for entry in outputEntries:
        outputFile.write(str(entry) + '\n')
    outputFile.close()
    elif newlifeStatus == STATUS_OK:
        siteColor = COLOR_OK
        morgueColor = "green"
        waitingRoomColor = "green"
        morgueValue = "out"
        waitingRoomValue = "out"
    if newlifeStatus is not None: lifeStatusEntries.append(dashboard.entry(date = todayAtMidnight, name = siteInfo.name, value = newlifeStatus, color = siteColor, url = LOGFILE_URL))
    if newlifeStatus is not None: morgueEntries.append(dashboard.entry(date = todayAtMidnight, name = siteInfo.name, value = morgueValue, color = morgueColor, url = LOGFILE_URL))
    if newlifeStatus is not None: waitingRoomEntries.append(dashboard.entry(date = todayAtMidnight, name = siteInfo.name, value = waitingRoomValue, color = waitingRoomColor, url = LOGFILE_URL))

logOutputFile = open(OUTPUT_FILE_LOGFILE, 'a')
#logOutputFile.write(LOG_HEADER+'\n')
#lifeStatusOutputFile = open(OUTPUT_FILE_LIFESTATUS_NAME, 'w')
lifeStatusPOutputFile = open(OUTPUT_FILE_LIFESTATUSPRIMAL_NAME, 'w')
#lifeStatusOutputFile.write(dashboard.printHeader(scriptName = "LifeStatus", documentationUrl=""))
lifeStatusPOutputFile.write(dashboard.printHeader(scriptName = "LifeStatus", documentationUrl=""))
for site in lifeStatusEntries:
    #lifeStatusOutputFile.write(str(site) + '\n')
    lifeStatusPOutputFile.write(str(site) + '\n')
    if str(allSitesInfo.get(site.name, "")) != "":
        logline = str(allSitesInfo.get(site.name, ""))
        logOutputFile.write(logline + '\n')
logOutputFile.write("<!-- # At %s --> \n" % todayAtMidnight)
print "\n--Life Status Output written to %s" % OUTPUT_FILE_LIFESTATUSPRIMAL_NAME 
#print "\n--Log Output written to %s" % OUTPUT_FILE_LOGFILE
#lifeStatusOutputFile.close()
lifeStatusPOutputFile.close()
logOutputFile.close()

#morgueOutputFile = open(OUTPUT_FILE_MORGUE_NAME, 'w')
#for site in morgueEntries:
    print site
    tier = sites.getTier(site)
    siteCurrentLifeStatus = lfStatus.getLatestEntry(site)
    flagBadLifeStatus = False
    flagGoodHC = False
    newCrabStatus = 'unknown'
    if siteCurrentLifeStatus is not None and (siteCurrentLifeStatus.value in BAD_LIFESTATUS):
        flagBadLifeStatus = True
    siteHC = hcStatus.getSiteEntries(site).values()
    #Check HC for the last 3 days
    for entry in siteHC:
        if entry.color == HAMMERCLOUD_OK_COLOR or useHC == False:
            flagGoodHC = True 
    if flagBadLifeStatus == False and flagGoodHC == True:
        newCrabStatus = ENABLED_STATUS 
    if flagBadLifeStatus == True and flagGoodHC == True:
        newCrabStatus = DISABLED_STATUS 
    elif flagGoodHC == False:
        newCrabStatus = DISABLED_STATUS
    print site + " flagGoodHC :" + str(flagGoodHC) + " flagBadLifeStatus :" + str(flagBadLifeStatus)+ "New crabstatus: " + newCrabStatus     
    if newCrabStatus != 'unknown':
        	allsitesMetric.append(dashboard.entry(date = datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S"), name = site, value = newCrabStatus, color = COLORS.get(newCrabStatus, 'white'), url = URL_ENTRY))

if len(allsitesMetric) > 1:
    outputFileP = open(OUTPUT_P_FILE_NAME, 'w')
    outputFileP.write(dashboard.printHeader(scriptName = "LifeStatus", documentationUrl=""))
    for site in allsitesMetric:
        outputFileP.write(str(site) + '\n')
    print "\n--Output written to %s" % OUTPUT_P_FILE_NAME
    outputFileP.close()
    #Check HC for the last 3 days
    for entry in siteHC:
        if entry.color == HAMMERCLOUD_OK_COLOR or useHC == False:
            flagGoodHC = True
    if flagBadLifeStatus == False and flagGoodHC == True:
        newCrabStatus = ENABLED_STATUS
    if flagBadLifeStatus == True and flagGoodHC == True:
        newCrabStatus = DISABLED_STATUS
    elif flagGoodHC == False:
        newCrabStatus = DISABLED_STATUS
    print site + " flagGoodHC :" + str(
        flagGoodHC) + " flagBadLifeStatus :" + str(
            flagBadLifeStatus) + "New crabstatus: " + newCrabStatus
    if newCrabStatus != 'unknown':
        allsitesMetric.append(
            dashboard.entry(
                date=datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S"),
                name=site,
                value=newCrabStatus,
                color=COLORS.get(newCrabStatus, 'white'),
                url=URL_ENTRY))

if len(allsitesMetric) > 1:
    outputFileP = open(OUTPUT_P_FILE_NAME, 'w')
    outputFileP.write(
        dashboard.printHeader(scriptName="LifeStatus", documentationUrl=""))
    for site in allsitesMetric:
        outputFileP.write(str(site) + '\n')
    print "\n--Output written to %s" % OUTPUT_P_FILE_NAME
    outputFileP.close()