Skip to content

Commit d405145

Browse files
committed
(new_feature): Enable centos10 support for gatecheck
Known issues: - Currently ceph does not provide rpm for 10 support. Expected to fail - GPFS test cases fails beacuse of https://review.gerrithub.io/c/ffilz/nfs-ganesha/+/1229368 (Not merged yet) No pass log attached beacuse of above said reasons Signed-off-by: Manimaran-MM <manim@redhat.com>
1 parent ffea810 commit d405145

File tree

5 files changed

+79
-16
lines changed

5 files changed

+79
-16
lines changed

ci_utils/gpfs/gpfs_setup.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,16 @@ def _install_on_node(node, sess):
146146
"rpcbind sssd-tools openldap-clients bind-utils net-tools "
147147
"krb5-workstation python3 --skip-broken"
148148
)
149-
run_cmd(sess, "python3 -m pip install --user ansible cherrypy")
149+
version, _ = run_cmd(self.session, "rpm -E %{rhel}")
150+
version = version.strip()
151+
logger.info("CentOS Version for VM: %s", version)
152+
if version.startswith("9"):
153+
run_cmd(sess, "python3 -m pip install --user ansible cherrypy")
154+
elif version.startswith("10"):
155+
run_cmd(sess, "python3 -m pip install --user 'ansible-core==2.18.*' cherrypy")
156+
else:
157+
run_cmd(sess, "python3 -m pip install --user 'ansible-core==2.18.*' cherrypy")
158+
150159
logger.info(f"[INFO] Base packages installed on {node}")
151160

152161
# Limit concurrency to avoid overloading network / SSH sessions
@@ -194,13 +203,13 @@ def detect_usable_ips(self):
194203
logger.info("[STEP]: Detecting usable IP addresses on the VM")
195204

196205
# 1️⃣ Base IP
197-
base_ip, _ = run_cmd(self.session, "/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1 | head -n1")
206+
iface, _ = run_cmd(self.session, "ip -o -4 addr show up | awk '!/ lo / {print $2; exit}'")
207+
base_ip, _ = run_cmd(self.session, f"/sbin/ip -o -4 addr list {iface} | awk '{{print $4}}' | cut -d/ -f1 | head -n1")
198208
base_ip = base_ip.strip()
199209
logger.info(f"Base IP detected: {base_ip}")
200210
subnet_prefix = ".".join(base_ip.split(".")[:3])
201211
servers = self.nodes.get("servers", [])
202212
required_ips = len(servers)
203-
iface, _ = run_cmd(self.session, "ip -o -4 addr show up | awk '!/ lo / {print $2; exit}'")
204213
ip_cidr, _ = run_cmd(self.session, f"ip -o -4 addr show {iface} | awk '{{print $4}}' | head -n1")
205214
logger.info(f"Network interface: {iface.strip()}, CIDR: {ip_cidr}")
206215

ci_utils/nfs_ganesha/gpfs_ganesha_setup.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,15 @@ def _build_from_source(self, test_workspace: str):
7474

7575
BASE_PACKAGES="git bison flex cmake gcc-c++ libacl-devel krb5-devel dbus-devel rpm-build redhat-rpm-config gdb"
7676
BUILDREQUIRES_EXTRA="libnsl2-devel libnfsidmap-devel libwbclient-devel userspace-rcu-devel libcephfs-devel python3-devel"
77+
ADDITIONAL_PACKAGES=""
7778

7879
if self.system_type == "centos":
7980
repo_name = "crb"
81+
version, _ = run_cmd(self.session, "rpm -E %{rhel}")
82+
version = version.strip()
83+
logger.info("CentOS Version for GPFS: %s", version)
84+
if version.startswith("10"):
85+
ADDITIONAL_PACKAGES = "python3-build python3-wheel python3-installer"
8086
elif self.system_type == "baremetal" or self.system_type == "openstack":
8187
# Detect RHEL version and arch
8288
release_out, _ = run_cmd(self.session, "cat /etc/redhat-release")
@@ -91,7 +97,7 @@ def _build_from_source(self, test_workspace: str):
9197
repo_name = f"codeready-builder-for-rhel-{rhel_major}-{arch.strip()}-rpms"
9298
run_cmd(self.session, f"subscription-manager repos --enable={repo_name}")
9399

