From 66b42a9f48cdff91e7d33ac825e6531cfca3680e Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Wed, 24 Mar 2021 19:04:40 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/redfish-finder.git#d9d1d7fcc0526f4733acc13be875d942e3620988 --- .gitignore | 2 + README.md | 3 + gating.yaml | 6 - hostconfig-dhcp-parse.patch | 28 --- hostname-null-check.patch | 70 -------- redfish-finder-multi-block.patch | 283 ------------------------------- redfish-finder-python3.patch | 20 +++ redfish-finder.spec | 35 ++-- sources | 2 +- 9 files changed, 47 insertions(+), 402 deletions(-) create mode 100644 README.md delete mode 100644 gating.yaml delete mode 100644 hostconfig-dhcp-parse.patch delete mode 100644 hostname-null-check.patch delete mode 100644 redfish-finder-multi-block.patch create mode 100644 redfish-finder-python3.patch diff --git a/.gitignore b/.gitignore index 0c37c3b..4886041 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ +/redfish-finder-0.1.tar.gz /redfish-finder-0.2.tar.gz /redfish-finder-0.3.tar.gz +/redfish-finder-0.4.tar.gz diff --git a/README.md b/README.md new file mode 100644 index 0000000..89b40f4 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# redfish-finder + +The redfish-finder package \ No newline at end of file diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index 8b152f6..0000000 --- a/gating.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- !Policy -product_versions: - - rhel-8 -decision_context: osci_compose_gate -rules: - - !PassingTestCaseRule {test_case_name: kernel-qe.kernel-ci.hardware-redfish-finder.tier0.functional} diff --git a/hostconfig-dhcp-parse.patch b/hostconfig-dhcp-parse.patch deleted file mode 100644 index 8d9a412..0000000 --- a/hostconfig-dhcp-parse.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 581327fd45351dd53c06a26517bb7f92e19d8f31 -Author: Charles Rose -Date: Mon Aug 31 17:40:08 2020 -0500 - - fix parsing HostConfig for DHCP - - assigntype.append(AssignType.DHCP) fails for DHCP because - assigntype [] is not set. - - Signed-off-by: Charles Rose - -diff --git a/redfish-finder b/redfish-finder -old mode 100644 -new mode 100755 -index 9a185b3..461eff9 ---- a/redfish-finder -+++ b/redfish-finder -@@ -124,8 +124,8 @@ class HostConfig(): - if cursor == None: - printf("redfish-finder: Unable to parse SMBIOS Host IP Assignment Type") - return None -+ self.assigntype = [] - if cursor.split()[0] == "Static": -- self.assigntype = [] - self.assigntype.append(AssignType.STATIC) - cursor = cursor_consume_next(cursor, "Host IP Address Format: ") - if cursor.split()[0] == "IPv4": - diff --git a/hostname-null-check.patch b/hostname-null-check.patch deleted file mode 100644 index 9320f38..0000000 --- a/hostname-null-check.patch +++ /dev/null @@ -1,70 +0,0 @@ -commit 74c305647c892b9035332aaf179d11544104caba -Author: Adrian Huang -Date: Thu Jul 11 15:50:40 2019 +0800 - - Fix the exception if hostname is empty - - Redfish Host Interface Specification [1] defines the field "Redfish - Service Hostname" as "Varies", which means it can be empty. Moreover, - this field is not mandatory for well-defined configuration (a valid - string). - - The original design assumes that this field is the non-empty string - shown as follows: - - ------------------------------------------------------------------- - self.hostname = cursor.split()[0] - ------------------------------------------------------------------- - - This leads to the exception, and the "self.hostname" is not configured. - Here is the error output: - - ------------------------------------------------------------------- - redfish-finder: Getting dmidecode info - redfish-finder: Unexpected error parsing ServiceConfig - redfish-finder: Building NetworkManager connection info - redfish-finder: Obtaining OS config info - redfish-finder: Converting SMBIOS Host Config to NetworkManager Connection info - redfish-finder: Applying NetworkManager connection configuration changes - Error: 'enp6s0f3u2u3c2' is not an active connection. - Error: no active connection provided. - Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5) - redfish-finder: Adding redfish host info to OS config - Traceback (most recent call last): - File "./redfish-finder", line 526, in - main() - File "./redfish-finder", line 520, in main - svc.update_redfish_info() - File "./redfish-finder", line 349, in update_redfish_info - if h.find(self.sconf.hostname) != -1: - AttributeError: ServiceConfig instance has no attribute 'hostname' - ------------------------------------------------------------------- - - This patch fixes the above-mentioned issue accordingly. - - [1] https://www.dmtf.org/sites/default/files/standards/documents/DSP0270_1.1.0.pdf - - Signed-off-by: Adrian Huang - -diff --git a/redfish-finder b/redfish-finder -index 429cc42..c2cba75 100755 ---- a/redfish-finder -+++ b/redfish-finder -@@ -235,7 +235,16 @@ class ServiceConfig(): - cursor = cursor_consume_next(cursor, "Redfish Service Vlan: ") - self.vlan = int(cursor.split()[0]) - cursor = cursor_consume_next(cursor, "Redfish Service Hostname: ") -- self.hostname = cursor.split()[0] -+ -+ # -+ # Sanity check: If it contains the consecutive spaces -+ # only, reference to the index '0' will throw an -+ # exception. -+ # -+ if len(cursor.split()) != 0: -+ self.hostname = cursor.split()[0] -+ else: -+ self.hostname = "" - except: - print("redfish-finder: Unexpected error parsing ServiceConfig") - diff --git a/redfish-finder-multi-block.patch b/redfish-finder-multi-block.patch deleted file mode 100644 index 41ab1a2..0000000 --- a/redfish-finder-multi-block.patch +++ /dev/null @@ -1,283 +0,0 @@ -commit 44853a940a2b3c52395e26a3632e10cc6b5f2e5d -Author: Neil Horman -Date: Thu Jun 27 11:26:48 2019 -0400 - - Add support for multiple type 42 blocks in SMBIOS - - DMTF recently updated their host API specification to allow for multiple - type 42 blocks (in support of ipv4/ipv6 in the constrained space of a - single block). Enhance redfish-finder to parse and merge those blocks - - Signed-off-by: Neil Horman - -diff --git a/redfish-finder b/redfish-finder -index 45c4ea8..429cc42 100755 ---- a/redfish-finder -+++ b/redfish-finder -@@ -1,4 +1,4 @@ --#!/usr/bin/python3 -+#!/usr/libexec/platform-python - - import sys - import os -@@ -49,6 +49,9 @@ class NetDevice(object): - def getifcname(self): - return self.name - -+ def merge(self, newdev): -+ return self -+ - def __str__(self): - return "Interface: " + self.name - -@@ -112,9 +115,9 @@ class USBNetDevice(NetDevice): - ###################################################### - class HostConfig(): - def __init__(self, cursor): -- self.address = None -- self.mask = None -- self.network = None -+ self.address = [] -+ self.mask = [] -+ self.network = [] - - try: - cursor = cursor_consume_next(cursor, "Host IP Assignment Type: ") -@@ -122,26 +125,30 @@ class HostConfig(): - printf("redfish-finder: Unable to parse SMBIOS Host IP Assignment Type") - return None - if cursor.split()[0] == "Static": -- self.assigntype = AssignType.STATIC -+ self.assigntype = [] -+ self.assigntype.append(AssignType.STATIC) - cursor = cursor_consume_next(cursor, "Host IP Address Format: ") - if cursor.split()[0] == "IPv4": - cursor = cursor_consume_next(cursor, "IPv4 Address: ") - addr = cursor.split()[0] -- self.address = ipaddress.IPv4Address(addr) -+ self.address.append(ipaddress.IPv4Address(addr)) - cursor = cursor_consume_next(cursor, "IPv4 Mask: ") - mask = cursor.split()[0] -- self.mask = ipaddress.IPv4Address(mask) -- self.network = ipaddress.IPv4Network(addr + "/" + mask, strict=False) -+ self.mask.append(ipaddress.IPv4Address(mask)) -+ self.network.append(ipaddress.IPv4Network(addr + "/" + mask, strict=False)) - elif cursor.split()[0] == "IPv6": - cursor = cursor_consume_next(cursor, "IPv6 Address: ") - addr = cursor.split()[0] -- self.address = ipaddress.IPv6Address(addr) -+ self.address.append(ipaddress.IPv6Address(addr)) - cursor = cursor_consume_next(cursor, "IPv6 Mask: ") - mask = cursor.split()[0] -- self.mask = ipaddress.IPv4Address(mask) -- self.network = ipaddress.IPv6Network(addr + "/" + mask, strict=False) -+ self.mask.append(ipaddress.IPv4Address(mask)) -+ self.network.append(ipaddress.IPv6Network(addr + "/" + mask, strict=False)) - elif cursor.split()[0] == "DHCP": -- self.assigntype = AssignType.DHCP -+ self.assigntype.append(AssignType.DHCP) -+ self.address.append(0) -+ self.mask.append(0) -+ self.network.append(0) - else: - # Support the other types later - print("redfish-finder: Unable to parse SMBIOS Host configuaration") -@@ -150,6 +157,13 @@ class HostConfig(): - print("redfish-finder: Unexpected error while parsing HostConfig!") - return None - -+ def merge(self, newconfig): -+ self.assigntype.extend(newconfig.assigntype) -+ self.address.extend(newconfig.address) -+ self.mask.extend(newconfig.mask) -+ self.network.extend(newconfig.network) -+ return self -+ - # - # Using the smbios host config info, set the appropriate - # attributes of the network manager connection object -@@ -157,20 +171,22 @@ class HostConfig(): - def generate_nm_config(self, device, nmcon): - assignmap = { AssignType.STATIC: "manual", AssignType.DHCP: "auto"} - methodp = "ipv4.method" -- if self.assigntype == AssignType.STATIC: -- if self.address.version == 4: -- methodp = "ipv4.method" -- addrp = "ipv4.addresses" -- else: -- methodp = "ipv6.method" -- addrp = "ipv6.addresses" -- try: -- nmcon.update_property(methodp, assignmap[self.assigntype]) -- if self.assigntype == AssignType.STATIC: -- nmcon.update_property(addrp, str(self.address) + "/" + str(self.network.prefixlen)) -- except: -- print("redfish-finder: Error generating nm_config") -- return False -+ for i in range(len(self.assigntype)): -+ assigntype = self.assigntype[i] -+ if assigntype == AssignType.STATIC: -+ if self.address[i].version == 4: -+ methodp = "ipv4.method" -+ addrp = "ipv4.addresses" -+ else: -+ methodp = "ipv6.method" -+ addrp = "ipv6.addresses" -+ try: -+ nmcon.update_property(methodp, assignmap[assigntype]) -+ if assigntype == AssignType.STATIC: -+ nmcon.update_property(addrp, str(self.address[i]) + "/" + str(self.network[i].prefixlen)) -+ except: -+ print("redfish-finder: Error generating nm_config") -+ return False - - return True - -@@ -188,8 +204,8 @@ class HostConfig(): - ###################################################### - class ServiceConfig(): - def __init__(self, cursor): -- self.address = None -- self.mask = None -+ self.address = [] -+ self.mask = [] - try: - cursor = cursor_consume_next(cursor, "Redfish Service IP Discovery Type: ") - if cursor == None: -@@ -200,14 +216,14 @@ class ServiceConfig(): - cursor = cursor_consume_next(cursor, "Redfish Service IP Address Format: ") - if cursor.split()[0] == "IPv4": - cursor = cursor_consume_next(cursor, "IPv4 Redfish Service Address: ") -- self.address = ipaddress.IPv4Address(cursor.split()[0]) -+ self.address.append(ipaddress.IPv4Address(cursor.split()[0])) - cursor = cursor_consume_next(cursor, "IPv4 Redfish Service Mask: ") -- self.mask = ipaddress.IPv4Address(cursor.split()[0]) -+ self.mask.append(ipaddress.IPv4Address(cursor.split()[0])) - elif cursor.split()[0] == "IPv6": - cursor = cursor_consume_next(cursor, "IPv6 Redfish Service Address: ") -- self.address = ipaddress.IPv6Address(unicode(cursor.split()[0], "utf-8")) -+ self.address.append(ipaddress.IPv6Address(unicode(cursor.split()[0], "utf-8"))) - cursor = cursor_consume_next(cursor, "IPv6 Mask: ") -- self.mask = ipaddress.IPv4Address(unicode(cursor.split()[0], "utf-8")) -+ self.mask.append(ipaddress.IPv4Address(unicode(cursor.split()[0], "utf-8"))) - elif cursor.split()[0] == "DHCP": - self.assigntype = AssignType.DHCP - else: -@@ -223,6 +239,11 @@ class ServiceConfig(): - except: - print("redfish-finder: Unexpected error parsing ServiceConfig") - -+ def merge(self, newconfig): -+ self.address.extend(newconfig.address) -+ self.mask.extend(newconfig.mask) -+ return self -+ - def __str__(self): - val = "Service Config(" + AssignType.typestring[self.assigntype] + ")" - if (self.assigntype == AssignType.STATIC): -@@ -236,42 +257,63 @@ class ServiceConfig(): - ###################################################### - class dmiobject(): - def __init__(self, dmioutput): -+ self.device = None -+ self.hostconfig = None -+ self.serviceconfig = None - cursor = dmioutput - # Find the type 42 header, if not found, nothing to do here -- cursor = cursor_consume_next(cursor, "Management Controller Host Interface\n") -- if (cursor == None): -- return None -- cursor = cursor_consume_next(cursor, "Host Interface Type: Network\n") -- if (cursor == None): -- return None -+ cursor = cursor_consume_next(cursor, "Management Controller Host Interface\n") -+ while (cursor != None): -+ if (cursor == None): -+ return None -+ cursor = cursor_consume_next(cursor, "Host Interface Type: Network\n") -+ if (cursor == None): -+ return None - -- # If we get here then we know this is a network interface device -- cursor = cursor_consume_next(cursor, "Device Type: ") -- # The next token should either be: -- # USB -- # PCI/PCIe -- # OEM -- # Unknown -- dtype = cursor.split()[0] -- if (dtype == "USB"): -- self.device = USBNetDevice(cursor) -- -- if self.device == None: -- return None -+ # If we get here then we know this is a network interface device -+ cursor = cursor_consume_next(cursor, "Device Type: ") -+ # The next token should either be: -+ # USB -+ # PCI/PCIe -+ # OEM -+ # Unknown -+ dtype = cursor.split()[0] -+ if (dtype == "USB"): -+ newdev = USBNetDevice(cursor) -+ -+ if newdev == None: -+ return None - -- # Now find the Redfish over IP section -- cursor = cursor_consume_next(cursor, "Protocol ID: 04 (Redfish over IP)\n") -- if (cursor == None): -- print("redfish-finder: Unable to find Redfish Protocol") -- return None -+ if self.device == None: -+ self.device = newdev -+ else: -+ self.device.merge(newdev) - -- self.hostconfig = HostConfig(cursor) -- if self.hostconfig == None: -- return None -+ # Now find the Redfish over IP section -+ cursor = cursor_consume_next(cursor, "Protocol ID: 04 (Redfish over IP)\n") -+ if (cursor == None): -+ print("redfish-finder: Unable to find Redfish Protocol") -+ return None - -- self.serviceconfig = ServiceConfig(cursor) -- if self.serviceconfig == None: -- return None -+ newhostconfig = HostConfig(cursor) -+ if newhostconfig == None: -+ return None -+ -+ if self.hostconfig == None: -+ self.hostconfig = newhostconfig -+ else: -+ self.hostconfig.merge(newhostconfig) -+ -+ serviceconfig = ServiceConfig(cursor) -+ if serviceconfig == None: -+ return None -+ -+ if self.serviceconfig == None: -+ self.serviceconfig = serviceconfig -+ elif self.serviceconfig == None: -+ self.serviceconfig.merge(serviceconfig) -+ -+ cursor = cursor_consume_next(cursor, "Management Controller Host Interface\n") - - - def __str__(self): -@@ -309,7 +351,10 @@ class OSServiceData(): - continue - - # Now add the new entries in -- newentry = str(self.sconf.address) + " " + self.constant_name -+ addresses="" -+ for i in self.sconf.address: -+ addresses = addresses + str(i) + " " -+ newentry = addresses + " " + self.constant_name - newentry = newentry + " " + self.sconf.hostname - self.host_entries.append(newentry) - diff --git a/redfish-finder-python3.patch b/redfish-finder-python3.patch new file mode 100644 index 0000000..85ee85c --- /dev/null +++ b/redfish-finder-python3.patch @@ -0,0 +1,20 @@ +commit 59fc5f964bf6971da552d059520d7798fccbd4fc +Author: Neil Horman +Date: Tue Nov 12 08:53:50 2019 -0500 + + fixup interpreter to be python3 + + This should never have been there, platform-python is an old distro-ism. + + Signed-off-by: Neil Horman + +diff --git a/redfish-finder b/redfish-finder +index 6637d92..9a185b3 100644 +--- a/redfish-finder ++++ b/redfish-finder +@@ -1,4 +1,4 @@ +-#!/usr/libexec/platform-python ++#!/usr/bin/python3 + + import sys + import os diff --git a/redfish-finder.spec b/redfish-finder.spec index 83f3b40..7cf0738 100644 --- a/redfish-finder.spec +++ b/redfish-finder.spec @@ -1,5 +1,5 @@ Name: redfish-finder -Version: 0.3 +Version: 0.4 Release: 5%{?dist} Summary: Utility for parsing SMBIOS information and configuring canonical BMC access BuildArch: noarch @@ -8,9 +8,7 @@ License: GPLv2 URL: https://github.com/nhorman/redfish-finder Source0: %url/archive/V%{version}/%{name}-%{version}.tar.gz -Patch0: redfish-finder-multi-block.patch -Patch1: hostname-null-check.patch -Patch2: hostconfig-dhcp-parse.patch +Patch0: redfish-finder-python3.patch %{?systemd_requires} BuildRequires: systemd @@ -52,20 +50,29 @@ install -D -p -m 0644 ./redfish-finder.service %{buildroot}/%{_unitdir}/redfish- %{_unitdir}/redfish-finder.service %changelog -* Fri Feb 12 2021 Joel Savitz - 0.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild -* Thu Oct 17 2019 Neil Horman - 0.3-4 -- Fix null hostname check (bz1729343) +* Wed Jul 29 2020 Fedora Release Engineering - 0.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild -* Mon Jul 01 2019 Neil Horman - 0.3-3 -- Enhance to support multiple type 42 blocks (bz1715914) +* Thu Jan 30 2020 Fedora Release Engineering - 0.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild -* Fri Apr 26 2019 Neil Horman - 0.3-2 -- Bump release number to test CI gating +* Tue Nov 12 2019 Neil Horman - 0.4-2 +-Fixup interpreter (bz 1770861) -* Mon Apr 01 2019 Neil Horman - 0.3-1 -- Update to latest upstream release (bz1687111) +* Thu Oct 17 2019 Neil Horman - 0.4-1 +- Update to latest upstream (bz1730589) + +* Fri Jul 26 2019 Fedora Release Engineering - 0.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Mar 06 2019 Neil Horman - 0.3-1 +- Update to latest upstream release + +* Sat Feb 02 2019 Fedora Release Engineering - 0.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild * Fri Oct 19 2018 Neil Horman - 0.2-1 - Update to new upstream release diff --git a/sources b/sources index f64110c..35c2ade 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -f27cfb52c83090a82c7999c2ffd90794 redfish-finder-0.3.tar.gz +SHA512 (redfish-finder-0.4.tar.gz) = 5a38e2f2888cd9cdedd877a09ffd954dd7631f546c4e58fbcb523835b4c0905dd6d4288e6fca2e545740467e177b38895646f746a49f070b9f450a5390a0429d