Add a new Archiving stage to the scheduler, which runs after Parsing.  This stage is responsible for copying results to the results server in a drone setup, a task currently performed directly by the scheduler, and allows for site-specific archiving functionality, replacing the site_parse functionality.  It does this by running autoserv with a special control file (scheduler/archive_results.control.srv), which loads and runs code from the new scheduler.archive_results module.  The implementation was mostly straightfoward, as the archiving stage is fully analogous to the parser stage.  I did make a couple of refactorings:
* factored out the parser throttling code into a common superclass that the ArchiveResultsTask could share
* added some generic flags to Autoserv to duplicate special-case functionality we'd added for the --collect-crashinfo option -- namely, specifying a different pidfile name and specifying that autoserv should allow (and even expect) an existing results directory.  in the future, i think it'd be more elegant to make crashinfo collection run using a special control file (as archiving works), rather than a hard-coded command-line option.
* moved call to server_job.init_parser() out of the constructor, since this was an easy source of exceptions that wouldn't get logged.

Note I believe some of the functional test changes slipped into my previous change there, which is why that looks smaller than you'd expect.

Signed-off-by: Steve Howard <showard@google.com>

==== (deleted) //depot/google_vendor_src_branch/autotest/tko/site_parse.py ====


git-svn-id: http://test.kernel.org/svn/autotest/trunk@4070 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/scheduler/drone_utility.py b/scheduler/drone_utility.py
index 82f8b79..0ada995 100755
--- a/scheduler/drone_utility.py
+++ b/scheduler/drone_utility.py
@@ -322,7 +322,7 @@
                                (hostname, source_path, destination_path))
 
 
-    def _sync_send_file_to(self, hostname, source_path, destination_path,
+    def sync_send_file_to(self, hostname, source_path, destination_path,
                            can_fail):
         host = create_host(hostname)
         try:
@@ -350,7 +350,7 @@
 
     def send_file_to(self, hostname, source_path, destination_path,
                      can_fail=False):
-        self.run_async_command(self._sync_send_file_to,
+        self.run_async_command(self.sync_send_file_to,
                                (hostname, source_path, destination_path,
                                 can_fail))