From 06b74c082a2d031b31929403081c3bde242d98d8 Mon Sep 17 00:00:00 2001 From: yanzhicong Date: Tue, 18 Mar 2025 17:37:13 +0800 Subject: [PATCH] adapt to openEuler --- cobbler/actions/check.py | 2 +- cobbler/actions/reposync.py | 2 +- cobbler/autoinstallgen.py | 2 +- cobbler/tftpgen.py | 9 +++++---- cobbler/utils.py | 3 +++ config/cobbler/distro_signatures.json | 28 +++++++++++++++++++++++++++ distro_build_configs.sh | 5 ++++- templates/etc/dhcp.template | 2 +- 8 files changed, 44 insertions(+), 9 deletions(-) diff --git a/cobbler/actions/check.py b/cobbler/actions/check.py index b79706a..e35b53b 100644 --- a/cobbler/actions/check.py +++ b/cobbler/actions/check.py @@ -147,7 +147,7 @@ class CobblerCheck: if return_code != 0: status.append("service %s is not running%s" % (which, notes)) return - elif self.checked_family in ("redhat", "suse"): + elif self.checked_family in ("redhat", "suse", "generic_lower_os"): if os.path.exists("/etc/rc.d/init.d/%s" % which): return_code = utils.subprocess_call("/sbin/service %s status > /dev/null 2>/dev/null" % which, shell=True) diff --git a/cobbler/actions/reposync.py b/cobbler/actions/reposync.py index c016335..f4f3d49 100644 --- a/cobbler/actions/reposync.py +++ b/cobbler/actions/reposync.py @@ -255,7 +255,7 @@ class RepoSync: mdoptions.append("-g %s" % os.path.join(origin_path, groupmdfile)) if "prestodelta" in rd: # need createrepo >= 0.9.7 to add deltas - if utils.get_family() in ("redhat", "suse"): + if utils.get_family() in ("redhat", "suse", "generic_lower_os"): cmd = "/usr/bin/rpmquery --queryformat=%{VERSION} createrepo" createrepo_ver = utils.subprocess_get(cmd) if not createrepo_ver[0:1].isdigit(): diff --git a/cobbler/autoinstallgen.py b/cobbler/autoinstallgen.py index 28187c5..d60be02 100644 --- a/cobbler/autoinstallgen.py +++ b/cobbler/autoinstallgen.py @@ -304,7 +304,7 @@ class AutoInstallationGen: meta.update(autoinstall_meta) # add package repositories metadata to autoinstall metavariables - if distro.breed == "redhat": + if distro.breed == "redhat" or distro.breed == "generic_lower_os": meta["yum_repo_stanza"] = self.generate_repo_stanza(obj, (system is None)) meta["yum_config_stanza"] = self.generate_config_stanza(obj, (system is None)) # FIXME: implement something similar to zypper (SUSE based distros) and apt (Debian based distros) diff --git a/cobbler/tftpgen.py b/cobbler/tftpgen.py index d0b0dfc..6911d46 100644 --- a/cobbler/tftpgen.py +++ b/cobbler/tftpgen.py @@ -905,7 +905,7 @@ class TFTPGen: autoinstall_path = "http://%s/cblr/svc/op/autoinstall/profile/%s" \ % (httpserveraddress, profile.name) - if distro.breed is None or distro.breed == "redhat": + if distro.breed is None or distro.breed == "redhat" or distro.breed == "generic_lower_os": if distro.os_version in ["rhel4", "rhel5", "rhel6", "fedora16"]: append_line += f" kssendmac ks={autoinstall_path}" @@ -914,9 +914,10 @@ class TFTPGen: else: append_line += f" inst.ks.sendmac inst.ks={autoinstall_path}" if blended["autoinstall_meta"].get("tree"): - append_line += ( - f" inst.repo={blended['autoinstall_meta']['tree']}" - ) + #append_line += ( + # f" inst.repo={blended['autoinstall_meta']['tree']}" + #) + append_line = append_line.replace("repo","inst.repo") ipxe = blended["enable_ipxe"] if ipxe: append_line = append_line.replace('ksdevice=bootif', 'ksdevice=${net0/mac}') diff --git a/cobbler/utils.py b/cobbler/utils.py index 8586844..1a6ecbb 100644 --- a/cobbler/utils.py +++ b/cobbler/utils.py @@ -1097,6 +1097,9 @@ def os_release(): make = "unknown" return make, float(distro_version) + elif family == "generic_lower_os": + return "generic_lower_os", float(distro_version) + def is_safe_to_hardlink(src: str, dst: str, api) -> bool: """ diff --git a/config/cobbler/distro_signatures.json b/config/cobbler/distro_signatures.json index 2c1ca82..90fd075 100644 --- a/config/cobbler/distro_signatures.json +++ b/config/cobbler/distro_signatures.json @@ -1,5 +1,33 @@ { "breeds": { + "generic_lower_os": { + "generic_lower_os": { + "signatures": [ + "Packages" + ], + "version_file": "generic_os-release-(.*).rpm", + "version_file_regex": null, + "kernel_arch": "kernel-(.*).rpm", + "kernel_arch_regex": null, + "supported_arches": [ + "aarch64", + "x86_64" + ], + "supported_repo_breeds": [ + "rsync", + "rhn", + "yum" + ], + "kernel_file": "vmlinuz(.*)", + "initrd_file": "initrd(.*)\\.img", + "isolinux_ok": true, + "default_autoinstall": "sample.ks", + "kernel_options": "repo=$tree", + "kernel_options_post": "", + "boot_files": [], + "boot_loaders": {} + } + }, "redhat": { "rhel4": { "signatures": [ diff --git a/distro_build_configs.sh b/distro_build_configs.sh index 954e0f9..1de6ee0 100644 --- a/distro_build_configs.sh +++ b/distro_build_configs.sh @@ -38,6 +38,9 @@ if [ "$DISTRO" = "" ] && [ -r /etc/os-release ];then ubuntu*|debian*) DISTRO="UBUNTU" ;; + generic_os*) + DISTRO=`echo 'generic_os'|tr 'a-z' 'A-Z'` + ;; esac fi @@ -59,7 +62,7 @@ elif [ "$DISTRO" = "UBUNTU" ];then export MEMDISK_FOLDER="/usr/lib/syslinux/" export SYSLINUX_DIR="/usr/lib/syslinux/modules/bios/" export GRUB_MOD_FOLDER="/usr/lib/grub" -elif [ "$DISTRO" = "FEDORA" ];then +elif [ "$DISTRO" = "FEDORA" ] || [ "$DISTRO" = `echo 'generic_os'|tr 'a-z' 'A-Z'` ];then export APACHE_USER="apache" export HTTP_USER=$APACHE_USER # overrule setup.py export APACHE_GROUP="apache" diff --git a/templates/etc/dhcp.template b/templates/etc/dhcp.template index 9089439..698c826 100644 --- a/templates/etc/dhcp.template +++ b/templates/etc/dhcp.template @@ -31,7 +31,7 @@ subnet 192.168.1.0 netmask 255.255.255.0 { # Legacy if option system-arch = 00:00 { - filename "grub/grub.0"; + filename "pxelinux.0"; } # UEFI-32-1 if option system-arch = 00:06 { -- 2.33.0