49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
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()
|