forked from bn222/cluster-deployment-automation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkernel.py
48 lines (40 loc) · 1.94 KB
/
kernel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import host
from logger import logger
import time
KERNEL_RPMS = [
"https://download-01.beak-001.prod.iad2.dc.redhat.com/brewroot/vol/rhel-9/packages/kernel/5.14.0/427.2.1.el9_4/x86_64/kernel-5.14.0-427.2.1.el9_4.x86_64.rpm",
"https://download-01.beak-001.prod.iad2.dc.redhat.com/brewroot/vol/rhel-9/packages/kernel/5.14.0/427.2.1.el9_4/x86_64/kernel-core-5.14.0-427.2.1.el9_4.x86_64.rpm",
"https://download-01.beak-001.prod.iad2.dc.redhat.com/brewroot/vol/rhel-9/packages/kernel/5.14.0/427.2.1.el9_4/x86_64/kernel-modules-5.14.0-427.2.1.el9_4.x86_64.rpm",
"https://download-01.beak-001.prod.iad2.dc.redhat.com/brewroot/vol/rhel-9/packages/kernel/5.14.0/427.2.1.el9_4/x86_64/kernel-modules-core-5.14.0-427.2.1.el9_4.x86_64.rpm",
"https://download-01.beak-001.prod.iad2.dc.redhat.com/brewroot/vol/rhel-9/packages/kernel/5.14.0/427.2.1.el9_4/x86_64/kernel-modules-extra-5.14.0-427.2.1.el9_4.x86_64.rpm",
]
def ensure_rhel_9_4_kernel_is_installed(h: host.Host) -> None:
h.ssh_connect("core")
ret = h.run("uname -r")
if "el9_4" in ret.out:
return
logger.info(f"Installing RHEL 9.4 kernel on {h.hostname()}")
wd = "working_dir"
h.run(f"rm -rf {wd}")
h.run(f"mkdir -p {wd}")
logger.info(KERNEL_RPMS)
for e in KERNEL_RPMS:
fn = e.split("/")[-1]
cmd = f"curl -k {e} --create-dirs > {wd}/{fn}"
h.run(cmd)
cmd = f"sudo rpm-ostree override replace {wd}/*.rpm"
logger.info(cmd)
while True:
ret = h.run(cmd)
output = ret.out.strip().split("\n")
if output and output[-1] == 'Run "systemctl reboot" to start a reboot':
break
else:
logger.info(output)
logger.info("Output was something unexpected")
h.run("sudo systemctl reboot")
time.sleep(10)
h.ssh_connect("core")
ret = h.run("uname -r")
if "el9_4" not in ret.out:
logger.error_and_exit(f"Failed to install rhel 9.4 kernel on host {h.hostname()}")