From 92dea32dd44eb4882000552c39dc71f2ff9b5863 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 2 Feb 2022 08:37:22 -0500 Subject: [PATCH 1/4] Change to python 2/3 agnostic syntax --- confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient b/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient index 11d3758e..34a2f1ad 100644 --- a/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient +++ b/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient @@ -138,7 +138,7 @@ def get_net_apikey(nodename, mgr): newpass = newpass.encode('utf8') salt = salt.encode('utf8') crypted = c_crypt(newpass, salt) - for addrinfo in socket.getaddrinfo(mgr, 13001, type=socket.SOCK_STREAM): + for addrinfo in socket.getaddrinfo(mgr, 13001, 0, socket.SOCK_STREAM): try: clisock = socket.socket(addrinfo[0], addrinfo[1]) clisock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) From bc7d480a17aaddeeb968ab721cd36b43ee5fa2f3 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 2 Feb 2022 10:53:46 -0500 Subject: [PATCH 2/4] Use more widely known paths for libcrypt --- .../common/initramfs/opt/confluent/bin/apiclient | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient b/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient index 34a2f1ad..2bc8de98 100644 --- a/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient +++ b/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient @@ -20,9 +20,9 @@ class InvalidApiKey(Exception): cryptname = ctypes.util.find_library('crypt') if not cryptname: - if os.path.exists('/usr/lib64/libcrypt.so.1'): + if os.path.exists('/lib64/libcrypt.so.1'): cryptname = 'libcrypt.so.1' - elif os.path.exists('/usr/lib64/libcrypt.so.2'): + elif os.path.exists('/lib64/libcrypt.so.2'): cryptname = 'libcrypt.so.2' c_libcrypt = ctypes.CDLL(cryptname) c_crypt = c_libcrypt.crypt From 700fe1bc3b117da3037d39a6109332d69da466b2 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Thu, 3 Feb 2022 10:09:28 -0500 Subject: [PATCH 3/4] Fix for EL7 compatibility Some python 3 exclusive assumptions were made. Unfortunately, EL7 is python2 centric. --- .../common/initramfs/opt/confluent/bin/apiclient | 10 ++++++++-- .../common/profile/scripts/confignet | 14 ++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient b/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient index 2bc8de98..720173f7 100644 --- a/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient +++ b/confluent_osdeploy/common/initramfs/opt/confluent/bin/apiclient @@ -93,14 +93,20 @@ def scan_confluents(): if addr[0] == socket.AF_INET6: if addr[-1] in doneidxs: continue - s6.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_MULTICAST_IF, addr[-1]) + try: + s6.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_MULTICAST_IF, addr[-1]) + except TypeError: + s6.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_MULTICAST_IF, addr[-1].tobytes()) try: s6.sendto(msg, ('ff02::c', 1900)) except OSError: pass doneidxs.add(addr[-1]) elif addr[0] == socket.AF_INET: - s4.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, addr[1]) + try: + s4.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, addr[1]) + except TypeError: + s4.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, addr[1].tobytes()) try: s4.sendto(msg, ('239.255.255.250', 1900)) except OSError: diff --git a/confluent_osdeploy/common/profile/scripts/confignet b/confluent_osdeploy/common/profile/scripts/confignet index b8b2d29a..e868a4c4 100644 --- a/confluent_osdeploy/common/profile/scripts/confignet +++ b/confluent_osdeploy/common/profile/scripts/confignet @@ -8,11 +8,17 @@ import sys import time import shlex import subprocess -from importlib.machinery import SourceFileLoader try: - apiclient = SourceFileLoader('apiclient', '/opt/confluent/bin/apiclient').load_module() -except FileNotFoundError: - apiclient = SourceFileLoader('apiclient', '/etc/confluent/apiclient').load_module() + from importlib.machinery import SourceFileLoader + def load_source(mod, path): + return SourceFileLoader(mod, path).load_module() +except ImportError: + from imp import load_source + +try: + apiclient = load_source('apiclient', '/opt/confluent/bin/apiclient') +except IOError: + apiclient = load_source('apiclient', '/etc/confluent/apiclient') def add_lla(iface, mac): pieces = mac.split(':') From 6769c171c1293c573f66ef6648fa79581105f85a Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Thu, 3 Feb 2022 11:50:34 -0500 Subject: [PATCH 4/4] Fix confignet for python2 --- confluent_osdeploy/common/profile/scripts/confignet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/confluent_osdeploy/common/profile/scripts/confignet b/confluent_osdeploy/common/profile/scripts/confignet index e868a4c4..3bdc7638 100644 --- a/confluent_osdeploy/common/profile/scripts/confignet +++ b/confluent_osdeploy/common/profile/scripts/confignet @@ -317,7 +317,7 @@ if __name__ == '__main__': myname = myname[0] myname = socket.inet_pton(socket.AF_INET, myname) for addr in myaddrs: - if myname == bytes(addr[1]): + if myname == addr[1].tobytes(): curridx = addr[-1] if curridx in doneidxs: continue