示例#1
0
def getCredentials(jsonKey):
    jsonData    = json.loads(fileOps.read(jsonKey))
    privateKey  = jsonData['private_key']
    clientEmail = jsonData['client_email']
    scope       = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly']
    credentials = SignedJwtAssertionCredentials(clientEmail, privateKey, scope)
    return credentials
示例#2
0
from lib import url, fileOps
import sys, os, time, copy
try:
    import json
    from json import encoder
    encoder.FLOAT_REPR = lambda o: format(o, '.2f')
except ImportError: import simplejson as json

if len(sys.argv) < 2:
    sys.exit('not enough arguments!')

tests = ['sam', 'hc', 'ggus']
# python report.py $TMP/report.json $TMP/report_2weeks.json
# set variables given from outside
currentReport   = json.loads(fileOps.read(sys.argv[1]))
htmlTemplate    = fileOps.read(sys.argv[2])
reportFile = sys.argv[3]
htmlOutputPath  = sys.argv[4]

if os.path.isfile(reportFile):
    print 'loading 2 weeks report...'
    report = json.loads(fileOps.read(reportFile))
else:
    print 'creating new 2 weeks report...'
    report = {'data' : {}}

# insert new test results
data = currentReport['data']
for site in data:
    if not report['data'].has_key(site):
        report['data'][site] = {}
示例#3
0
try:
    import json
except ImportError:
    import simplejson as json
try:
    import xml.etree.ElementTree as ET
except ImportError:
    from elementtree import ElementTree as ET

if len(sys.argv) < 6:
    sys.stderr.write("not enough parameter!\n")
    sys.exit(1)

siteList = sites.getSites()
ggusXMLFile = fileOps.read(sys.argv[1])
ggus = {}
samAccessURL = sys.argv[2]
samAccess = {}
hcURL = sys.argv[3]
hammerCloud = {}
downTimesURL = sys.argv[4]
downTimes = dashboard.parseJSONMetric(url.read(downTimesURL))
siteDownTimes = {}
federations = json.loads(url.read(sys.argv[5]))
reportFile = sys.argv[6]
reportURL = sys.argv[7]
output = sys.argv[8]
report = {}

示例#4
0
#!/usr/bin/python

# aaltunda - [email protected]
import sys, time
from lib import fileOps, dashboard, sites
try:
    import xml.etree.ElementTree as ET
except ImportError:
    from elementtree import ElementTree as ET

if len(sys.argv) < 4:
    print 'not enough parameters'
    sys.exit(1)

tickets = fileOps.read(sys.argv[1])
tickets = ET.fromstring(tickets)

parsed = {}

for ticket in tickets.findall('ticket'):
    cmsSite = ticket.find('cms_site').text
    subject = ticket.find('subject').text
    id = ticket.find('request_id').text
    if not cmsSite: continue
    if not parsed.has_key(cmsSite):
        parsed[cmsSite] = {}
    parsed[cmsSite][id] = subject

# generate output for twiki meeting page
ticketURL = "https://ggus.eu/?mode=ticket_info&ticket_id="
twikiTable = "\n| *CMS Site* | *Number of Tickets* | * Tickets* |\n"
示例#5
0
import sys, os, time
try: import json
except ImportError: import simplejson as json
from lib import fileOps

if len(sys.argv) < 4:
    sys.stderr.write("not enough prameter!\n")
    sys.exit(1)

htmlTemplate = fileOps.read(sys.argv[1])
info         = sys.argv[2]
inOutPath    = sys.argv[3]

data         = {}
for i in os.listdir(inOutPath):
    if not '.json' in i: continue
    date     =  time.strftime("%B %d, %Y %H:%M:%S", time.localtime(int(i.replace('.json', ''))))
    data[date]  = json.loads(fileOps.read("{0}/{1}".format(inOutPath, i)))

jsData       = {}
for date in data:
    for site in data[date]:
        if not site in jsData:
            jsData[site] = {}
        if data[date][site] == 'n/a': data[date][site] = -1.0
        jsData[site][date] = data[date][site]

def allTheSame(data):
    oldVal = None
    val    = None
    for i in data:
示例#6
0
#!/usr/bin/python

# aaltunda - [email protected]
import sys, time
from lib import fileOps, dashboard, sites
try: import xml.etree.ElementTree as ET
except ImportError: from elementtree import ElementTree as ET

if len(sys.argv) < 4:
    print 'not enough parameters'
    sys.exit(1)

