コード例 #1
0
    def from_experiment_id_and_tick(cls, experiment_id, tick):
        """Query MachineStates by their Experiment id and tick."""

        machine_states = []

        statement = 'SELECT * FROM machine_states WHERE experiment_id = %s AND machine_states.tick = %s'
        results = database.fetchall(statement, (experiment_id, tick))

        for row in results:
            machine_states.append(cls._from_database_row(row))

        return machine_states
コード例 #2
0
    def query(cls, column_name=None, value=None):
        """Return all instances of the Model in the database where column_name = value."""

        if column_name is not None and value is not None:
            statement = 'SELECT * FROM {} WHERE {} = %s'.format(
                cls.TABLE_NAME, column_name)
            database_models = database.fetchall(statement, (value, ))

        else:
            statement = 'SELECT * FROM {}'.format(cls.TABLE_NAME)
            database_models = database.fetchall(statement)

        models = []

        for database_model in database_models:

            parameters = {}
            for i, parameter in enumerate(cls.COLUMNS):
                parameters[parameter] = database_model[i]

            models.append(cls(**parameters))

        return models
コード例 #3
0
ファイル: task_state.py プロジェクト: kl1de/kl1de
    def from_experiment_id_and_tick(cls, experiment_id, tick):
        """Query Task States by their Experiment id and tick."""

        task_states = []

        statement = 'SELECT * FROM task_states WHERE experiment_id = %s AND tick = %s'
        results = database.fetchall(statement, (experiment_id, tick))

        for row in results:
            task_states.append(
                cls(id=row[0],
                    task_id=row[1],
                    experiment_id=row[2],
                    tick=row[3],
                    flops_left=row[4]))

        return task_states
コード例 #4
0
    def from_experiment_id(cls, experiment_id):
        """Query RoomStates by their Experiment id."""

        room_states = []

        statement = '''
            SELECT task_id, MAX(tick) - MIN(tick) as duration FROM task_states
            WHERE experiment_id = %s
            GROUP BY task_id
        '''

        results = database.fetchall(statement, (experiment_id, ))

        for row in results:
            room_states.append(cls._from_database_row(row))

        return room_states
コード例 #5
0
    def from_experiment_id(cls, experiment_id):
        """Query RackStates by their Experiment id."""

        rack_states = []

        statement = '''
            SELECT racks.id, avg(machine_states.load_fraction), machine_states.tick
            FROM racks
                JOIN machines ON racks.id = machines.rack_id
                JOIN machine_states ON machines.id = machine_states.machine_id
            WHERE machine_states.experiment_id = %s
            GROUP BY machine_states.tick, racks.id
        '''
        results = database.fetchall(statement, (experiment_id, ))

        for row in results:
            rack_states.append(cls._from_database_row(row))

        return rack_states
コード例 #6
0
    def read(self):
        """Read this Machine by also getting its CPU, GPU, Memory and Storage IDs."""

        super(Machine, self).read()

        for device_table in self.device_table_to_attribute.keys():

            statement = 'SELECT * FROM machine_{} WHERE machine_id = %s'.format(
                device_table)
            results = database.fetchall(statement, (self.id, ))

            device_ids = []

            for row in results:
                device_ids.append(row[2])

            setattr(self, self.device_table_to_attribute[device_table],
                    device_ids)

        setattr(self, 'tags', [])
コード例 #7
0
    def from_experiment_id(cls, experiment_id):
        """Query RoomStates by their Experiment id."""

        room_states = []

        statement = '''
            SELECT rooms.id, avg(machine_states.load_fraction), machine_states.tick
            FROM rooms
                JOIN tiles ON rooms.id = tiles.room_id
                JOIN objects ON tiles.object_id = objects.id
                JOIN racks ON objects.id = racks.id
                JOIN machines ON racks.id = machines.rack_id
                JOIN machine_states ON machines.id = machine_states.machine_id
            WHERE objects.type = "RACK"
                AND machine_states.experiment_id = %s
            GROUP BY machine_states.tick, rooms.id
        '''
        results = database.fetchall(statement, (experiment_id, ))

        for row in results:
            room_states.append(cls._from_database_row(row))

        return room_states