mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-21 11:12:04 +00:00
Modify openbmc python code to support python3
This commit is contained in:
parent
7ca49589dd
commit
cc0d1cbb38
@ -55,13 +55,13 @@ class ClientShell(object):
|
||||
|
||||
buf = json.dumps(req)
|
||||
s.send(utils.int2bytes(len(buf)))
|
||||
s.send(buf)
|
||||
s.send(buf.encode('utf-8'))
|
||||
while True:
|
||||
sz = s.recv(4)
|
||||
if len(sz) == 0:
|
||||
break
|
||||
sz = utils.bytes2int(sz)
|
||||
data = s.recv(sz)
|
||||
data = s.recv(sz).decode('utf-8')
|
||||
print(data)
|
||||
|
||||
|
||||
|
@ -11,7 +11,7 @@ import urllib3
|
||||
urllib3.disable_warnings()
|
||||
from requests.auth import AuthBase
|
||||
|
||||
import exceptions as xcat_exception
|
||||
from . import exceptions as xcat_exception
|
||||
|
||||
class RestSession(object):
|
||||
|
||||
@ -31,31 +31,32 @@ class RestSession(object):
|
||||
timeout=timeout)
|
||||
except requests.exceptions.ConnectionError as e:
|
||||
# Extract real reason for the exception and host/port from ConnectionError message
|
||||
# Sometimes e.message is a list, sometimes is a string. Look for different patterns
|
||||
# to extract the data needed.
|
||||
e = str(e)
|
||||
causing_error = "n/a"
|
||||
host_and_port = "n/a"
|
||||
if "]" in e.message[0]:
|
||||
causing_error_part1 = e.message[0].split("]")[1]
|
||||
if "]" in e:
|
||||
causing_error_part1 = e.split("]")[1]
|
||||
causing_error = causing_error_part1.split("'")[0]
|
||||
causing_error = causing_error.strip()
|
||||
host_and_port = self.extract_server_and_port(e.message[0], "STRING")
|
||||
host_and_port = self.extract_server_and_port(e, "STRING")
|
||||
|
||||
if "Connection aborted." in e.message[0]:
|
||||
if "Connection aborted." in e:
|
||||
causing_error = "Connection reset by peer"
|
||||
host_and_port = self.extract_server_and_port(url, "URL")
|
||||
|
||||
if "connect timeout=" in e.message[0]:
|
||||
if "connect timeout=" in e:
|
||||
causing_error = "timeout"
|
||||
host_and_port = self.extract_server_and_port(e.message[0], "STRING")
|
||||
host_and_port = self.extract_server_and_port(e, "STRING")
|
||||
|
||||
message = 'Failed to connect to server.'
|
||||
# message = '\n\n--> {0} \n\n'.format(e.message[0])
|
||||
raise xcat_exception.SelfServerException(message, '({0})'.format(causing_error), host_and_port)
|
||||
|
||||
except requests.exceptions.Timeout as e:
|
||||
e = str(e)
|
||||
causing_error = "timeout"
|
||||
host_and_port = self.extract_server_and_port(e.message[0], "STRING")
|
||||
host_and_port = self.extract_server_and_port(e, "STRING")
|
||||
|
||||
message = 'Timeout to connect to server'
|
||||
raise xcat_exception.SelfServerException(message, '({0})'.format(causing_error), host_and_port)
|
||||
|
@ -35,7 +35,7 @@ class BaseCommand(object):
|
||||
self._pre(op, *args, **kwargs)
|
||||
self._execute(op, *args, **kwargs)
|
||||
self._post(op, *args, **kwargs)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
# TODO: put e into log
|
||||
print(traceback.format_exc(), file=sys.stderr)
|
||||
return None
|
||||
@ -65,7 +65,7 @@ class ParallelNodesCommand(BaseCommand):
|
||||
assert self.inventory and type(self.inventory) is dict
|
||||
func = getattr(self, '%s' % op)
|
||||
if len(self.inventory) == 1:
|
||||
node = self.inventory.keys()[0]
|
||||
node = list(self.inventory.keys())[0]
|
||||
func(*args, node=node, nodeinfo=self.inventory[node], **kw)
|
||||
return
|
||||
|
||||
@ -75,7 +75,7 @@ class ParallelNodesCommand(BaseCommand):
|
||||
for node in self.inventory.keys():
|
||||
try:
|
||||
gevent_pool.add( gevent.spawn(func, *args, node=node, nodeinfo=self.inventory[node], **kw))
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
error = '%s: Internel Error occured in gevent' % node
|
||||
#print(traceback.format_exc(), file=sys.stderr)
|
||||
self.callback.error(error)
|
||||
@ -89,7 +89,7 @@ class ParallelNodesCommand(BaseCommand):
|
||||
self._pre(op, *args, **kwargs)
|
||||
self._execute_in_parallel(op, *args, **kwargs)
|
||||
self._post(op, *args, **kwargs)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
# TODO: put e into log
|
||||
print(traceback.format_exc(), file=sys.stderr)
|
||||
return None
|
||||
|
@ -63,9 +63,9 @@ def recv_all(sock, size):
|
||||
if left_size < recv_size:
|
||||
tmp_size = left_size
|
||||
buf_part = sock.recv(tmp_size)
|
||||
buf_parts.append(buf_part)
|
||||
buf_parts.append(buf_part.decode('utf-8'))
|
||||
buf_size += len(buf_part)
|
||||
buf = ''.join(buf_parts)
|
||||
buf = ''.join(str(i) for i in buf_parts)
|
||||
return buf
|
||||
|
||||
|
||||
|
@ -81,7 +81,7 @@ class OpenBMCBmcConfigTask(ParallelNodesCommand):
|
||||
self.callback.info('%s: No attributes returned from the BMC.' % node)
|
||||
return dump_info
|
||||
|
||||
keys = dump_dict.keys()
|
||||
keys = list(dump_dict.keys())
|
||||
keys.sort()
|
||||
for key in keys:
|
||||
info = '[%d] Generated: %s, Size: %s' % \
|
||||
@ -140,7 +140,7 @@ class OpenBMCBmcConfigTask(ParallelNodesCommand):
|
||||
return
|
||||
|
||||
dump_dict = obmc.list_dump_info()
|
||||
keys = dump_dict.keys()
|
||||
keys = list(dump_dict.keys())
|
||||
keys.sort()
|
||||
|
||||
for key in keys:
|
||||
@ -378,6 +378,7 @@ rmdir \"/tmp/$userid\" \n")
|
||||
self.callback.info("%s: BMC Setting Password..." % node)
|
||||
except (SelfServerException, SelfClientException) as e:
|
||||
self.callback.error(e.message, node)
|
||||
return
|
||||
|
||||
self.callback.info("%s: BMC password changed. Update 'bmcpasswd' for the node or the 'passwd' table with the new password." % node)
|
||||
|
||||
@ -422,7 +423,7 @@ rmdir \"/tmp/$userid\" \n")
|
||||
return self.callback.error(e.message, node)
|
||||
|
||||
if isinstance(value, dict):
|
||||
str_value = str(value.values()[0])
|
||||
str_value = str(list(value.values())[0])
|
||||
elif value:
|
||||
str_value = str(value)
|
||||
else:
|
||||
|
@ -39,7 +39,7 @@ class OpenBMCEventlogTask(ParallelNodesCommand):
|
||||
# Get all eventlog records
|
||||
eventlog_info_dict = obmc.get_eventlog_info()
|
||||
|
||||
keys = eventlog_info_dict.keys()
|
||||
keys = list(eventlog_info_dict.keys())
|
||||
# Sort thy keys in natural order
|
||||
keys.sort(key=lambda x : int(x[0:]))
|
||||
|
||||
@ -76,7 +76,7 @@ class OpenBMCEventlogTask(ParallelNodesCommand):
|
||||
# Get all eventlog records
|
||||
eventlog_info_dict = obmc.get_eventlog_info()
|
||||
|
||||
keys = eventlog_info_dict.keys()
|
||||
keys = list(eventlog_info_dict.keys())
|
||||
# Sort the keys in natural order
|
||||
keys.sort(key=lambda x : int(x[0:]))
|
||||
|
||||
|
@ -81,7 +81,7 @@ class OpenBMCFlashTask(ParallelNodesCommand):
|
||||
def _get_firmware_version(self, target_file):
|
||||
|
||||
version = purpose = None
|
||||
with open(target_file, 'r') as fh:
|
||||
with open(target_file, encoding="utf8", errors='ignore') as fh:
|
||||
for line in fh:
|
||||
if 'version=' in line:
|
||||
version = line.split('=')[-1].strip()
|
||||
@ -159,7 +159,7 @@ class OpenBMCFlashTask(ParallelNodesCommand):
|
||||
|
||||
mapping_ids = []
|
||||
if self.firmware:
|
||||
version_list = self.firmware.keys()
|
||||
version_list = list(self.firmware.keys())
|
||||
else:
|
||||
return []
|
||||
|
||||
@ -348,7 +348,7 @@ class OpenBMCFlashTask(ParallelNodesCommand):
|
||||
|
||||
firmware_version = ''
|
||||
if self.firmware_file:
|
||||
firmware_version = self.firmware.keys()[0]
|
||||
firmware_version = list(self.firmware.keys())[0]
|
||||
try:
|
||||
obmc.upload_firmware(self.firmware_file)
|
||||
except (SelfServerException, SelfClientException) as e:
|
||||
|
@ -29,7 +29,7 @@ class OpenBMCInventoryTask(ParallelNodesCommand):
|
||||
target_file = utils.get_full_path(self.cwd, target_file)
|
||||
|
||||
version = purpose = None
|
||||
with open(target_file, 'r') as fh:
|
||||
with open(target_file, encoding="utf8", errors='ignore') as fh:
|
||||
for line in fh:
|
||||
if 'version=' in line:
|
||||
version = line.split('=')[-1].strip()
|
||||
@ -44,13 +44,13 @@ class OpenBMCInventoryTask(ParallelNodesCommand):
|
||||
def _get_firm_info(self, firm_info_list):
|
||||
(has_functional, firm_obj_dict) = firm_info_list
|
||||
firm_info = []
|
||||
keys = firm_obj_dict.keys()
|
||||
keys = list(firm_obj_dict.keys())
|
||||
keys.sort()
|
||||
for key in keys:
|
||||
flag = ''
|
||||
if firm_obj_dict[key].functional:
|
||||
flag = '*'
|
||||
elif firm_obj_dict[key].priority == 0:
|
||||
elif firm_obj_dict[key].priority == 0:
|
||||
if not has_functional:
|
||||
flag = '*'
|
||||
else:
|
||||
@ -115,7 +115,7 @@ class OpenBMCInventoryTask(ParallelNodesCommand):
|
||||
# Process returned inventory_info_dict depending on the inventory requested
|
||||
if all == 1:
|
||||
# Everything gets displayed, even firmware
|
||||
keys = inventory_info_dict.keys()
|
||||
keys = list(inventory_info_dict.keys())
|
||||
keys.sort()
|
||||
for key in keys:
|
||||
inventory_info += utils.sort_string_with_numbers(inventory_info_dict[key])
|
||||
|
@ -450,7 +450,7 @@ class OpenBMCRest(object):
|
||||
payload = { "data": PROJECT_PAYLOAD + BMC_URLS['reboot']['field'] }
|
||||
try:
|
||||
self.request('PUT', BMC_URLS['reboot']['path'], payload=payload, cmd='bmc_reset')
|
||||
except SelfServerException,SelfClientException:
|
||||
except (SelfServerException,SelfClientException) as e:
|
||||
# TODO: Need special handling for bmc reset, as it is normal bmc may return error
|
||||
pass
|
||||
|
||||
@ -578,7 +578,8 @@ class OpenBMCRest(object):
|
||||
logger.debug('IndexError (-2) for %s' % key)
|
||||
continue
|
||||
|
||||
key_type = filter(lambda x:x not in '0123456789', key_id).upper()
|
||||
key_type_list = [x for x in key_id if x not in '0123456789']
|
||||
key_type = ''.join(key_type_list).upper()
|
||||
|
||||
if key_type == 'CORE':
|
||||
key_type = 'CPU'
|
||||
@ -656,7 +657,7 @@ class OpenBMCRest(object):
|
||||
# Check if policy table file is there
|
||||
ras_event_mapping = {}
|
||||
if os.path.isfile(RAS_POLICY_TABLE):
|
||||
with open(RAS_POLICY_TABLE, "r") as data_file:
|
||||
with open(RAS_POLICY_TABLE, encoding="utf8", errors='ignore') as data_file:
|
||||
policy_hash = json.load(data_file)
|
||||
if policy_hash:
|
||||
ras_event_mapping = policy_hash['events']
|
||||
|
@ -25,7 +25,7 @@ class XCATMessager(utils.Messager):
|
||||
def _send(self, d):
|
||||
buf = json.dumps(d)
|
||||
self.sem.acquire()
|
||||
self.sock.sendall(utils.int2bytes(len(buf)) + buf)
|
||||
self.sock.sendall(utils.int2bytes(len(buf)) + buf.encode('utf-8'))
|
||||
self.sem.release()
|
||||
|
||||
def info(self, msg):
|
||||
@ -101,7 +101,7 @@ class Server(object):
|
||||
new_args=[]
|
||||
if req['args']:
|
||||
for a in req['args']:
|
||||
new_args.append(a.encode('utf-8'))
|
||||
new_args.append(a)
|
||||
# call the function in the specified manager
|
||||
func(req['nodeinfo'], new_args)
|
||||
# after the method returns, the request should be handled
|
||||
|
Loading…
x
Reference in New Issue
Block a user