Пример #1
0
# please have a look at the site support team metric script
# development documentation:
# https://twiki.cern.ch/twiki/bin/view/CMSPublic/SiteSupportMonitoringScripts

import sys, time
from lib import sites, dashboard, url, fileOps
try: import json
except ImportError: import simplejson as json

if len(sys.argv) < 7:
    print 'not enough parameter!'
    sys.exit(1)

# manually controlled usable sites list
usableSitesMC = dashboard.parseMetric(url.read(sys.argv[1]))
# morgue list
morgue        = dashboard.parseMetric(url.read(sys.argv[2]))
# prepare hammercloud metric url for last 3 days!
hcURL         = sys.argv[3] % (time.strftime("%Y-%m-%d", time.localtime(time.time()-3*24*60*60)),
                               time.strftime("%Y-%m-%d", time.localtime(time.time())))
hammerCloud   = dashboard.parseJSONMetric(url.read(hcURL))
# get the url stamp for the dashboard input file
urlStamp      = sys.argv[4]
# text output file location
txtOutput     = sys.argv[5]
# json output file location
jsonOutput    = sys.argv[6]

# create new metric object
metricHeader = {'twiki' : 'https://twiki.cern.ch/twiki/bin/view/CMSPublic/UsableSitesForAnalysis'}
metric = dashboard.metric(header = metricHeader)
from lib import dashboard, sites, url
from datetime import datetime, timedelta
import os, sys
import dateutil.parser
import json
from optparse import OptionParser

metricFileName = sys.argv[1]
overrideFileName = sys.argv[2]
outputFileName = sys.argv[3]

metricFile = open(metricFileName, 'r')
overrideFile = open(overrideFileName, 'r')

try:
    metricMetric = dashboard.parseMetric(metricFile.read())
    overrideMetric = dashboard.parseMetric(overrideFile.read())
except:
    print "Cannot read either metric or override"
    exit(1)

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
Пример #3
0
from lib import dashboard, sites, url
from datetime import datetime, timedelta
import os, sys
import dateutil.parser
import json
from optparse import OptionParser

metricFileName = sys.argv[1]
overrideFileName = sys.argv[2]
outputFileName = sys.argv[3]

metricFile = open(metricFileName, 'r')
overrideFile = open(overrideFileName, 'r')

try:
    metricMetric = dashboard.parseMetric(metricFile.read())
    overrideMetric = dashboard.parseMetric(overrideFile.read())
except:
    print "Cannot read either metric or override"
    exit(1)

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
Пример #4
0
if len(sys.argv) < 4:
    sys.stderr.write('not enough parameter!\n')
    sys.exit(1)

siteList  = sites.getSites()
config    = json.loads(fileOps.read(sys.argv[1]))
fieldList = config.keys()
fieldList.sort()
data      = {}
# add field names
data['fields'] = fieldList

# load all fields from dashboard
fields    = {}
for field in fieldList:
    fields[field] = dashboard.parseMetric(url.read(config[field]))
    print field, 'done...'

for site in siteList:
    data[site] = []
    for field in fieldList:
        if not fields[field].hasSite(site):
            data[site].append('black')
            continue
        data[site].append(fields[field].getSiteEntry(site).color)

template  = fileOps.read(sys.argv[2])
template  = template.replace('@DATE@', time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))
template  = template.replace('@DATA@', json.dumps(data));

fileOps.write(sys.argv[3], template)