Skip to content
Snippets Groups Projects

Issue 433

Merged André Anjos requested to merge issue_433 into master
6 files
+ 51
26
Compare changes
  • Side-by-side
  • Inline
Files
6
+ 14
11
@@ -63,12 +63,12 @@ from ..statistics.utils import updateStatistics
@@ -63,12 +63,12 @@ from ..statistics.utils import updateStatistics
class EnvironmentManager(ShareableManager):
class EnvironmentManager(ShareableManager):
def get_by_natural_key(self, key):
def get_by_natural_key(self, name, version):
name, version = key.rsplit(' ', 1)
return self.get(name=name, version=version)
return self.get(
name=name,
def get_by_fullname(self, fullname):
version=version[1:-1],
name, version = fullname.rsplit(' ', 1)
)
return self.get_by_natural_key(name, version[1:-1])
class Environment(Shareable):
class Environment(Shareable):
@@ -128,7 +128,7 @@ class Environment(Shareable):
@@ -128,7 +128,7 @@ class Environment(Shareable):
def natural_key(self):
def natural_key(self):
return self.fullname()
return (self.name, self.version)
#_____ Utilities __________
#_____ Utilities __________
@@ -229,7 +229,7 @@ class Worker(models.Model):
@@ -229,7 +229,7 @@ class Worker(models.Model):
def natural_key(self):
def natural_key(self):
return self.name
return (self.name,)
def get_admin_change_url(self):
def get_admin_change_url(self):
@@ -303,7 +303,7 @@ class Worker(models.Model):
@@ -303,7 +303,7 @@ class Worker(models.Model):
wishlist = Environment.objects.filter(queues__in=queues, active=True)
wishlist = Environment.objects.filter(queues__in=queues, active=True)
wishlist = wishlist.order_by('id').distinct()
wishlist = wishlist.order_by('id').distinct()
required = [k.natural_key() for k in wishlist]
required = [k.fullname() for k in wishlist]
missing = [k for k in required if k not in environments]
missing = [k for k in required if k not in environments]
unused = [k for k in environments if k not in required]
unused = [k for k in environments if k not in required]
@@ -456,6 +456,7 @@ class Worker(models.Model):
@@ -456,6 +456,7 @@ class Worker(models.Model):
cmdline = [process]
cmdline = [process]
if cpulimit is not None: cmdline += ['--cpulimit=%s' % cpulimit]
if cpulimit is not None: cmdline += ['--cpulimit=%s' % cpulimit]
if settings.DEBUG: cmdline += ['-vv']
if settings.DEBUG: cmdline += ['-vv']
 
else: cmdline += ['-v']
# start newly assigned job splits
# start newly assigned job splits
with transaction.atomic():
with transaction.atomic():
@@ -532,6 +533,8 @@ class Queue(models.Model):
@@ -532,6 +533,8 @@ class Queue(models.Model):
related_name='queues',
related_name='queues',
)
)
 
objects = QueueManager()
 
#_____ Meta parameters __________
#_____ Meta parameters __________
class Meta:
class Meta:
@@ -553,7 +556,7 @@ class Queue(models.Model):
@@ -553,7 +556,7 @@ class Queue(models.Model):
def natural_key(self):
def natural_key(self):
return self.name
return (self.name,)
def get_admin_change_url(self):
def get_admin_change_url(self):
@@ -620,7 +623,7 @@ class Queue(models.Model):
@@ -620,7 +623,7 @@ class Queue(models.Model):
'time-limit': self.time_limit,
'time-limit': self.time_limit,
'cores-per-slot': self.cores_per_slot,
'cores-per-slot': self.cores_per_slot,
'max-slots-per-user': self.max_slots_per_user,
'max-slots-per-user': self.max_slots_per_user,
'environments': [k.natural_key() for k in self.environments.all()],
'environments': [k.fullname() for k in self.environments.all()],
'slots': dict([(s.worker.name, dict(quantity=s.quantity,
'slots': dict([(s.worker.name, dict(quantity=s.quantity,
priority=s.priority)) for s in self.slots.all()]),
priority=s.priority)) for s in self.slots.all()]),
'groups': [k.name for k in Group.objects.all() if 'can_access' in get_perms(k, self)]
'groups': [k.name for k in Group.objects.all() if 'can_access' in get_perms(k, self)]
Loading