94-
run_cmd(self.session, f"dnf install --enablerepo={repo_name} -y {BASE_PACKAGES} {BUILDREQUIRES_EXTRA} libacl-devel libblkid-devel libcap-devel redhat-rpm-config rpm-build libgfapi-devel xfsprogs-devel selinux-policy-devel sqlite --skip-broken")
100+
run_cmd(self.session, f"dnf install --enablerepo={repo_name} -y {BASE_PACKAGES} {BUILDREQUIRES_EXTRA} {ADDITIONAL_PACKAGES} libacl-devel libblkid-devel libcap-devel redhat-rpm-config rpm-build libgfapi-devel xfsprogs-devel selinux-policy-devel sqlite --skip-broken")
95101
cmake_binary, _ = run_cmd(self.session, "which cmake")
96102
build_dir = f"{test_workspace}/nfs-ganesha/build"
97103
src_dir = f"{test_workspace}/nfs-ganesha"

ci_utils/virtual_machine/vm_setup.py

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,31 @@ def create_cloud_init_iso(self, user_data: str, meta_data: str):
141141
)
142142

143143
iso_path = self.image_dir / "cloud-init.iso"
144-
run_cmd(
145-
self.session,
146-
f"genisoimage -output {iso_path} -volid cidata -joliet -rock {cloud_dir}/user-data {cloud_dir}/meta-data"
147-
)
144+
version, _ = run_cmd(self.session, "rpm -E %{rhel}")
145+
version = version.strip()
146+
logger.info("CentOS Version for VM: %s", version)
147+
if version.startswith("9"):
148+
logger.info("Generating ISO image using genisoimage for CentOS 9")
149+
run_cmd(
150+
self.session,
151+
f"genisoimage -output {iso_path} -volid cidata -joliet -rock {cloud_dir}/user-data {cloud_dir}/meta-data"
152+
)
153+
elif version.startswith("10"):
154+
logger.info("Generating ISO image using xorriso for CentOS 10")
155+
run_cmd(self.session, "dnf install -y xorriso")
156+
run_cmd(
157+
self.session,
158+
f"xorriso -as mkisofs -output {iso_path} -volid cidata -joliet -rock "
159+
f"{cloud_dir}/user-data {cloud_dir}/meta-data"
160+
)
161+
else:
162+
logger.info("Generating ISO image using xorriso for CentOS 10")
163+
run_cmd(self.session, "dnf install -y xorriso")
164+
run_cmd(
165+
self.session,
166+
f"xorriso -as mkisofs -output {iso_path} -volid cidata -joliet -rock "
167+
f"{cloud_dir}/user-data {cloud_dir}/meta-data"
168+
)
148169

149170
return iso_path
150171

tests/test_ci_pre_req.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,28 +90,33 @@ def test_install_dependencies_for_checkpatch_fsal(all_nodes):
9090
assert code == 0, f"Failed to install dependencies for checkpatch and Clang"
9191

9292
logger.info("Installing dependencies on remote node for FSAL: %s", server_node)
93-
_, code = run_cmd(session, "dnf -y install centos-release-ceph epel-release centos-release-gluster yum-utils")
93+
_, code = run_cmd(session, "dnf -y install centos-release-ceph epel-release yum-utils")
9494
assert code == 0, f"Failed to install dependencies for FSAL"
9595

9696
duffy_session = DuffySession()
9797
version = duffy_session.centos_version
9898

99-
basic_packages = "centos-release-gluster yum-utils centos-release-ceph epel-release"
99+
basic_packages = "yum-utils centos-release-ceph epel-release"
100100

101101
build_requires_common = "git bison cmake dbus-devel flex gcc-c++ krb5-devel libacl-devel libblkid-devel libcap-devel redhat-rpm-config rpm-build xfsprogs-devel"
102-
build_requires_gpfs_vfs = "libgfapi-devel"
102+
build_requires_gpfs_vfs = ""
103103

