Hi,

So one gap in the current implementation of the install server
functionality I noticed is that the end-user still has to fiddle with
the backend cobbler server when they want to install a different than
the currently selected profile. It seems like the end user should be
able to select the profile to use on a host-by-host basis.

Some implementation notes:

- The link between autotest and cobbler is established by the label of
  the autotest host being found in the comment field for the profile in
  cobbler.
- Many spots still need to be parameterized on the presence of the
  xmlrpc URL in the global config
- In my environment, I always want to reinstall the machine before
  running any tests, so I've modified the default client and server
  control files to run machine_install. Perhaps this makes sense to add
  via a global config option -- always_reinstall_host or something. If
  that is added, then I think the verify-before-job job should be
  avoided if that option is set. Such an option also only makes sense if
  xmlrpc_url is set.

diff --git a/frontend/afe/control_file.py b/frontend/afe/control_file.py
index d9df3e6..7f33717 100644
--- a/frontend/afe/control_file.py
+++ b/frontend/afe/control_file.py
@@ -85,6 +85,7 @@ def step_init():
     # a host object we use solely for the purpose of finding out the booted
     # kernel version, we use machines[0] since we already check that the same
     # kernel has been booted on all machines
+    step0()
     if len(kernel_list) > 1:
         kernel_host = hosts.create_host(machines[0])
 
@@ -107,6 +108,12 @@ def step_init():
             job.automatic_test_tag = kernel_host.get_kernel_ver()
         step_test()
 
+def step0():
+    def run(machine):
+        host = hosts.create_host(machine, initialize=False)
+        job.run_test('reinstall', host=host, disable_sysinfo=True)
+
+    job.parallel_simple(run, machines)
 
 def step_test():
 """ % CLIENT_KERNEL_TEMPLATE
diff --git a/server/control_segments/client_wrapper 
b/server/control_segments/client_wrapper
index 08e6018..c4c71cb 100644
--- a/server/control_segments/client_wrapper
+++ b/server/control_segments/client_wrapper
@@ -3,6 +3,7 @@ at = autotest_remote.Autotest()
 
 def run_client(machine):
     host = hosts.create_host(machine)
+    host.machine_install(timeout=3600)
     host.log_kernel()
     at.run(control, host=host)

I'm not sure if the division of the patches is accurate yet, but what I
have does compile and runs.

1/9: database: add profile column to afe_host_queue_entries table
2/9: frontend: add XMLRPC lookup of profile information from install server to 
get_hosts
3/9: frontend: add profiles parameter to job creation interfaces
4/9: hosts: add installable_host class
5/9: autoserv: append profile selection to hostname parameter
6/9: frontend/afe: add current profile to host view
7/9: frontend/afe: add profile used to job view
8/9: frontend/afe: add listbox widget support
9/9: frontend/afe: add profile to host tables

Thanks,
Nish

-- 
Nishanth Aravamudan <[email protected]>
IBM Linux Technology Center

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

Reply via email to