tickets = fileOps.read(sys.argv[1])
tickets = ET.fromstring(tickets)

parsed  = {}

for ticket in tickets.findall('ticket'):
    cmsSite = ticket.find('cms_site').text
    subject = ticket.find('subject').text
    id      = ticket.find('request_id').text
    if not cmsSite: continue
    if not parsed.has_key(cmsSite):
        parsed[cmsSite] = {}
    parsed[cmsSite][id] = subject

# generate output for twiki meeting page 
ticketURL  = "https://ggus.eu/?mode=ticket_info&ticket_id="
twikiTable = "\n| *CMS Site* | *Number of Tickets* | * Tickets* |\n"
sum        = 0
for site in parsed:
示例#7
0
#- SAM access test < 50% for two weeks
#- HammerCloud[1] test success rete < 70% for two weeks

import sys, time, urllib
from lib import fileOps, url, dashboard, sites
try: import json
except ImportError: import simplejson as json
try: import xml.etree.ElementTree as ET
except ImportError: from elementtree import ElementTree as ET

if len(sys.argv) < 6:
    sys.stderr.write('not enough parameter!\n')
    sys.exit(1)

siteList     = sites.getSites()
ggusXMLFile  = fileOps.read(sys.argv[1])
ggus         = {}
samAccessURL = sys.argv[2]
samAccess    = {}
hcURL        = sys.argv[3]
hammerCloud  = {}
downTimesURL = sys.argv[4]
downTimes    = dashboard.parseJSONMetric(url.read(downTimesURL))
siteDownTimes = {}
federations  = json.loads(url.read(sys.argv[5]))
reportFile   = sys.argv[6]
reportURL    = sys.argv[7]
output       = sys.argv[8]
report       = {}

def check_federation_history(site_name):
示例#8
0
# altunda - [email protected]

import sys
from lib import fileOps
try: import json
except ImportError: import simplejson as json

# input: release list, release, new documentetion status
if len(sys.argv) < 4:
    print >> sys.stderr, 'Error: not enough parameters.'
    sys.exit(1)

# read release list to find one to document.
relList = json.loads(fileOps.read(sys.argv[1]))

print "## documentation status will be updated for %s, %s -> %s" % (sys.argv[2],
      relList[sys.argv[2]]['status'], sys.argv[3])
# update status
relList[sys.argv[2]]['status'] = sys.argv[3]

# write the updated file
fileOps.write(sys.argv[1], json.dumps(relList, indent=2))
示例#9
0
文件: diff.py 项目: cmsdoxy/cmsdoxy
try:
    import json
except ImportError:
    import simplejson as json
try:
    import xml.etree.ElementTree as ET
except ImportError:
    from elementtree import ElementTree as ET

# input: config file, input/output file
if len(sys.argv) < 3:
    print >> sys.stderr, 'Error: not enough parameters.'
    sys.exit(1)

# read the config file and parse it
conf = json.loads(fileOps.read(sys.argv[1]))

# get list of announced cmssw releases and parse it
cmssw = ET.fromstring(url.read(conf['urlRelList']))
# get list of documented cmssw releases and parse it
docCMSSW = ET.fromstring(url.read(conf['urlDocList']))


def isDocNeeded(relName):
    if re.match(conf['pattern'], relName): return True
    else: return False


# cmssw XML structure
class CMSSW:
    def __init__(self, name=None, arch=None, type=None, state=None):
示例#10
0
import sys, time
from lib import dashboard, url, fileOps, sites
try: import json
except ImportError: import simplejson as json

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)
示例#11
0
parser = OptionParser()
parser.add_option("-k", "--key",    dest="jsonKeyFile", help="Key FILE for google calendar API",       metavar="FILE")
parser.add_option("-m", "--map",    dest="mapFile",     help="Map FILE to matche tiers and calendars", metavar="FILE")
parser.add_option("-s", "--source", dest="source",      help="Calendar source url",                    metavar="URL")
parser.add_option("-r", "--range",  dest="range",       help="Time RANGE (window) in hours",           type="int")
(options, args) = parser.parse_args()

if not options.jsonKeyFile or not options.mapFile or not options.source or not options.range:
    sys.stderr.write('not enough argument. please run python main.py --help.\n')
    sys.exit(1)

