import logging, time
def internal_yum_update(session, command, prompt, timeout):
"""
Helper function to perform the yum update test.
@param session: shell session stablished to the host
@param command: Command to be sent to the shell session
@param prompt: Machine prompt
@param timeout: How long to wait until we get an appropriate output from
the shell session.
"""
session.sendline(command)
end_time = time.time() + timeout
while time.time() < end_time:
match = session.read_until_last_line_matches(
["[Ii]s this [Oo][Kk]", prompt],
timeout=timeout)[0]
if match == 0:
logging.info("Got 'Is this ok'; sending 'y'")
session.sendline("y")
elif match == 1:
logging.info("Got shell prompt")
return True
else:
logging.info("Timeout or process exited")
return False
def run_yum_update(test, params, env):
"""
Runs yum update and yum update kernel on the remote host (yum enabled
hosts only).
@param test: kvm test object.
@param params: Dictionary with test parameters.
@param env: Dictionary with the test environment.
"""
vm = env.get_vm(params["main_vm"])
vm.verify_alive()
timeout = int(params.get("login_timeout", 360))
session = vm.wait_for_login(timeout=timeout)
internal_yum_update(session, "yum update", params.get("shell_prompt"), 600)
internal_yum_update(session, "yum update kernel",
params.get("shell_prompt"), 600)
session.close()