def _db_run_config(self): pod = defaultdict(dict) parameter_types = ['augmentation', 'resource_getter'] for parameter_type in parameter_types: columns = ['parameters.name', 'parameters.value', 'parameters.value_type', ('{}s.name'.format(parameter_type), '{}'.format(parameter_type))] tables = ['parameters', '{}s'.format(parameter_type)] conditions = ['parameters.run_oid = \'{}\''.format(self.oid), 'parameters.type = \'{}\''.format(parameter_type), 'parameters.{0}_oid = {0}s.oid'.format(parameter_type)] configs = self._read_db(columns, tables, conditions) for config in configs: entry = {config['name']: json.loads(config['value'])} pod['{}s'.format(parameter_type)][config.pop(parameter_type)] = entry # run config columns = ['runs.max_retries', 'runs.allow_phone_home', 'runs.bail_on_init_failure', 'runs.retry_on_status'] tables = ['runs'] conditions = ['runs.oid = \'{}\''.format(self.oid)] config = self._read_db(columns, tables, conditions) if not config: return {} config = config[0] # Convert back into a string representation of an enum list config['retry_on_status'] = config['retry_on_status'][1:-1].split(',') pod.update(config) return pod
def _get_parameters(self, param_type): columns = ['parameters.job_oid', 'parameters.name', 'parameters.value'] tables = ['parameters'] conditions = ['parameters.type = \'{}\''.format(param_type), 'parameters.run_oid = \'{}\''.format(self.oid)] params = self._read_db(columns, tables, conditions, as_dict=False) parm_dict = defaultdict(dict) for (job_oid, k, v) in params: try: parm_dict[job_oid][k] = json.loads(v) except SerializerSyntaxError: logger.debug('Failed to deserialize job_oid:{}-"{}":"{}"'.format(job_oid, k, v)) return parm_dict
def _db_targetfile(self): columns = ['os', 'is_rooted', 'target', 'modules', 'abi', 'cpus', 'os_version', 'hostid', 'hostname', 'kernel_version', 'kernel_release', 'kernel_sha1', 'kernel_config', 'sched_features', 'page_size_kb', 'system_id', 'screen_resolution', 'prop', 'android_id', '_pod_version', '_pod_serialization_version'] tables = ['targets'] conditions = ['targets.run_oid = \'{}\''.format(self.oid)] pod = self._read_db(columns, tables, conditions) if not pod: return {} pod = pod[0] try: pod['cpus'] = [json.loads(cpu) for cpu in pod.pop('cpus')] except SerializerSyntaxError: pod['cpus'] = [] logger.debug('Failed to deserialize target cpu information') pod['kernel_config'] = kernel_config_from_db(pod['kernel_config']) return pod