def gather_reporting_data(self, resource_id): logger.info('Gathering reporting data') now = clock.get_time() # Adds a record to the data set for this timestamp. self.data[now] = dict() self.summaries[now] = dict() # Adds a summary record for the clients p = ReportingData() p.total_wants = 0 p.total_has = 0 self.summaries[now]['clients'] = p self.all_summaries.add('clients') # Step 1: Goes through all the clients in the system, gets their # reporting data and adds it to the data set. for client in Client.all_clients(): client_id = client.get_client_id() self.all_clients.add(client_id) data = client.get_reporting_data(resource_id) if data: self.data[now][client_id] = data logger.debug('%s: %s' % (client_id, str(data))) p.total_wants += data.wants p.total_has += data.has else: logger.warning('No reporting data received from %s' % client_id) # Step 2: Find the master server of every job, get its reporting data # and add it to the data set. for job in ServerJob.all_server_jobs(): current_master = job.get_master() # If this job does not have a master then we got nothing to do. if not current_master: continue job_name = job.get_job_name() self.all_server_jobs.add(job_name) data = current_master.get_reporting_data(resource_id) if data: self.data[now][job_name] = data logger.debug('%s: %s' % (job_name, str(data))) key = 'level %d' % current_master.get_server_level() self.all_summaries.add(key) if not key in self.summaries[now]: p = ReportingData() p.total_wants = 0 p.total_has = 0 p.total_leases = 0 p.total_outstanding = 0 self.summaries[now][key] = p else: p = self.summaries[now][key] p.total_wants += data.wants p.total_has += data.has p.total_leases += data.leases p.total_outstanding += data.outstanding else: logger.warning( 'No reporting data received from %s' % current_master.get_server_id())