Skip to content
Snippets Groups Projects
Commit 033266f5 authored by André Anjos's avatar André Anjos :speech_balloon:
Browse files

[backend] Catch-up with changes on backend models

parent 8769277a
Branches
Tags
1 merge request!194Scheduler
...@@ -124,11 +124,11 @@ def scheduler(request): ...@@ -124,11 +124,11 @@ def scheduler(request):
data['workers'][name]['db_status'] = 'Inactive' data['workers'][name]['db_status'] = 'Inactive'
data['workers'][name]['info'] = 'Worker temporarily deactivated' 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]['db_status'] = 'Mismatch'
data['workers'][name]['info'] = \ data['workers'][name]['info'] = \
'Number of cores differs (db: %d, scheduler: %d)' % \ 'Number of cores differs (db: %d, scheduler: %d)' % \
(data['workers'][name]['cores'], worker.nb_cores) (data['workers'][name]['cores'], worker.cores)
else: else:
data['workers'][name]['db_status'] = 'Active' data['workers'][name]['db_status'] = 'Active'
data['workers'][name]['info'] = 'Worker is declared and active' data['workers'][name]['info'] = 'Worker is declared and active'
...@@ -169,7 +169,7 @@ def scheduler(request): ...@@ -169,7 +169,7 @@ def scheduler(request):
slots = {} slots = {}
for slot in db_queue.slots.iterator(): for slot in db_queue.slots.iterator():
if slot.worker.active: if slot.worker.active:
slots[slot.worker.name] = slot.nb_slots slots[slot.worker.name] = slot.quantity
environments = [] environments = []
for environment in db_queue.environments.filter(active=True): for environment in db_queue.environments.filter(active=True):
...@@ -181,7 +181,7 @@ def scheduler(request): ...@@ -181,7 +181,7 @@ def scheduler(request):
compare = { compare = {
'memory-in-megabytes': db_queue.memory_limit, 'memory-in-megabytes': db_queue.memory_limit,
'time-limit-in-minutes': db_queue.time_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, 'max-slots-per-user': db_queue.max_slots_per_user,
'slots': slots, 'slots': slots,
'environments': environments, 'environments': environments,
...@@ -218,7 +218,7 @@ def scheduler(request): ...@@ -218,7 +218,7 @@ def scheduler(request):
slots = {} slots = {}
for slot in db_queue.slots.iterator(): for slot in db_queue.slots.iterator():
if slot.worker.active: if slot.worker.active:
slots[slot.worker.name] = slot.nb_slots slots[slot.worker.name] = slot.quantity
environments = [] environments = []
for environment in db_queue.environments.filter(active=True): for environment in db_queue.environments.filter(active=True):
...@@ -234,7 +234,7 @@ def scheduler(request): ...@@ -234,7 +234,7 @@ def scheduler(request):
'status': 'Active', 'status': 'Active',
'memory-in-megabytes': db_queue.memory_limit, 'memory-in-megabytes': db_queue.memory_limit,
'time-limit-in-minutes': db_queue.time_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, 'max-slots-per-user': db_queue.max_slots_per_user,
'slots': slots, 'slots': slots,
'total-slots': db_queue.total_slots(), 'total-slots': db_queue.total_slots(),
...@@ -585,10 +585,12 @@ def block_finished(request): ...@@ -585,10 +585,12 @@ def block_finished(request):
algorithm = beat.core.algorithm.Algorithm(settings.PREFIX, algorithm = beat.core.algorithm.Algorithm(settings.PREFIX,
block.algorithm.fullname()) block.algorithm.fullname())
for field, value in output_data.as_dict().items(): for field, value in output_data.as_dict().items():
result_entry = Result() cached_file = block.first_cache()
result_entry.cache = 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.primary = algorithm.results[field]['display']
result_entry.name = field
result_entry.type = algorithm.results[field]["type"] result_entry.type = algorithm.results[field]["type"]
if result_entry.type in ['int32', 'float32', 'bool', 'string']: if result_entry.type in ['int32', 'float32', 'bool', 'string']:
......
...@@ -303,6 +303,20 @@ class Queue(models.Model): ...@@ -303,6 +303,20 @@ class Queue(models.Model):
return [w[0] for w in workers] 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): class SlotManager(models.Manager):
def get_by_natural_key(self, queue_name, worker_name): def get_by_natural_key(self, queue_name, worker_name):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment