When we are running repair on a system, we aren't passed a profile like we are with autoserv jobs normally in the machine name. So self.profile for the Host object comes back as ''. With the code as-is, that will result in install_machine() returning immediately back to the repair code and verify complaining with:
07/08 06:45:32 INFO |base_class:0407| Trying to reinstall the machine 07/08 06:45:32 WARNI|base_class:0360| Already done this (<bound method [machine name redacted].machine_install of <remote host: [machine name redacted], profile: >>) repair procedure, re-raising the original exception. I think a simpler choice is that if we still don't have a profile after self.profile is assigned, let's assume that the install system can figure it out? And if it is unable to (usually do to a misconfiguration of Cobbler backend), thrown an exception. Signed-off-by: Nishanth Aravamudan <n...@us.ibm.com> diff --git a/client/shared/error.py b/client/shared/error.py index aac3c5a..cf7793a 100644 --- a/client/shared/error.py +++ b/client/shared/error.py @@ -348,6 +348,13 @@ class HostInstallTimeoutError(JobError): pass +class HostInstallProfileError(JobError): + """ + Indicates the machine failed to have a profile assigned. + """ + pass + + class AutotestHostRunError(HostRunErrorMixIn, AutotestError): pass diff --git a/server/hosts/install_server.py b/server/hosts/install_server.py index bfa8503..7ede52c 100644 --- a/server/hosts/install_server.py +++ b/server/hosts/install_server.py @@ -110,8 +110,11 @@ class CobblerInterface(object): timeout = 3600 system, system_handle = self.get_system_handle(host) - if profile: + if not profile: profile = self.server.get_system(system).get('profile') + if not profile: + e_msg = 'Unable to determine profile for host %s' % host.hostname + raise error.HostInstallProfileError(e_msg) host.record("START", None, "install", host.hostname) host.record("GOOD", None, "install.start", host.hostname) diff --git a/server/hosts/remote.py b/server/hosts/remote.py index 6b14bd2..29d6033 100644 --- a/server/hosts/remote.py +++ b/server/hosts/remote.py @@ -87,7 +87,7 @@ class RemoteHost(base_classes.Host): if install_server_is_configured(): if not profile: profile = self.profile - if not profile or profile == 'Do_not_install': + if profile == 'Do_not_install': return num_attempts = int(server_info.get('num_attempts', 2)) ServerInterface = self.INSTALL_SERVER_MAPPING[server_info['type']] -- Nishanth Aravamudan <n...@us.ibm.com> IBM Linux Technology Center _______________________________________________ Autotest mailing list Autotest@test.kernel.org http://test.kernel.org/cgi-bin/mailman/listinfo/autotest