Compare commits

..

No commits in common. 'i10cs' and 'c9' have entirely different histories.
i10cs ... c9

@ -1,125 +0,0 @@
From c624c9dfe03c0e066eea1240b4b9ca8f3ed07eb8 Mon Sep 17 00:00:00 2001
From: John Chung <john.chung@arm.com>
Date: Fri, 26 May 2023 22:03:50 +0800
Subject: [PATCH] Redfish-finder cannot work in DHCP mode
dmidecode output didn't provide Redfish Service Address in dhcp mode.
It will fail to match domain name to ip address. Move to fetch DHCP
server ip address from nmcli output.
dmidecode output :
Handle 0x0021, DMI type 42, 129 bytes
Management Controller Host Interface
Host Interface Type: Network
Device Type: USB
idVendor: 0x0b05
idProduct: 0x1976
Protocol ID: 04 (Redfish over IP)
Service UUID: 24913078-eeb7-5842-b08b-732425cc09ea
Host IP Assignment Type: DHCP
Host IP Address Format: IPv4
Redfish Service IP Discovery Type: DHCP
Redfish Service IP Address Format: IPv4
Redfish Service Hostname: bmc.host.interface
Signed-off-by: John Chung <john.chung@arm.com>
---
redfish-finder | 43 +++++++++++++++++++++++++++++++++++--------
1 file changed, 35 insertions(+), 8 deletions(-)
diff --git a/redfish-finder b/redfish-finder
index 461eff9..b869a9b 100755
--- a/redfish-finder
+++ b/redfish-finder
@@ -203,6 +203,7 @@ class ServiceConfig():
def __init__(self, cursor):
self.address = []
self.mask = []
+ self.dhcp_format = []
try:
cursor = cursor_consume_next(cursor, "Redfish Service IP Discovery Type: ")
if cursor == None:
@@ -220,16 +221,21 @@ class ServiceConfig():
self.address.append(ipaddress.IPv6Address(unicode(cursor.split()[0], "utf-8")))
cursor = cursor_consume_next(cursor, "IPv6 Mask: ")
self.mask.append(ipaddress.IPv4Address(unicode(cursor.split()[0], "utf-8")))
+ cursor = cursor_consume_next(cursor, "Redfish Service Port: ")
+ self.port = int(cursor.split()[0])
+ cursor = cursor_consume_next(cursor, "Redfish Service Vlan: ")
+ self.vlan = int(cursor.split()[0])
elif cursor.split()[0] == "DHCP":
self.assigntype = AssignType.DHCP
+ cursor = cursor_consume_next(cursor, "Redfish Service IP Address Format: ")
+ if cursor.split()[0] == "IPv4":
+ self.dhcp_format.append("DHCP4")
+ elif cursor.split()[0] == "IPv6":
+ self.dhcp_format.append("DHCP6")
else:
# Support the other types later
print("redfish-finder: Unable to parse SMBIOS Service Config info")
return None
- cursor = cursor_consume_next(cursor, "Redfish Service Port: ")
- self.port = int(cursor.split()[0])
- cursor = cursor_consume_next(cursor, "Redfish Service Vlan: ")
- self.vlan = int(cursor.split()[0])
cursor = cursor_consume_next(cursor, "Redfish Service Hostname: ")
#
@@ -338,7 +344,7 @@ class OSServiceData():
# Method to read in /etc/hosts, remove old redfish entries
# and insert new ones based on ServiceConfig
#
- def update_redfish_info(self):
+ def update_redfish_info(self, conn):
# strip any redfish localhost entry from host_entries
# as well as any entries for the smbios exported host name
for h in self.host_entries:
@@ -351,8 +357,14 @@ class OSServiceData():
# Now add the new entries in
addresses=""
- for i in self.sconf.address:
- addresses = addresses + str(i) + " "
+ if self.sconf.assigntype == AssignType.DHCP:
+ for i in self.sconf.dhcp_format:
+ dhcp_ip = conn.get_dhcp_server_identifier(i)
+ addresses = addresses + str(dhcp_ip) + " "
+ else:
+ 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)
@@ -436,6 +448,21 @@ class nmConnection():
def get_property(self, prop):
return self.properties[prop]
+ #
+ # Get DHCP server identifier
+ #
+ def get_dhcp_server_identifier(self, dhcp_format):
+ propstr = subprocess.check_output(["nmcli", "-f", dhcp_format, "con", "show", self.ifc.getifcname()])
+ lines = propstr.splitlines()
+ for data in lines:
+ elements = data.decode("utf-8").split()
+ if len(elements) < 2:
+ continue
+ for key in elements:
+ if key == "dhcp_server_identifier":
+ return elements[3]
+ return None
+
#
# Using this object, run nmcli to update the os so that the
# interface represented here is in sync with our desired
@@ -523,7 +550,7 @@ def main():
if conn.sync_to_os() == False:
sys.exit(1)
print("redfish-finder: Adding redfish host info to OS config")
- svc.update_redfish_info()
+ svc.update_redfish_info(conn)
if svc.output_redfish_config() == False:
sys.exit(1)
print("redfish-finder: Done, BMC is now reachable via hostname redfish-localhost")

