diff --git a/beat/web/backend/api.py b/beat/web/backend/api.py index 959f91a31a591a5322ea25708aaaf1b6bce58e1f..3316674a7c0da0e5cc4f3d956727c3525414b393 100644 --- a/beat/web/backend/api.py +++ b/beat/web/backend/api.py @@ -124,11 +124,11 @@ def scheduler(request): data['workers'][name]['db_status'] = 'Inactive' data['workers'][name]['info'] = 'Worker temporarily deactivated' - elif data['workers'][name]['cores'] != worker.nb_cores: + elif data['workers'][name]['cores'] != worker.cores: data['workers'][name]['db_status'] = 'Mismatch' data['workers'][name]['info'] = \ 'Number of cores differs (db: %d, scheduler: %d)' % \ - (data['workers'][name]['cores'], worker.nb_cores) + (data['workers'][name]['cores'], worker.cores) else: data['workers'][name]['db_status'] = 'Active' data['workers'][name]['info'] = 'Worker is declared and active' @@ -169,7 +169,7 @@ def scheduler(request): slots = {} for slot in db_queue.slots.iterator(): if slot.worker.active: - slots[slot.worker.name] = slot.nb_slots + slots[slot.worker.name] = slot.quantity environments = [] for environment in db_queue.environments.filter(active=True): @@ -181,7 +181,7 @@ def scheduler(request): compare = { 'memory-in-megabytes': db_queue.memory_limit, 'time-limit-in-minutes': db_queue.time_limit, - 'nb-cores-per-slot': db_queue.nb_cores_per_slot, + 'nb-cores-per-slot': db_queue.cores_per_slot, 'max-slots-per-user': db_queue.max_slots_per_user, 'slots': slots, 'environments': environments, @@ -218,7 +218,7 @@ def scheduler(request): slots = {} for slot in db_queue.slots.iterator(): if slot.worker.active: - slots[slot.worker.name] = slot.nb_slots + slots[slot.worker.name] = slot.quantity environments = [] for environment in db_queue.environments.filter(active=True): @@ -234,7 +234,7 @@ def scheduler(request): 'status': 'Active', 'memory-in-megabytes': db_queue.memory_limit, 'time-limit-in-minutes': db_queue.time_limit, - 'nb-cores-per-slot': db_queue.nb_cores_per_slot, + 'nb-cores-per-slot': db_queue.cores_per_slot, 'max-slots-per-user': db_queue.max_slots_per_user, 'slots': slots, 'total-slots': db_queue.total_slots(), @@ -585,10 +585,12 @@ def block_finished(request): algorithm = beat.core.algorithm.Algorithm(settings.PREFIX, block.algorithm.fullname()) for field, value in output_data.as_dict().items(): - result_entry = Result() - result_entry.cache = block.first_cache() + cached_file = block.first_cache() + result_entry, created = Result.objects.get_or_create( + name=field, + cache=cached_file, + ) result_entry.primary = algorithm.results[field]['display'] - result_entry.name = field result_entry.type = algorithm.results[field]["type"] if result_entry.type in ['int32', 'float32', 'bool', 'string']: diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py index 368223bb0974ff1d64048fcf86ff34c9b9222305..1a30579e4a5012332e852b0f95741177015dd2a7 100644 --- a/beat/web/backend/models.py +++ b/beat/web/backend/models.py @@ -303,6 +303,20 @@ class Queue(models.Model): return [w[0] for w in workers] + def as_json(self): + return { + 'memory-in-megabytes': self.memory_limit, + 'time-limit-in-minutes': self.time_limit, + 'nb-cores-per-slot': self.cores_per_slot, + 'max-slots-per-user': self.max_slots_per_user, + 'environments': map(lambda x: { + 'name': x.name, + 'version': x.version, + }, self.environments.filter(active=True)), + 'slots': dict([(x.worker.name, x.quantity) for x in self.slots.iterator() if x.worker.active]), + } + + class SlotManager(models.Manager): def get_by_natural_key(self, queue_name, worker_name):