cobbler/huawei-adapt-vendor.patch
2021-06-29 01:13:48 +08:00

288 lines
12 KiB
Diff

From 39793327e0f859dc613f9ff69e3f91e6a7be086c Mon Sep 17 00:00:00 2001
From: bitcoffee <liuxin264@huawei.com>
Date: Tue, 29 Jun 2021 00:43:34 +0800
Subject: [PATCH] adapt vendor
---
cobbler/actions/buildiso.py | 22 ++++++++++-----------
cobbler/actions/check.py | 2 +-
cobbler/actions/reposync.py | 2 +-
cobbler/autoinstallgen.py | 2 +-
cobbler/tftpgen.py | 2 +-
cobbler/utils.py | 3 +++
config/cobbler/distro_signatures.json | 28 +++++++++++++++++++++++++++
distro_build_configs.sh | 5 ++++-
templates/etc/dhcp.template | 10 +++++-----
9 files changed, 55 insertions(+), 21 deletions(-)
diff --git a/cobbler/actions/buildiso.py b/cobbler/actions/buildiso.py
index 9500086..be42749 100644
--- a/cobbler/actions/buildiso.py
+++ b/cobbler/actions/buildiso.py
@@ -228,7 +228,7 @@ class BuildIso(object):
else:
append_line += " autoyast=%s" % data["autoinstall"]
- if dist.breed == "redhat":
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
if "proxy" in data and data["proxy"] != "":
append_line += " proxy=%s http_proxy=%s" % (data["proxy"], data["proxy"])
append_line += " ks=%s" % data["autoinstall"]
@@ -278,7 +278,7 @@ class BuildIso(object):
else:
append_line += " autoyast=%s" % data["autoinstall"]
- if dist.breed == "redhat":
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
if "proxy" in data and data["proxy"] != "":
append_line += " proxy=%s http_proxy=%s" % (data["proxy"], data["proxy"])
append_line += " ks=%s" % data["autoinstall"]
@@ -314,7 +314,7 @@ class BuildIso(object):
my_mask = None
my_gw = None
my_dns = None
- if dist.breed in ["suse", "redhat"]:
+ if dist.breed in ["suse", "redhat", "generic_lower_os"]:
if "netmask" in data["kernel_options"] and data["kernel_options"]["netmask"] != "":
my_mask = data["kernel_options"]["netmask"]
del data["kernel_options"]["netmask"]
@@ -322,7 +322,7 @@ class BuildIso(object):
my_gw = data["kernel_options"]["gateway"]
del data["kernel_options"]["gateway"]
- if dist.breed == "redhat":
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
if "ksdevice" in data["kernel_options"] and data["kernel_options"]["ksdevice"] != "":
my_int = data["kernel_options"]["ksdevice"]
if my_int == "bootif":
@@ -424,7 +424,7 @@ class BuildIso(object):
append_line += " netdevice=%s" % data["mac_address_" + my_int].lower()
else:
append_line += " netdevice=%s" % my_int
- if dist.breed == "redhat":
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
if intmac in data and data[intmac] != "":
append_line += " ksdevice=%s" % data["mac_address_" + my_int]
else:
@@ -435,19 +435,19 @@ class BuildIso(object):
if my_ip is not None:
if dist.breed == "suse":
append_line += " hostip=%s" % my_ip
- if dist.breed == "redhat":
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
append_line += " ip=%s" % my_ip
if dist.breed in ["ubuntu", "debian"]:
append_line += " netcfg/get_ipaddress=%s" % my_ip
if my_mask is not None:
- if dist.breed in ["suse", "redhat"]:
+ if dist.breed in ["suse", "redhat", "generic_lower_os"]:
append_line += " netmask=%s" % my_mask
if dist.breed in ["ubuntu", "debian"]:
append_line += " netcfg/get_netmask=%s" % my_mask
if my_gw is not None:
- if dist.breed in ["suse", "redhat"]:
+ if dist.breed in ["suse", "redhat", "generic_lower_os"]:
append_line += " gateway=%s" % my_gw
if dist.breed in ["ubuntu", "debian"]:
append_line += " netcfg/get_gateway=%s" % my_gw
@@ -458,7 +458,7 @@ class BuildIso(object):
append_line += " nameserver=%s" % ",".join(my_dns)
else:
append_line += " nameserver=%s" % my_dns
- if dist.breed == "redhat":
+ if dist.breed == "redhat" or dist.breed == "generic_lower_os":
if type(my_dns) == list:
append_line += " dns=%s" % ",".join(my_dns)
else:
@@ -548,7 +548,7 @@ class BuildIso(object):
cfg.write(" kernel %s\n" % os.path.basename(distro.kernel))
append_line = " append initrd=%s" % os.path.basename(distro.initrd)
- if distro.breed == "redhat":
+ if distro.breed == "redhat" or distro.breed == "generic_lower_os":
append_line += " ks=cdrom:/isolinux/%s.cfg" % descendant.name
if distro.breed == "suse":
append_line += " autoyast=file:///isolinux/%s.cfg install=cdrom:///" % descendant.name
@@ -566,7 +566,7 @@ class BuildIso(object):
elif descendant.COLLECTION_TYPE == 'system':
autoinstall_data = self.api.autoinstallgen.generate_autoinstall_for_system(descendant.name)
- if distro.breed == "redhat":
+ if distro.breed == "redhat" or distro.breed == "generic_lower_os":
cdregex = re.compile(r"^\s*url .*\n", re.IGNORECASE | re.MULTILINE)
autoinstall_data = cdregex.sub("cdrom\n", autoinstall_data, count=1)
diff --git a/cobbler/actions/check.py b/cobbler/actions/check.py
index 319c03f..9ae8831 100644
--- a/cobbler/actions/check.py
+++ b/cobbler/actions/check.py
@@ -139,7 +139,7 @@ class CobblerCheck(object):
if notes != "":
notes = " (NOTE: %s)" % notes
rc = 0
- if self.checked_family in ("redhat", "suse"):
+ if self.checked_family in ("redhat", "suse", "generic_lower_os"):
if os.path.exists("/etc/rc.d/init.d/%s" % which):
rc = utils.subprocess_call(self.logger, "/sbin/service %s status > /dev/null 2>/dev/null" % which, shell=True)
if rc != 0:
diff --git a/cobbler/actions/reposync.py b/cobbler/actions/reposync.py
index fb2ac5c..6b4ff70 100644
--- a/cobbler/actions/reposync.py
+++ b/cobbler/actions/reposync.py
@@ -275,7 +275,7 @@ class RepoSync(object):
mdoptions.append("-g %s" % 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(self.logger, cmd)
if not createrepo_ver[0:1].isdigit():
diff --git a/cobbler/autoinstallgen.py b/cobbler/autoinstallgen.py
index 2f38a40..ec1aac5 100644
--- a/cobbler/autoinstallgen.py
+++ b/cobbler/autoinstallgen.py
@@ -314,7 +314,7 @@ class AutoInstallationGen(object):
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 5c5b1ef..bf0f347 100644
--- a/cobbler/tftpgen.py
+++ b/cobbler/tftpgen.py
@@ -727,7 +727,7 @@ class TFTPGen(object):
else:
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":
append_line += " kssendmac"
append_line = "%s ks=%s" % (append_line, autoinstall_path)
diff --git a/cobbler/utils.py b/cobbler/utils.py
index 44a7016..8e46e47 100644
--- a/cobbler/utils.py
+++ b/cobbler/utils.py
@@ -1056,6 +1056,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, dst, api):
"""
diff --git a/config/cobbler/distro_signatures.json b/config/cobbler/distro_signatures.json
index b1d073c..773e9f2 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 bad43e3..ef48836 100644
--- a/distro_build_configs.sh
+++ b/distro_build_configs.sh
@@ -30,6 +30,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
@@ -42,7 +45,7 @@ elif [ "$DISTRO" = "UBUNTU" ];then
export WEBROOT="/var/www";
export WEBCONFIG="/etc/apache2/conf-available";
export DEFAULTPATH="etc/default"
-elif [ "$DISTRO" = "FEDORA" ];then
+elif [ "$DISTRO" = "FEDORA" ] || [ "$DISTRO" = `echo 'generic_os'|tr 'a-z' 'A-Z'` ];then
export APACHE_USER="apache"
export APACHE_GROUP="apache"
diff --git a/templates/etc/dhcp.template b/templates/etc/dhcp.template
index e450419..e8a2b91 100644
--- a/templates/etc/dhcp.template
+++ b/templates/etc/dhcp.template
@@ -33,7 +33,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 {
@@ -47,15 +47,15 @@ subnet 192.168.1.0 netmask 255.255.255.0 {
}
# UEFI-64-1
else if option system-arch = 00:07 {
- filename "grub/grubx64.efi";
+ filename "grubx64.efi";
}
# UEFI-64-2
else if option system-arch = 00:08 {
- filename "grub/grubx64.efi";
+ filename "grubx64.efi";
}
# UEFI-64-3
else if option system-arch = 00:09 {
- filename "grub/grubx64.efi";
+ filename "grubx64.efi";
}
# armv7 (aka arm 32 bit)
else if option system-arch = 00:0a {
@@ -63,7 +63,7 @@ subnet 192.168.1.0 netmask 255.255.255.0 {
}
# aarch64 (aka arm 64 bit)
else if option system-arch = 00:0b {
- filename "grub/grubaa64.efi";
+ filename "grubaa64.efi";
}
# RiskV 32 bit
else if option system-arch = 00:25 {
--
2.30.0