Abstract out common models used in the frontend's models.py so that django is 
not required to interact with non Django portions of the code. 

This includes the enums RebootBefore, RebootAfter and Test.Type 

--- autotest/frontend/afe/frontend_test_utils.py        2010-03-01 
15:59:30.000000000 -0800
+++ autotest/frontend/afe/frontend_test_utils.py        2010-03-01 
15:59:30.000000000 -0800
@@ -2,7 +2,7 @@
 import common
 from autotest_lib.frontend import setup_test_environment
 from autotest_lib.frontend import thread_local
-from autotest_lib.frontend.afe import models
+from autotest_lib.frontend.afe import models, model_attributes
 from autotest_lib.client.common_lib.test_utils import mock
 
 class FrontendTestMixin(object):
@@ -102,7 +102,7 @@
         job = models.Job.objects.create(
             name='test', owner='autotest_system', priority=priority,
             synch_count=synch_count, created_on=created_on,
-            reboot_before=models.RebootBefore.NEVER)
+            reboot_before=model_attributes.RebootBefore.NEVER)
         for host_id in hosts:
             models.HostQueueEntry.objects.create(job=job, host_id=host_id,
                                                  status=status,
--- /dev/null   2009-12-17 12:29:38.000000000 -0800
+++ autotest/frontend/afe/model_attributes.py   2010-03-01 15:59:30.000000000 
-0800
@@ -0,0 +1,11 @@
+import common
+from autotest_lib.client.common_lib import enum
+
+
+# common enums for Job attributes
+RebootBefore = enum.Enum('Never', 'If dirty', 'Always')
+RebootAfter = enum.Enum('Never', 'If all tests passed', 'Always')
+
+
+# common enums for test attributes
+TestTypes = enum.Enum('Client', 'Server', start_value=1)
--- autotest/frontend/afe/models.py     2010-03-01 15:59:30.000000000 -0800
+++ autotest/frontend/afe/models.py     2010-02-26 15:28:08.000000000 -0800
@@ -3,16 +3,14 @@
 from django.db import models as dbmodels, connection
 from xml.sax import saxutils
 import common
-from autotest_lib.frontend.afe import model_logic
+from autotest_lib.frontend.afe import model_logic, model_attributes
 from autotest_lib.frontend import settings, thread_local
 from autotest_lib.client.common_lib import enum, host_protections, 
global_config
 from autotest_lib.client.common_lib import host_queue_entry_states
 
 # job options and user preferences
-RebootBefore = enum.Enum('Never', 'If dirty', 'Always')
-DEFAULT_REBOOT_BEFORE = RebootBefore.IF_DIRTY
-RebootAfter = enum.Enum('Never', 'If all tests passed', 'Always')
-DEFAULT_REBOOT_AFTER = RebootBefore.ALWAYS
+DEFAULT_REBOOT_BEFORE = model_attributes.RebootBefore.IF_DIRTY
+DEFAULT_REBOOT_AFTER = model_attributes.RebootBefore.ALWAYS
 
 
 class AclAccessViolation(Exception):
@@ -136,12 +134,12 @@
     access_level = dbmodels.IntegerField(default=ACCESS_USER, blank=True)
 
     # user preferences
-    reboot_before = dbmodels.SmallIntegerField(choices=RebootBefore.choices(),
-                                               blank=True,
-                                               default=DEFAULT_REBOOT_BEFORE)
-    reboot_after = dbmodels.SmallIntegerField(choices=RebootAfter.choices(),
-                                              blank=True,
-                                              default=DEFAULT_REBOOT_AFTER)
+    reboot_before = dbmodels.SmallIntegerField(
+        choices=model_attributes.RebootBefore.choices(), blank=True,
+        default=DEFAULT_REBOOT_BEFORE)
+    reboot_after = dbmodels.SmallIntegerField(
+        choices=model_attributes.RebootAfter.choices(), blank=True,
+        default=DEFAULT_REBOOT_AFTER)
     show_experimental = dbmodels.BooleanField(default=False)
 
     name_field = 'login'
@@ -400,7 +398,6 @@
     TestTime = enum.Enum('SHORT', 'MEDIUM', 'LONG', start_value=1)
     # TODO(showard) - this should be merged with Job.ControlType (but right
     # now they use opposite values)
-    Types = enum.Enum('Client', 'Server', start_value=1)
 
     name = dbmodels.CharField(max_length=255, unique=True)
     author = dbmodels.CharField(max_length=255)
@@ -412,7 +409,8 @@
     run_verify = dbmodels.BooleanField(default=True)
     test_time = dbmodels.SmallIntegerField(choices=TestTime.choices(),
                                            default=TestTime.MEDIUM)
-    test_type = dbmodels.SmallIntegerField(choices=Types.choices())
+    test_type = dbmodels.SmallIntegerField(
+        choices=model_attributes.TestTypes.choices())
     sync_count = dbmodels.IntegerField(default=1)
     path = dbmodels.CharField(max_length=255, unique=True)
 
@@ -675,12 +673,12 @@
     dependency_labels = (
             dbmodels.ManyToManyField(Label, blank=True,
                                      db_table='afe_jobs_dependency_labels'))
-    reboot_before = dbmodels.SmallIntegerField(choices=RebootBefore.choices(),
-                                               blank=True,
-                                               default=DEFAULT_REBOOT_BEFORE)
-    reboot_after = dbmodels.SmallIntegerField(choices=RebootAfter.choices(),
-                                              blank=True,
-                                              default=DEFAULT_REBOOT_AFTER)
+    reboot_before = dbmodels.SmallIntegerField(
+        choices=model_attributes.RebootBefore.choices(), blank=True,
+        default=DEFAULT_REBOOT_BEFORE)
+    reboot_after = dbmodels.SmallIntegerField(
+        choices=model_attributes.RebootAfter.choices(), blank=True,
+        default=DEFAULT_REBOOT_AFTER)
     parse_failed_repair = dbmodels.BooleanField(
         default=DEFAULT_PARSE_FAILED_REPAIR)
     max_runtime_hrs = dbmodels.IntegerField(default=DEFAULT_MAX_RUNTIME_HRS)
--- autotest/frontend/afe/resources.py  2010-03-01 15:59:30.000000000 -0800
+++ autotest/frontend/afe/resources.py  2010-03-01 15:59:30.000000000 -0800
@@ -1,6 +1,7 @@
 from django import http
 from autotest_lib.frontend.shared import query_lib, resource_lib
 from autotest_lib.frontend.afe import control_file, models, rpc_utils
+from autotest_lib.frontend.afe import model_attributes
 from autotest_lib.frontend import thread_local
 from autotest_lib.client.common_lib import host_protections
 
@@ -370,7 +371,8 @@
         rep.update({'author': self.instance.author,
                     'class': self.instance.test_class,
                     'control_file_type':
-                    models.Test.Types.get_string(self.instance.test_type),
+                    model_attributes.TestTypes.get_string(
+                        self.instance.test_type),
                     'control_file_path': self.instance.path,
                     'dependencies':
                     TestDependencyCollection(fixed_entry=self).link(),
@@ -383,7 +385,8 @@
         cls._check_for_required_fields(input_dict,
                                        ('name', 'control_file_type',
                                         'control_file_path'))
-        test_type = models.Test.Type.get_value(input['control_file_type'])
+        test_type = model_attributes.TestTypes.get_value(
+            input['control_file_type'])
         return models.Test.add_object(name=input_dict['name'],
                                       test_type=test_type,
                                       path=input_dict['control_file_path'])
@@ -426,9 +429,11 @@
             'timeout_hrs': _job_fields['timeout'].default,
             'maximum_runtime_hrs': _job_fields['max_runtime_hrs'].default,
             'cleanup_before_job':
-                models.RebootBefore.get_string(models.DEFAULT_REBOOT_BEFORE),
+                model_attributes.RebootBefore.get_string(
+                    models.DEFAULT_REBOOT_BEFORE),
             'cleanup_after_job':
-                models.RebootAfter.get_string(models.DEFAULT_REBOOT_AFTER),
+                model_attributes.RebootAfter.get_string(
+                    models.DEFAULT_REBOOT_AFTER),
             }
 
 
@@ -464,9 +469,9 @@
                 'timeout_hrs': job.timeout,
                 'maximum_runtime_hrs': job.max_runtime_hrs,
                 'cleanup_before_job':
-                    models.RebootBefore.get_string(job.reboot_before),
+                    
model_attributes.RebootBefore.get_string(job.reboot_before),
                 'cleanup_after_job':
-                    models.RebootAfter.get_string(job.reboot_after),
+                    model_attributes.RebootAfter.get_string(job.reboot_after),
                 }
 
 
--- autotest/frontend/afe/resources_test.py     2010-03-01 15:59:30.000000000 
-0800
+++ autotest/frontend/afe/resources_test.py     2010-03-01 15:59:30.000000000 
-0800
@@ -7,6 +7,7 @@
 from autotest_lib.frontend import setup_test_environment
 from django.test import client
 from autotest_lib.frontend.afe import control_file, frontend_test_utils, models
+from autotest_lib.frontend.afe import model_attributes
 
 class ResourceTestCase(unittest.TestCase,
                        frontend_test_utils.FrontendTestMixin):
@@ -35,7 +36,7 @@
 
     def _add_additional_data(self):
         models.Test.objects.create(name='mytest',
-                                   test_type=models.Test.Types.SERVER,
+                                   test_type=model_attributes.TestTypes.SERVER,
                                    path='/path/to/mytest')
 
 
--- autotest/frontend/afe/rpc_interface.py      2010-03-01 15:59:30.000000000 
-0800
+++ autotest/frontend/afe/rpc_interface.py      2010-03-01 15:59:30.000000000 
-0800
@@ -31,7 +31,7 @@
 
 import datetime
 import common
-from autotest_lib.frontend.afe import models, model_logic
+from autotest_lib.frontend.afe import models, model_logic, model_attributes
 from autotest_lib.frontend.afe import control_file, rpc_utils
 from autotest_lib.client.common_lib import global_config
 
@@ -820,8 +820,8 @@
     result['job_max_runtime_hrs_default'] = models.Job.DEFAULT_MAX_RUNTIME_HRS
     result['parse_failed_repair_default'] = bool(
         models.Job.DEFAULT_PARSE_FAILED_REPAIR)
-    result['reboot_before_options'] = models.RebootBefore.names
-    result['reboot_after_options'] = models.RebootAfter.names
+    result['reboot_before_options'] = model_attributes.RebootBefore.names
+    result['reboot_after_options'] = model_attributes.RebootAfter.names
     result['motd'] = rpc_utils.get_motd()
 
     result['status_dictionary'] = {"Aborted": "Aborted",
--- autotest/frontend/afe/rpc_utils.py  2010-02-25 17:15:57.000000000 -0800
+++ autotest/frontend/afe/rpc_utils.py  2010-03-01 15:59:30.000000000 -0800
@@ -7,7 +7,7 @@
 
 import datetime, os, sys
 import django.http
-from autotest_lib.frontend.afe import models, model_logic
+from autotest_lib.frontend.afe import models, model_logic, model_attributes
 
 NULL_DATETIME = datetime.datetime.max
 NULL_DATE = datetime.date.max
@@ -201,7 +201,7 @@
              'tests together (tests %s and %s differ' % (
             test1.name, test2.name)})
 