# create google calendar api
api         = google.calendarAPI(options.jsonKeyFile)
# parse calendar-CMS site tier map file
map         = json.loads(fileOps.read(options.mapFile))
# calculate lower bound parameter for google calendar api
lowerBound  = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime(time.time() - options.range*60*60))
# get downtimes from dashboard and parse json
print 'get downtime entries from dashboard: %s' %  options.source
dashboardDT = dashboard.getDowntimes(options.source, lowerBound)
# get all calendar under the google account
calendars   = api.getCalendars()['items']

# delete all old events to flush the downtime calendar
for calendar in calendars:
    # if curret calendar is not important for us, skip it
    # !!! be careful, you dont want to delete events placed
    # in other calendars. just delete events placed in related
    # calendars and time range (window) !!!
    if not calendar['summary'] in map: continue
示例#12
0
import sys, os, time
try:
    import json
except ImportError:
    import simplejson as json
from lib import fileOps

if len(sys.argv) < 4:
    sys.stderr.write("not enough prameter!\n")
    sys.exit(1)

htmlTemplate = fileOps.read(sys.argv[1])
info = sys.argv[2]
inOutPath = sys.argv[3]

data = {}
for i in os.listdir(inOutPath):
    if not '.json' in i: continue
    date = time.strftime("%B %d, %Y %H:%M:%S",
                         time.localtime(int(i.replace('.json', ''))))
    data[date] = json.loads(fileOps.read("{0}/{1}".format(inOutPath, i)))

jsData = {}
for date in data:
    for site in data[date]:
        if not site in jsData:
            jsData[site] = {}
        if data[date][site] == 'n/a': data[date][site] = -1.0
        jsData[site][date] = data[date][site]

示例#13
0
from lib import url, fileOps
import sys, os, time, copy
try:
    import json
    from json import encoder
    encoder.FLOAT_REPR = lambda o: format(o, '.2f')
except ImportError:
    import simplejson as json

if len(sys.argv) < 2:
    sys.exit('not enough arguments!')

tests = ['sam', 'hc', 'ggus']
# python report.py $TMP/report.json $TMP/report_2weeks.json
# set variables given from outside
currentReport = json.loads(fileOps.read(sys.argv[1]))
htmlTemplate = fileOps.read(sys.argv[2])
reportFile = sys.argv[3]
htmlOutputPath = sys.argv[4]

if os.path.isfile(reportFile):
    print 'loading 2 weeks report...'
    report = json.loads(fileOps.read(reportFile))
else:
    print 'creating new 2 weeks report...'
    report = {'data': {}}

# insert new test results
data = currentReport['data']
for site in data:
    if not report['data'].has_key(site):
示例#14
0
文件: find.py 项目: cmsdoxy/cmsdoxy
# this script finds an available release to generate ref man.
# please note that the output of the script should be printed
# as one line to be parsed by the sheel script.

import sys
from lib import fileOps
try: import json
except ImportError: import simplejson as json

# input: releases list, label to find
if len(sys.argv) < 3:
    print >> sys.stderr, 'Error: not enough parameters.'
    sys.exit(1)

# read release list to find one to document. printFlag must be false,
# otherwise the parser in the shell script will stop execution.
rels2Doc = json.loads(fileOps.read(sys.argv[1], printFlag = False))

# get keys to sort them
keys = rels2Doc.keys()
# reverse order to catch newer one (first in first out huh?)
keys.sort(reverse = True)

for i in keys:
    if rels2Doc[i]['status'] == sys.argv[2]:
        print i, rels2Doc[i]['arch']
        sys.exit(0)

# no release to document
print "-"
示例#15
0
文件: diff.py 项目: cmsdoxy/cmsdoxy
# this script generates list of undocumented CMSSW releases.

import os, sys, re
from lib import url, fileOps
try: import json
except ImportError: import simplejson as json
try: import xml.etree.ElementTree as ET
except ImportError: from elementtree import ElementTree as ET

# input: config file, input/output file
if len(sys.argv) < 3:
    print >> sys.stderr, 'Error: not enough parameters.'
    sys.exit(1)

# read the config file and parse it
conf     = json.loads(fileOps.read(sys.argv[1]))

# get list of announced cmssw releases and parse it
cmssw    = ET.fromstring(url.read(conf['urlRelList']))
# get list of documented cmssw releases and parse it
docCMSSW = ET.fromstring(url.read(conf['urlDocList']))

def isDocNeeded(relName):
    if re.match(conf['pattern'], relName): return True
    else: return False

# cmssw XML structure
class CMSSW:
    def __init__(self, name = None, arch = None, type = None,
                 state = None):
        self.name     = name.strip()