Fix py3 issues

- Update popen to use universal_newlines=True to enable newlines
  for calls that we parse or consume output for. Without universal_newlines=True,
  the output is treated as bytes under python3
  which leads to issues later where we are using it as
  strings.
- The division operator in Python 3 results in a float, not an integer
  like in Python 2. Use the truncation division operator instead.
- Use python builtins since the behavior of round has changed between
  python2 and python3.
  (https://docs.python.org/3/whatsnew/3.0.html#builtins)

Story: 2006796
Task: 42695

Signed-off-by: Charles Short <charles.short@windriver.com>
Change-Id: I9c9a4fdfd8a65cf6a3034a2c80c3a620ab138d22
This commit is contained in:
Charles Short 2021-06-25 11:46:31 -04:00
parent f412074f59
commit 9ced50cf38

View File

@ -29,6 +29,7 @@ import textwrap
import keyring import keyring
import subprocess import subprocess
import math import math
from builtins import round
from prettytable import PrettyTable from prettytable import PrettyTable
from cgtsclient.common import utils from cgtsclient.common import utils
from cgtsclient import client as cgts_client from cgtsclient import client as cgts_client
@ -145,7 +146,7 @@ def get_system_creds():
proc = subprocess.Popen(['bash', '-c', proc = subprocess.Popen(['bash', '-c',
'source /etc/platform/openrc && env'], 'source /etc/platform/openrc && env'],
stdout=subprocess.PIPE) stdout=subprocess.PIPE, universal_newlines=True)
for line in proc.stdout: for line in proc.stdout:
key, _, value = line.partition("=") key, _, value = line.partition("=")
@ -180,7 +181,7 @@ def convert_to_readable_size(size, orig_unit='B'):
if unitIndex > 5: if unitIndex > 5:
unitIndex = 5 unitIndex = 5
sizer = math.pow(1024, unitIndex) sizer = math.pow(1024, unitIndex)
newsize = round(size / sizer, 2) newsize = round(size // sizer, 2)
return "%s %s" % (newsize, units[unitIndex]) return "%s %s" % (newsize, units[unitIndex])