From 4722c3ec92307ee6d5514b8a2913a7a6cb110199 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Thu, 18 Jun 2020 09:02:09 -0400 Subject: [PATCH 1/3] Check current SMM IP before pushing config If the user requests the same ip address that is already present, leave the network configuration alone. --- confluent_server/confluent/discovery/handlers/smm.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/confluent_server/confluent/discovery/handlers/smm.py b/confluent_server/confluent/discovery/handlers/smm.py index 8f6564ac..d2922954 100644 --- a/confluent_server/confluent/discovery/handlers/smm.py +++ b/confluent_server/confluent/discovery/handlers/smm.py @@ -90,6 +90,13 @@ class NodeHandler(bmchandler.NodeHandler): smmip = smmip[-1][0] if smmip and ':' in smmip: raise exc.NotImplementedException('IPv6 not supported') + wc.request('POST', '/data', 'get=hostname') + rsp = wc.getresponse() + rspdata = fromstring(util.stringify(rsp.read())) + currip = rspdata.find('netConfig').find('ifConfigEntries').find( + 'ifConfig').find('v4IPAddr').text + if currip == smmip: + return netconfig = netutil.get_nic_config(cfg, nodename, ip=smmip) netmask = netutil.cidr_to_mask(netconfig['prefix']) setdata = 'set=ifIndex:0,v4DHCPEnabled:0,v4IPAddr:{0},v4NetMask:{1}'.format(smmip, netmask) From 5b1e144d3221c2348c90b6610b192c228972c8f1 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Tue, 14 Jul 2020 09:03:38 -0400 Subject: [PATCH 2/3] Fix python3 problem with backspace In python3, a single element reference of a bytes is an int, not equal to a b'' of the same length and value. Change to use slices to have python2 and python3 act the same. --- confluent_server/confluent/plugins/shell/ssh.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/confluent_server/confluent/plugins/shell/ssh.py b/confluent_server/confluent/plugins/shell/ssh.py index 16d22bc4..e97784eb 100644 --- a/confluent_server/confluent/plugins/shell/ssh.py +++ b/confluent_server/confluent/plugins/shell/ssh.py @@ -169,11 +169,11 @@ class SshShell(conapi.Console): self.datacallback(conapi.ConsoleEvent.Disconnect) return elif self.inputmode == -1: - while len(data) and data[0] == b'\x7f' and len(self.keyaction): + while len(data) and data[0:1] == b'\x7f' and len(self.keyaction): self.datacallback('\b \b') # erase previously echoed value self.keyaction = self.keyaction[:-1] data = data[1:] - while len(data) and data[0] == b'\x7f': + while len(data) and data[0:1] == b'\x7f': data = data[1:] while b'\x7f' in data: delidx = data.index(b'\x7f') @@ -195,11 +195,11 @@ class SshShell(conapi.Console): elif len(data) > 0: self.datacallback(data) elif self.inputmode == 0: - while len(data) and data[0] == b'\x7f' and len(self.username): + while len(data) and data[0:1] == b'\x7f' and len(self.username): self.datacallback('\b \b') # erase previously echoed value self.username = self.username[:-1] data = data[1:] - while len(data) and data[0] == b'\x7f': + while len(data) and data[0:1] == b'\x7f': data = data[1:] while b'\x7f' in data: delidx = data.index(b'\x7f') @@ -216,7 +216,7 @@ class SshShell(conapi.Console): # echo back typed data self.datacallback(data) elif self.inputmode == 1: - while len(data) > 0 and data[0] == b'\x7f': + while len(data) > 0 and data[0:1] == b'\x7f': self.password = self.password[:-1] data = data[1:] while b'\x7f' in data: @@ -237,4 +237,4 @@ class SshShell(conapi.Console): def create(nodes, element, configmanager, inputdata): if len(nodes) == 1: - return SshShell(nodes[0], configmanager) \ No newline at end of file + return SshShell(nodes[0], configmanager) From 5ccfa36da6e2a2da558f9cc28487e819c3eeede8 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Wed, 15 Jul 2020 10:33:28 -0400 Subject: [PATCH 3/3] Fix ssh disconnect handling in python 3 In python 3, '' will never match b''. Just use the value as a boolean to catch either '' or b''. --- confluent_server/confluent/plugins/shell/ssh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/confluent_server/confluent/plugins/shell/ssh.py b/confluent_server/confluent/plugins/shell/ssh.py index e97784eb..06da4ff7 100644 --- a/confluent_server/confluent/plugins/shell/ssh.py +++ b/confluent_server/confluent/plugins/shell/ssh.py @@ -99,7 +99,7 @@ class SshShell(conapi.Console): def recvdata(self): while self.connected: pendingdata = self.shell.recv(8192) - if pendingdata == '': + if not pendingdata: self.datacallback(conapi.ConsoleEvent.Disconnect) return self.datacallback(pendingdata)