fix: handle big list of hp disk

we cant use p.wait() if too much data.
This commit is contained in:
Cyril Levis 2022-12-13 17:26:45 +01:00
parent a9af96bba2
commit cedb6818a3
No known key found for this signature in database
GPG key ID: 6DB88737C11F5A48

View file

@ -18,20 +18,20 @@ def ssacli(sub_command):
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT stderr=subprocess.STDOUT
) )
p.wait() stdout, stderr = p.communicate()
stdout = p.stdout.read().decode("utf-8") stdout = stdout.decode("utf-8")
if p.returncode != 0 and 'does not have any physical' not in stdout: if p.returncode != 0:
mesg = "Failed to execute command '{}':\n{}".format( mesg = "Failed to execute command '{}':\n{}".format(
" ".join(command), stdout " ".join(command), stdout
) )
raise HPRaidControllerError(mesg) raise HPRaidControllerError(mesg)
if 'does not have any physical' in stdout:
return list()
else: else:
if 'does not have any physical' in stdout: lines = stdout.split('\n')
return list() lines = list(filter(None, lines))
else: return lines
lines = stdout.split('\n')
lines = list(filter(None, lines))
return lines
def _test_if_valid_line(line): def _test_if_valid_line(line):
ignore_patterns = ['Note:', 'Error:', 'is not loaded', 'README', ' failure', ' cache'] ignore_patterns = ['Note:', 'Error:', 'is not loaded', 'README', ' failure', ' cache']