@ -1,91 +0,0 @@
From f6248933605e051992e5a0c29b2c9753e0dc4e76 Mon Sep 17 00:00:00 2001
From: John Chung <john.chung@arm.com>
Date: Sun, 28 May 2023 16:32:05 +0800
Subject: [PATCH] Support to configure AutoConf mode
Get IP address by DHCP server. If fails, fallback to use IP address
from smbios type 42. And redfish service ip address is based on type
42 records.
dmidecode output :
Handle 0x0075, DMI type 42, 130 bytes
Management Controller Host Interface
Host Interface Type: Network
Device Type: USB
idVendor: 0x0b05
idProduct: 0x1976
Protocol ID: 04 (Redfish over IP)
Service UUID: c95cab2a-6de0-45f4-8b3b-726c3794b26b
Host IP Assignment Type: AutoConf
Host IP Address Format: IPv4
IPv4 Address: 169.254.11.12
IPv4 Mask: 255.255.0.0
Redfish Service IP Discovery Type: AutoConf
Redfish Service IP Address Format: IPv4
IPv4 Redfish Service Address: 169.254.201.45
IPv4 Redfish Service Mask: 255.255.0.0
Redfish Service Port: 443
Redfish Service Vlan: 0
Redfish Service Hostname: bmc.host.interface
Signed-off-by: John Chung <john.chung@arm.com>
---
redfish-finder | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/redfish-finder b/redfish-finder
index b869a9b..31045dd 100755
--- a/redfish-finder
+++ b/redfish-finder
@@ -124,8 +124,12 @@ class HostConfig():
if cursor == None:
raise RuntimeError("redfish-finder: Unable to parse SMBIOS Host IP Assignment Type")
self.assigntype = []
- if cursor.split()[0] == "Static":
- self.assigntype.append(AssignType.STATIC)
+ if cursor.split()[0] == "Static" or cursor.split()[0] == "AutoConf":
+ assigntype = AssignType.STATIC
+ if cursor.split()[0] == "AutoConf":
+ assigntype = AssignType.AUTOCONF
+ self.assigntype.append(assigntype)
+
cursor = cursor_consume_next(cursor, "Host IP Address Format: ")
if cursor.split()[0] == "IPv4":
cursor = cursor_consume_next(cursor, "IPv4 Address: ")
@@ -166,11 +170,11 @@ class HostConfig():
# attributes of the network manager connection object
#
def generate_nm_config(self, device, nmcon):
- assignmap = { AssignType.STATIC: "manual", AssignType.DHCP: "auto"}
+ assignmap = { AssignType.STATIC: "manual", AssignType.DHCP: "auto", AssignType.AUTOCONF: "auto"}
methodp = "ipv4.method"
for i in range(len(self.assigntype)):
assigntype = self.assigntype[i]
- if assigntype == AssignType.STATIC:
+ if assigntype == AssignType.STATIC or assigntype == AssignType.AUTOCONF:
if self.address[i].version == 4:
methodp = "ipv4.method"
addrp = "ipv4.addresses"
@@ -179,7 +183,7 @@ class HostConfig():
addrp = "ipv6.addresses"
try:
nmcon.update_property(methodp, assignmap[assigntype])
- if assigntype == AssignType.STATIC:
+ if assigntype == AssignType.STATIC or assigntype == AssignType.AUTOCONF:
nmcon.update_property(addrp, str(self.address[i]) + "/" + str(self.network[i].prefixlen))
except:
print("redfish-finder: Error generating nm_config")
@@ -208,8 +212,11 @@ class ServiceConfig():
cursor = cursor_consume_next(cursor, "Redfish Service IP Discovery Type: ")
if cursor == None:
raise RuntimeError("redfish-finder: Unable to find Redfish Service Info")
- if cursor.split()[0] == "Static":
+ if cursor.split()[0] == "Static" or cursor.split()[0] == "AutoConf":
self.assigntype = AssignType.STATIC
+ if cursor.split()[0] == "AutoConf":
+ self.assigntype = AssignType.AUTOCONF
+
cursor = cursor_consume_next(cursor, "Redfish Service IP Address Format: ")
if cursor.split()[0] == "IPv4":
cursor = cursor_consume_next(cursor, "IPv4 Redfish Service Address: ")

