From 5b67d34537c39198d3eb302a27339cdb4b276bb8 Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Nov 01 2017 09:18:22 +0000 Subject: volume support for scratch builds Fixes: https://pagure.io/koji/issue/668 --- diff --git a/hub/kojihub.py b/hub/kojihub.py index dedcbc6..03efd3a 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -11653,8 +11653,12 @@ class HostExports(object): rpms = check_noarch_rpms(uploadpath, rpms) #figure out storage location - # //task_ - scratchdir = koji.pathinfo.scratch() + # ///task_ + policy_data = { + 'scratch': True, + } + vol = check_volume_policy(policy_data, strict=False, default='DEFAULT') + scratchdir = koji.pathinfo.scratch(volume=vol['name']) username = get_user(task.getOwner())['name'] dir = "%s/%s/task_%s" % (scratchdir, username, task_id) koji.ensuredir(dir) @@ -11684,7 +11688,11 @@ class HostExports(object): host.verify() task = Task(task_id) task.assertHost(host.id) - scratchdir = koji.pathinfo.scratch() + policy_data = { + 'scratch': True, + } + vol = check_volume_policy(policy_data, strict=False, default='DEFAULT') + scratchdir = koji.pathinfo.scratch(volume=vol['name']) username = get_user(task.getOwner())['name'] destdir = os.path.join(scratchdir, username, 'task_%s' % task_id) for reldir, files in results['files'].items() + [('', results['logs'])]: @@ -11716,7 +11724,11 @@ class HostExports(object): host.verify() task = Task(task_id) task.assertHost(host.id) - scratchdir = koji.pathinfo.scratch() + policy_data = { + 'scratch': True, + } + vol = check_volume_policy(policy_data, strict=False, default='DEFAULT') + scratchdir = koji.pathinfo.scratch(volume=vol['name']) username = get_user(task.getOwner())['name'] destdir = os.path.join(scratchdir, username, 'task_%s' % task_id) for relpath in results['output'].keys() + results['logs']: @@ -11747,7 +11759,11 @@ class HostExports(object): logger.warning('Task %s failed, no image available' % task_id) continue workdir = koji.pathinfo.task(sub_results['task_id']) - scratchdir = koji.pathinfo.scratch() + policy_data = { + 'scratch': True, + } + vol = check_volume_policy(policy_data, strict=False, default='DEFAULT') + scratchdir = koji.pathinfo.scratch(volume=vol['name']) username = get_user(task.getOwner())['name'] destdir = os.path.join(scratchdir, username, 'task_%s' % sub_results['task_id']) diff --git a/koji/__init__.py b/koji/__init__.py index 305cca3..88a5708 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -1902,9 +1902,9 @@ class PathInfo(object): tmp = self.work(volume) + '/tmp/' + ''.join([random.choice(self.ASCII_CHARS) for dummy in '123456']) return tmp - def scratch(self): + def scratch(self, volume=None): """Return the main scratch dir""" - return self.topdir + '/scratch' + return self.volumedir(volume) + '/scratch' def task(self, task_id, volume=None): """Return the output directory for the task with the given id"""