104104
build_requires_extra_common = "libnsl2-devel libnfsidmap-devel libwbclient-devel userspace-rcu-devel"
105105
build_requires_extra_cephfs_vfs_rgw = "libcephfs-devel"
106106
build_requires_extra_rgw = "librgw-devel"
107+
build_requires_extra_centos10 = "python3-build python3-wheel"
107108

108109
if version.startswith("9"):
109110
logger.info("Install packages for CentOS 9")
110111
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {basic_packages} {build_requires_common} {build_requires_gpfs_vfs} {build_requires_extra_common} {build_requires_extra_cephfs_vfs_rgw} {build_requires_extra_rgw}")
111112
assert code == 0, f"Failed to install dependencies for CentOS 9"
113+
elif version.startswith("10"):
114+
logger.info("Install packages for CentOS 10")
115+
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {basic_packages} {build_requires_common} {build_requires_gpfs_vfs} {build_requires_extra_common} {build_requires_extra_cephfs_vfs_rgw} {build_requires_extra_rgw} {build_requires_extra_centos10}")
116+
assert code == 0, f"Failed to install dependencies for CentOS 10"
112117
else:
113118
logger.info("Install packages for other CentOS")
114-
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {basic_packages} {build_requires_common} {build_requires_gpfs_vfs} {build_requires_extra_common} {build_requires_extra_cephfs_vfs_rgw} {build_requires_extra_rgw}")
119+
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {basic_packages} {build_requires_common} {build_requires_gpfs_vfs} {build_requires_extra_common} {build_requires_extra_cephfs_vfs_rgw} {build_requires_extra_rgw} {build_requires_extra_centos10}")
115120
assert code == 0, f"Failed to install dependencies for other CentOS"
116121

117122

@@ -140,11 +145,16 @@ def setup_node_pynfs_cthon(server_node):
140145

141146
build_requires_cthon = "git bison cmake dbus-devel flex gcc-c++ krb5-devel libacl-devel libblkid-devel libcap-devel redhat-rpm-config rpm-build xfsprogs-devel lvm2"
142147
build_requires_extra_cthon = "libnsl2-devel libnfsidmap-devel libwbclient-devel userspace-rcu-devel libcephfs-devel lua-devel"
148+
build_requires_extra_centos10 = "python3-build python3-wheel"
143149

144150
if version.startswith("9"):
145151
logger.info("Install packages for CentOS 9")
146152
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {build_requires_cthon} {build_requires_extra_cthon}")
147153
assert code == 0, f"Failed to install dependencies for CentOS 9"
154+
elif version.startswith("10"):
155+
logger.info("Install packages for CentOS 10")
156+
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {build_requires_cthon} {build_requires_extra_cthon} {build_requires_extra_centos10}")
157+
assert code == 0, f"Failed to install dependencies for CentOS 10"
148158
else:
149159
logger.info("Install packages for other CentOS")
150160
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {build_requires_cthon} {build_requires_extra_cthon}")
@@ -154,7 +164,8 @@ def setup_node_vfs(server_node):
154164
session = RemoteSession(node_ip=server_node, user="root")
155165

156166
logger.info("Installing dependencies on remote node for VFS %s", server_node)
157-
run_cmd(session, "dnf -y install centos-release-gluster yum-utils centos-release-ceph epel-release rpcbind")
167+
run_cmd(session, "dnf -y install yum-utils centos-release-ceph epel-release rpcbind")
168+
158169

159170
logger.info("Starting rpcbind service on remote node for VFS %s", server_node)
160171
run_cmd(session, "systemctl start rpcbind")
@@ -166,14 +177,19 @@ def setup_node_vfs(server_node):
166177
duffy_session = DuffySession()
167178
version = duffy_session.centos_version
168179

