| 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() |