-    is_server = (test_type == models.Test.Types.SERVER)
+    is_server = (test_type == model_attributes.TestTypes.SERVER)
     if test_objects:
         synch_count = max(test.sync_count for test in test_objects)
     else:
--- autotest/scheduler/monitor_db.py    2010-02-25 18:18:09.000000000 -0800
+++ autotest/scheduler/monitor_db.py    2010-03-01 15:59:30.000000000 -0800
@@ -21,6 +21,7 @@
 from autotest_lib.client.common_lib import host_protections, utils
 from autotest_lib.database import database_connection
 from autotest_lib.frontend.afe import models, rpc_utils, readonly_connection
+from autotest_lib.frontend.afe import model_attributes
 from autotest_lib.scheduler import drone_manager, drones, email_manager
 from autotest_lib.scheduler import monitor_db_cleanup
 from autotest_lib.scheduler import status_server, scheduler_config
@@ -2354,8 +2355,8 @@
         do_reboot = (
                 # always reboot after aborted jobs
                 self._final_status() == models.HostQueueEntry.Status.ABORTED
-                or reboot_after == models.RebootAfter.ALWAYS
-                or (reboot_after == models.RebootAfter.IF_ALL_TESTS_PASSED
+                or reboot_after == model_attributes.RebootAfter.ALWAYS
+                or (reboot_after == 
model_attributes.RebootAfter.IF_ALL_TESTS_PASSED
                     and final_success and num_tests_failed == 0))
 
         for queue_entry in self.queue_entries:
--- autotest/scheduler/monitor_db_functional_test.py    2010-03-01 
15:59:30.000000000 -0800
+++ autotest/scheduler/monitor_db_functional_test.py    2010-03-01 
15:59:30.000000000 -0800
@@ -6,6 +6,7 @@
 from autotest_lib.database import database_connection
 from autotest_lib.frontend import setup_django_environment
 from autotest_lib.frontend.afe import frontend_test_utils, models
+from autotest_lib.frontend.afe import model_attributes
 from autotest_lib.scheduler import drone_manager, email_manager, monitor_db
 from autotest_lib.scheduler import scheduler_models
 
@@ -415,7 +416,7 @@
     def _setup_for_pre_job_cleanup(self):
         self._initialize_test()
         job, queue_entry = self._make_job_and_queue_entry()
-        job.reboot_before = models.RebootBefore.ALWAYS
+        job.reboot_before = model_attributes.RebootBefore.ALWAYS
         job.save()
         return queue_entry
 
@@ -480,7 +481,7 @@
     def _setup_for_post_job_cleanup(self):
         self._initialize_test()
         job, queue_entry = self._make_job_and_queue_entry()
-        job.reboot_after = models.RebootAfter.ALWAYS
+        job.reboot_after = model_attributes.RebootAfter.ALWAYS
         job.save()
         return queue_entry
 
@@ -592,7 +593,7 @@
 
     def test_do_not_verify_job_with_cleanup(self):
         queue_entry = self._setup_for_do_not_verify()
-        queue_entry.job.reboot_before = models.RebootBefore.ALWAYS
+        queue_entry.job.reboot_before = model_attributes.RebootBefore.ALWAYS
         queue_entry.job.save()
 
         self._run_dispatcher() # cleanup
@@ -603,7 +604,7 @@
 
     def test_do_not_verify_pre_job_cleanup_failure(self):
         queue_entry = self._setup_for_do_not_verify()
-        queue_entry.job.reboot_before = models.RebootBefore.ALWAYS
+        queue_entry.job.reboot_before = model_attributes.RebootBefore.ALWAYS
         queue_entry.job.save()
 
         self._run_dispatcher() # cleanup
@@ -761,7 +762,7 @@
         self._initialize_test()
         job, queue_entry = self._make_job_and_queue_entry()
         job.run_verify = False
-        job.reboot_after = models.RebootAfter.NEVER
+        job.reboot_after = model_attributes.RebootAfter.NEVER
         job.save()
 
         self._run_dispatcher() # launches job
@@ -948,7 +949,7 @@
         job = self._create_job(hosts=[1,2], synchronous=True)
         queue_entry = job.hostqueueentry_set.all()[0]
         job.run_verify = False
-        job.reboot_after = models.RebootAfter.NEVER
+        job.reboot_after = model_attributes.RebootAfter.NEVER
         job.save()
 
         self.mock_drone_manager.process_capacity = 0
@@ -1030,7 +1031,7 @@
     def test_pre_job_keyvals(self):
         job = self._create_job(hosts=[1])
         job.run_verify = False
-        job.reboot_before = models.RebootBefore.NEVER
+        job.reboot_before = model_attributes.RebootBefore.NEVER
         job.save()
         models.JobKeyval.objects.create(job=job, key='mykey', value='myvalue')
 
--- autotest/scheduler/scheduler_models.py      2010-03-01 15:59:30.000000000 
-0800
+++ autotest/scheduler/scheduler_models.py      2010-03-01 15:59:30.000000000 
-0800
@@ -19,7 +19,7 @@
 import datetime, itertools, logging, os, re, sys, time, weakref
 from django.db import connection
 from autotest_lib.client.common_lib import global_config, host_protections
-from autotest_lib.frontend.afe import models
+from autotest_lib.frontend.afe import models, model_attributes
 from autotest_lib.database import database_connection
 from autotest_lib.scheduler import drone_manager, email_manager
 from autotest_lib.scheduler import scheduler_config
@@ -995,9 +995,9 @@
 
 
     def _should_run_cleanup(self, queue_entry):
-        if self.reboot_before == models.RebootBefore.ALWAYS:
+        if self.reboot_before == model_attributes.RebootBefore.ALWAYS:
             return True
-        elif self.reboot_before == models.RebootBefore.IF_DIRTY:
+        elif self.reboot_before == model_attributes.RebootBefore.IF_DIRTY:
             return queue_entry.host.dirty
         return False
 
--- autotest/scheduler/scheduler_models_unittest.py     2010-03-01 
15:59:30.000000000 -0800
+++ autotest/scheduler/scheduler_models_unittest.py     2010-03-01 
15:59:30.000000000 -0800
@@ -7,7 +7,7 @@
 from autotest_lib.client.common_lib.test_utils import mock
 from autotest_lib.client.common_lib.test_utils import unittest
 from autotest_lib.database import database_connection
-from autotest_lib.frontend.afe import models
+from autotest_lib.frontend.afe import models, model_attributes
 from autotest_lib.scheduler import monitor_db_functional_test
 from autotest_lib.scheduler import scheduler_models
 
@@ -363,7 +363,7 @@
 
     def test_reboot_before_always(self):
         job = self._create_job(hosts=[1])
-        job.reboot_before = models.RebootBefore.ALWAYS
+        job.reboot_before = model_attributes.RebootBefore.ALWAYS
         job.save()
 
         task = self._test_pre_job_tasks_helper()
@@ -373,7 +373,7 @@
 
     def _test_reboot_before_if_dirty_helper(self, expect_reboot):
         job = self._create_job(hosts=[1])
-        job.reboot_before = models.RebootBefore.IF_DIRTY
+        job.reboot_before = model_attributes.RebootBefore.IF_DIRTY
         job.save()
 
         task = self._test_pre_job_tasks_helper()
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to