169-
build_requires_vfs = "git bison flex cmake gcc-c++ libacl-devel krb5-devel dbus-devel rpm-build redhat-rpm-config gdb libblkid-devel libcap-devel libgfapi-devel xfsprogs-devel"
180+
build_requires_vfs = "git bison flex cmake gcc-c++ libacl-devel krb5-devel dbus-devel rpm-build redhat-rpm-config gdb libblkid-devel libcap-devel xfsprogs-devel"
170181
build_requires_extra_vfs= "libnsl2-devel libnfsidmap-devel libwbclient-devel userspace-rcu-devel libcephfs-devel python3-devel"
171182
build_requires_add_on_vfs = "selinux-policy-devel sqlite"
183+
build_requires_extra_centos10 = "python3-build python3-wheel"
172184

173185
if version.startswith("9"):
174186
logger.info("Install packages for CentOS 9")
175187
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {build_requires_vfs} {build_requires_extra_vfs} {build_requires_add_on_vfs}")
176188
assert code == 0, f"Failed to install dependencies for CentOS 9"
189+
elif version.startswith("10"):
190+
logger.info("Install packages for CentOS 10")
191+
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {build_requires_vfs} {build_requires_extra_vfs} {build_requires_add_on_vfs} {build_requires_extra_centos10}")
192+
assert code == 0, f"Failed to install dependencies for CentOS 10"
177193
else:
178194
logger.info("Install packages for other CentOS")
179195
_, code = run_cmd(session, f"dnf install --enablerepo=crb -y {build_requires_vfs} {build_requires_extra_vfs} {build_requires_add_on_vfs}")

tests/test_pynfs_cthon.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,10 +364,21 @@ def test_pynfs_gpfs(create_session, cmake_flags):
364364
logger.info("[TEST WORKSPACE DETAILS]:Server Workspace: %s", server_workspace)
365365
logger.info("[TEST SESSION DETAILS]: Server Session: %s", server_session)
366366

367+
version, _ = run_cmd(server_session, "rpm -E %{rhel}")
368+
version = version.strip()
369+
logger.info("CentOS Version for GPFS: %s", version)
370+
367371
vm_name = "centos9-vm"
368372
username = "root"
369373
ssh_key = "/root/.ssh/id_rsa.pub"
370-
version_constraints = "5.14.0-611.16.1.el9_7" #Assuming GPFS 6.0 https://www.ibm.com/docs/en/STXKQY/gpfsclustersfaq.html#fsi
374+
375+
if version.startswith("9"):
376+
version_constraints = "5.14.0-611.16.1.el9_7" #Assuming GPFS 6.0 https://www.ibm.com/docs/en/STXKQY/gpfsclustersfaq.html#fsi
377+
elif version.startswith("10"):
378+
version_constraints = "6.12.0-124.11.1.el10_1" #Assuming GPFS 6.0 https://www.ibm.com/docs/en/STXKQY/gpfsclustersfaq.html#fsi
379+
else:
380+
version_constraints = "6.12.0-124.11.1.el10_1" #Assuming GPFS 6.0 https://www.ibm.com/docs/en/STXKQY/gpfsclustersfaq.html#fsi
381+
371382
gerrit_host = os.getenv("GERRIT_HOST", "review.gerrithub.io")
372383
gerrit_project = os.getenv("GERRIT_PROJECT", "ffilz/nfs-ganesha")
373384
gerrit_refspec = os.getenv("GERRIT_REFSPEC", "")
@@ -387,7 +398,7 @@ def test_pynfs_gpfs(create_session, cmake_flags):
387398
# -----------------------
388399
# VM Setup
389400
# -----------------------
390-
image_url = identify_matching_qcow_image(server_session, "x86_64", "9", "https://cloud.centos.org/centos/9-stream/x86_64/images/", version_constraints=version_constraints)
401+
image_url = identify_matching_qcow_image(server_session, "x86_64", version, f"https://cloud.centos.org/centos/{version}-stream/x86_64/images/", version_constraints=version_constraints)
391402
logger.info("Image URL: %s", image_url)
392403

393404
logger.info("Setting up VM on baremetal node: %s", server_node)

0 commit comments

Comments
 (0)