def cms_site_avail(self): url = self.metadata['dashboard_sam_url_all'] req = urllib2.Request(url, headers={"Accept": "text/xml"}) handler = urllib2.HTTPHandler() fp = handler.http_open(req) dom = parse(fp) cherrypy.response.headers['Content-Type'] = 'image/png' data_dom = dom.getElementsByTagName("data")[0] data = {} begin = None end = None for item in data_dom.getElementsByTagName("item"): timestamp_dom = item.getElementsByTagName("TimeStamp")[0] av_dom = item.getElementsByTagName("AvValue")[0] voname_dom = item.getElementsByTagName("VOName")[0] timestamp_str = str(timestamp_dom.firstChild.data) time_tuple = time.strptime(timestamp_str, '%Y-%m-%d %H:%M:%S') timestamp = datetime.datetime(*time_tuple[:6]) if not begin: begin = timestamp if not end: end = timestamp begin = min(timestamp, begin) end = max(timestamp, end) av = float(av_dom.firstChild.data) voname = str(voname_dom.firstChild.data) site_dict = data.get(voname, {}) data[voname] = site_dict site_dict[timestamp] = av metadata = { 'title': 'CMS SAM Availability', 'span': 86400, 'starttime': begin, 'endtime': end, 'fixed-height': False, 'color_override': { -2: 'grey' } } fp = cStringIO.StringIO() QM = QualityMap() QM(data, fp, metadata) return fp.getvalue()
span = 3600 # Generate our time series def make_time_data(): end_time = time.time() end_time -= end_time % span begin_time = end_time - 24 * span data = {} for i in range(begin_time, end_time, span): data[i] = random.random() return begin_time, end_time, data QM = QualityMap() # Data generation full_data = {} for i in range(10): team_name = 'Team %i' % i begin_time, end_time, data = make_time_data() full_data[team_name] = data metadata = { 'title': 'Quality Plot w.r.t. Time', 'starttime': begin_time, 'endtime': end_time, 'span': span } filename = expand_string('$HOME/tmp/quality_map.png', os.environ)