From 15cba140f00e97fbda35407d57a7f910dbd0a82e Mon Sep 17 00:00:00 2001 From: Philip ABBET <philip.abbet@idiap.ch> Date: Wed, 9 Nov 2016 09:41:08 +0100 Subject: [PATCH] Now use the 'docker' branch of beat.core --- beat/web/backend/tests.py | 8 ++------ beat/web/backend/utils.py | 35 +++++++++++++++++++++++++++++++++++ beat/web/backend/views.py | 2 +- beat/web/scripts/worker.py | 2 +- buildout.cfg | 4 ++-- 5 files changed, 41 insertions(+), 10 deletions(-) mode change 100644 => 100755 beat/web/backend/tests.py mode change 100644 => 100755 beat/web/backend/utils.py mode change 100644 => 100755 beat/web/backend/views.py mode change 100644 => 100755 beat/web/scripts/worker.py diff --git a/beat/web/backend/tests.py b/beat/web/backend/tests.py old mode 100644 new mode 100755 index 977a23842..cebfc4368 --- a/beat/web/backend/tests.py +++ b/beat/web/backend/tests.py @@ -2093,10 +2093,8 @@ class Working(BaseBackendTestCase): def setUp(self): - from beat.core.async import resolve_cpulimit_path - self.cpulimit = resolve_cpulimit_path(None) - from . import utils + self.cpulimit = utils.resolve_cpulimit_path(None) self.process = utils.resolve_process_path() self.environments = utils.find_environments(None) self.env1_execute = self.environments['environment (1)']['execute'] @@ -2548,10 +2546,8 @@ class WorkingExternally(TransactionTestCase): def setUp(self): - from beat.core.async import resolve_cpulimit_path - self.cpulimit = resolve_cpulimit_path(None) - from . import utils + self.cpulimit = utils.resolve_cpulimit_path(None) self.process = utils.resolve_process_path() self.environments = utils.find_environments(None) diff --git a/beat/web/backend/utils.py b/beat/web/backend/utils.py old mode 100644 new mode 100755 index bda58d941..209cd9bdf --- a/beat/web/backend/utils.py +++ b/beat/web/backend/utils.py @@ -32,6 +32,7 @@ import sys import fnmatch import glob import time +import distutils.spawn import logging logger = logging.getLogger(__name__) @@ -409,3 +410,37 @@ def pick_execute(split, environments): # Check we have a compatible environment to execute the user algorithm envinfo = environments.get(split.job.block.environment.fullname()) return envinfo['execute'] if envinfo else None + + +def resolve_cpulimit_path(exe): + '''Returns the path to cpulimit''' + FIXED_LOCATIONS = [ + '/usr/local/bin/cpulimit', + '/opt/local/bin/cpulimit', + '/usr/bin/cpulimit', + ] + default = os.path.join( + os.path.dirname(os.path.realpath(sys.argv[0])), + 'cpulimit', + ) + retval = exe or default + # See if we find it in parallel, installed with our interpreter + if not os.path.exists(retval): + cand = os.path.join(os.path.dirname(sys.executable), 'cpulimit') + if os.path.exists(cand): retval = cand + # Try to see if the PATH variable is set + if not os.path.exists(retval): + try: + retval = distutils.spawn.find_executable('cpulimit') + except KeyError: #missing PATH variable + retval = None + # Try fixed locations + if not retval: + for k in FIXED_LOCATIONS: + if os.path.exists(k): + retval = k + if not retval: + raise IOError("I cannot the find a `cpulimit' binary on your system or " \ + "the value you provided is not valid (%s) or the symbolic link " \ + "(%s) is not properly set" % (exe, default)) + return retval diff --git a/beat/web/backend/views.py b/beat/web/backend/views.py old mode 100644 new mode 100755 index e954598b6..c86e05641 --- a/beat/web/backend/views.py +++ b/beat/web/backend/views.py @@ -42,7 +42,7 @@ from django.contrib.auth.decorators import login_required from django.http import HttpResponseForbidden from django.contrib import messages -from beat.core.async import resolve_cpulimit_path +from .utils import resolve_cpulimit_path from ..experiments.models import Experiment diff --git a/beat/web/scripts/worker.py b/beat/web/scripts/worker.py old mode 100644 new mode 100755 index c4a257ce3..a78c66c4f --- a/beat/web/scripts/worker.py +++ b/beat/web/scripts/worker.py @@ -126,7 +126,7 @@ def main(user_input=None): arguments['--name']) # figure out paths to programs I need to use - from beat.core.async import resolve_cpulimit_path + from ..backend.utils import resolve_cpulimit_path cpulimit = resolve_cpulimit_path(arguments['--cpulimit']) logger.debug("(path) cpulimit: `%s'", cpulimit) process = utils.resolve_process_path() diff --git a/buildout.cfg b/buildout.cfg index ba44f3b0f..50747a188 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -15,7 +15,7 @@ develop = . versions = versions [versions] -django = >=1.8,<1.9 +django = >=1.9,<1.10 django-rest-swagger = >=0.3.2,<0.3.3 django-guardian = >=1.3 djangorestframework = >=3.2,<3.3 @@ -85,7 +85,7 @@ eggs = alabaster wsgiref [sources] -beat.core = git git@gitlab.idiap.ch:beat/beat.core +beat.core = git git@gitlab.idiap.ch:beat/beat.core branch=docker beat.cmdline = git git@gitlab.idiap.ch:beat/beat.cmdline beat.backend.python = git git@gitlab.idiap.ch:beat/beat.backend.python beat.examples = git git@gitlab.idiap.ch:beat/beat.examples egg=false -- GitLab