示例#1
0
    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
示例#2
0
 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
示例#3
0
 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