Moving these functions to the end of the file enables site classes to
derive from the base classes without requiring a split into base
files.  In our environment we have a site_server_job which imports
base_server_job from server_job.  When these site import functions
appear in the server_job file before the full definition of the base
class we run into import loops.  This fixes that problem.

Signed-off-by: Paul Pendlebury <[email protected]>
---
 server/server_job.py |   29 +++++++++++++++--------------
 1 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/server/server_job.py b/server/server_job.py
index 8a16c6a..40dcd5b 100644
--- a/server/server_job.py
+++ b/server/server_job.py
@@ -42,12 +42,6 @@ def _get_site_job_data_dummy(job):
     return {}
 
 
-# load up site-specific code for generating site-specific job data
-get_site_job_data = utils.import_site_function(__file__,
-    "autotest_lib.server.site_server_job", "get_site_job_data",
-    _get_site_job_data_dummy)
-
-
 class status_indenter(base_job.status_indenter):
     """Provide a simple integer-backed status indenter."""
     def __init__(self):
@@ -1108,14 +1102,6 @@ class base_server_job(base_job.base_job):
                 host.clear_known_hosts()
 
 
-site_server_job = utils.import_site_class(
-    __file__, "autotest_lib.server.site_server_job", "site_server_job",
-    base_server_job)
-
-class server_job(site_server_job):
-    pass
-
-
 class warning_manager(object):
     """Class for controlling warning logs. Manages the enabling and disabling
     of warnings."""
@@ -1147,3 +1133,18 @@ class warning_manager(object):
         intervals = self.disabled_warnings.get(warning_type, [])
         if intervals and intervals[-1][1] is None:
             intervals[-1] = (intervals[-1][0], int(current_time_func()))
+
+
+# load up site-specific code for generating site-specific job data
+get_site_job_data = utils.import_site_function(__file__,
+    "autotest_lib.server.site_server_job", "get_site_job_data",
+    _get_site_job_data_dummy)
+
+
+site_server_job = utils.import_site_class(
+    __file__, "autotest_lib.server.site_server_job", "site_server_job",
+    base_server_job)
+
+
+class server_job(site_server_job):
+    pass
-- 
1.7.3.1

_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to