This is a solution to #502 - on a system wide install,
drone_utility will try to create a temporary directory
on a non readable python library area:

Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]: File
"/usr/lib/python2.7/site-packages/autotest/scheduler/drone_utility.py",
line 66, in initialize
Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]:
self._ensure_directory_exists(temporary_directory)
Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]: File
"/usr/lib/python2.7/site-packages/autotest/scheduler/drone_utility.py",
line 211, in _ensure_directory_exists
Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]:
os.makedirs(path)
Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]: File
"/usr/lib64/python2.7/os.py", line 150, in makedirs
Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]:
makedirs(head, mode)
Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]: File
"/usr/lib64/python2.7/os.py", line 157, in makedirs
Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]: mkdir(name,
mode)
Aug 08 09:18:14 localhost autotest-scheduler-watcher[1491]: OSError:
[Errno 13] Permission denied:
'/usr/lib/python2.7/site-packages/autotest/results'

Use the COMMON.test_output_dir setting on global_config.ini
if available to fix this.

Signed-off-by: Lucas Meneghel Rodrigues <[email protected]>
---
 scheduler/drone_utility.py | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/scheduler/drone_utility.py b/scheduler/drone_utility.py
index 94ccb18..d40a05d 100755
--- a/scheduler/drone_utility.py
+++ b/scheduler/drone_utility.py
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 
-import pickle, subprocess, os, shutil, sys, time, signal, getpass
+import pickle, subprocess, os, shutil, sys, time, signal, getpass, logging
 import datetime, traceback, tempfile, itertools
 try:
     import autotest.common as common
@@ -15,7 +15,15 @@ from autotest.scheduler import email_manager, 
scheduler_config
 # something else during recovery.  Name credit goes to showard. ;)
 DARK_MARK_ENVIRONMENT_VAR = 'AUTOTEST_SCHEDULER_DARK_MARK'
 
-_TEMPORARY_DIRECTORY = 'drone_tmp'
+_OUTPUT_DIR = global_config.global_config.get_config_value('COMMON',
+                                                           'test_output_dir',
+                                                            default="")
+
+if _OUTPUT_DIR:
+    _TEMPORARY_DIRECTORY = os.path.join(_OUTPUT_DIR, 'drone_tmp')
+else:
+    _TEMPORARY_DIRECTORY = 'drone_tmp'
+
 _TRANSFER_FAILED_FILE = '.transfer_failed'
 
 
@@ -60,7 +68,13 @@ class DroneUtility(object):
 
 
     def initialize(self, results_dir):
-        temporary_directory = os.path.join(results_dir, _TEMPORARY_DIRECTORY)
+        if _OUTPUT_DIR:
+            temporary_directory = _TEMPORARY_DIRECTORY
+            logging.info("Output dir set in global_config.ini, overriding %s",
+                         results_dir)
+        else:
+            temporary_directory = os.path.join(results_dir,
+                                               _TEMPORARY_DIRECTORY)
         if os.path.exists(temporary_directory):
             shutil.rmtree(temporary_directory)
         self._ensure_directory_exists(temporary_directory)
-- 
1.7.11.2

_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel

Reply via email to