@ -1,42 +1,20 @@
## START: Set by rpmautospec
## (rpmautospec version 0.6.5)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = 7;
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec
Name: redfish-finder
Version: 0.4
Release: %autorelease -b 9
Release: 9%{?dist}
Summary: Utility for parsing SMBIOS information and configuring canonical BMC access
ExclusiveArch: x86_64 aarch64
%define debug_package %{nil}
BuildArch: noarch
License: GPL-2.0-or-later
License: GPLv2
URL: https://github.com/nhorman/redfish-finder
Source: %url/archive/V%{version}/%{name}-%{version}.tar.gz
Source0: %url/archive/V%{version}/%{name}-%{version}.tar.gz
# Fix shabang python interpreter: https://github.com/nhorman/redfish-finder/commit/59fc5f964bf6971da552d059520d7798fccbd4fc
Patch0: redfish-finder-python3.patch
# Fix parsing HostConfig for DHCP: https://github.com/nhorman/redfish-finder/commit/581327fd45351dd53c06a26517bb7f92e19d8f31
Patch1: hostconfig-dhcp-parse.patch
# Fix DHCP mode: https://github.com/nhorman/redfish-finder/commit/c624c9dfe03c0e066eea1240b4b9ca8f3ed07eb8
Patch2: fix-dhcp-mode.patch
# Support AutoConfig mode: https://github.com/nhorman/redfish-finder/commit/f6248933605e051992e5a0c29b2c9753e0dc4e76
Patch3: support-autoconf-mode.patch
%{?systemd_requires}
BuildRequires: systemd
BuildRequires: systemd-rpm-macros
Requires: python3
Requires: NetworkManager
Requires: dmidecode
Requires: python3 NetworkManager dmidecode
%description
Scans Smbios information for type 42 management controller information, and uses
@ -46,6 +24,7 @@ canonically accessible via the host name redfish-localhost
%prep
%autosetup
%build
#noop here
@ -71,30 +50,58 @@ install -D -p -m 0644 ./redfish-finder.service %{buildroot}/%{_unitdir}/redfish-
%{_mandir}/man1/redfish-finder.1.*
%{_unitdir}/redfish-finder.service
%changelog
## START: Generated by rpmautospec
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 0.4-15
- Bump release for October 2024 mass rebuild:
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 0.4-9
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Apr 19 2021 Joel Savitz <jsavitz@redhat.com> - 0.4-8
- Fix missing bz number in spec file (bz1951095)
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.4-7
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Fri Mar 26 2021 Joel Savitz <jsavitz@redhat.com> - 0.4-6
- Fix parsing HostConfig for DHCP (bz1944243)
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Tue Nov 12 2019 Neil Horman <nhorman@redhat.com> - 0.4-2
-Fixup interpreter (bz 1770861)
* Thu Oct 17 2019 Neil Horman <nhorman@redhat.com> - 0.4-1
- Update to latest upstream (bz1730589)
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Oct 25 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 0.4-14
- Rebuilt for MSVSphere 10
* Wed Mar 06 2019 Neil Horman <nhorman@redhat.com> - 0.3-1
- Update to latest upstream release
* Thu Aug 15 2024 Joel Savitz <jsavitz@redhat.com> - 0.4-14
- set baserelease to fix NVR comparison
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Wed Jul 31 2024 Joel Savitz <joelsavitz@gmail.com> - 0.4-5
- fix build by disabling irrelevant debug package
* Fri Oct 19 2018 Neil Horman <nhorman@redhat.com> - 0.2-1
- Update to new upstream release
* Tue Jul 30 2024 Joel Savitz <joelsavitz@gmail.com> - 0.4-4
- restrict package arches appropriately
* Thu Oct 04 2018 Neil Horman <nhorman@tuxdriver.com> - 0.1-3
- Fixed missing BuildRequires/Requires
- Fixed missing dist tag
- Fixed Source url
* Wed Jul 24 2024 Joel Savitz <jsavitz@redhat.com> - 0.4-3
- fix gating.yaml by generalizing rhel product version string
* Wed Oct 03 2018 Neil Horman <nhorman@tuxdriver.com> - 0.1-2
- Updated requires for python3
- Removed unneeded BuildRequires
- Globed the inclusion of man page
- Fixed license file tagging
* Tue Jul 23 2024 Joel Savitz <jsavitz@redhat.com> - 0.4-2
- add gating.yaml copied from c9s branch
* Mon Oct 01 2018 Neil Horman <nhorman@tuxdriver.com> - 0.1-1
- Initial import
* Tue Jul 23 2024 Joel Savitz <jsavitz@redhat.com> - 0.4-1
- import latest fedora sources
## END: Generated by rpmautospec

Loading…
Cancel
Save