From 1516b57d62262c32408f622a034400c58335bace Mon Sep 17 00:00:00 2001 From: Felipe Desiglo Ferrare Date: Mon, 25 Oct 2021 10:19:40 -0300 Subject: [PATCH] Fix pylint warnings hapening in the build process to make Zuul builds clean Warnings Fixed: W1514: Using open without explicitly specifying an encoding (unspecified-encoding) E0702: Raising str while only classes or instances are allowed (raising-bad-type) Story: 2005892 Task: 43821 Change-Id: I2083fa4f8d994480c79ff557c56cf2f29c56c19f Signed-off-by: Felipe Desiglo Ferrare --- automated-pytest-suite/conftest.py | 7 +++---- automated-pytest-suite/keywords/common.py | 8 ++++---- automated-pytest-suite/keywords/vm_helper.py | 4 ++-- automated-pytest-suite/setups.py | 2 +- .../testcases/functional/nova/test_cpu_policy.py | 2 +- .../testcases/functional/security/test_ima.py | 6 +----- .../functional/z_containers/test_hugepage_pod.py | 4 ++-- .../test_instance_from_snapshot.py | 1 - .../test_instance_from_volume.py | 1 - automated-pytest-suite/utils/clients/local.py | 2 +- automated-pytest-suite/utils/clients/ssh.py | 2 +- automated-pytest-suite/utils/clients/telnet.py | 2 +- .../utils/horizon/basewebobject.py | 6 +++--- .../admin/system/metadatadefinitionspage.py | 2 +- .../utils/horizon/pages/project/apiaccesspage.py | 2 +- .../utils/horizon/video_recorder.py | 2 +- automated-pytest-suite/utils/parse_log.py | 8 ++++---- automated-robot-suite/Libraries/common.py | 6 +++--- automated-robot-suite/Libraries/pxe_server.py | 16 ++++++++-------- automated-robot-suite/Qemu/qemu_setup.py | 2 +- automated-robot-suite/Utils/logger.py | 2 +- 21 files changed, 40 insertions(+), 47 deletions(-) diff --git a/automated-pytest-suite/conftest.py b/automated-pytest-suite/conftest.py index 5f3d9b8..3d0fbeb 100644 --- a/automated-pytest-suite/conftest.py +++ b/automated-pytest-suite/conftest.py @@ -52,7 +52,6 @@ class MakeReport: msg = "***Failure at test {}: {}".format(call.when, call.excinfo) print(msg) LOG.debug(msg + "\n***Details: {}".format(report.longrepr)) - global tracebacks tracebacks.append(str(report.longrepr)) self.test_results[call.when] = ['Failed', call.excinfo] elif report.skipped: @@ -83,7 +82,7 @@ class TestRes: def _write_results(res_in_tests, test_name): global tc_start_time - with open(ProjVar.get_var("TCLIST_PATH"), mode='a') as f: + with open(ProjVar.get_var("TCLIST_PATH"), mode='a', encoding='utf8') as f: f.write('\n{}\t{}\t{}'.format(res_in_tests, tc_start_time, test_name)) global test_count test_count += 1 @@ -510,7 +509,7 @@ def pytest_unconfigure(config): round(TestRes.PASSNUM * 100 / total_exec, 2)) fail_rate = "{}%".format( round(TestRes.FAILNUM * 100 / total_exec, 2)) - with open(tc_res_path, mode='a') as f: + with open(tc_res_path, mode='a', encoding='utf8') as f: # Append general info to result log f.write('\n\nLab: {}\n' 'Build ID: {}\n' @@ -534,7 +533,7 @@ def pytest_unconfigure(config): f.write('------------\nSkipped: {}'.format(TestRes.SKIPNUM)) LOG.info("Test Results saved to: {}".format(tc_res_path)) - with open(tc_res_path, 'r') as fin: + with open(tc_res_path, 'r', encoding='utf8') as fin: print(fin.read()) except Exception as e: LOG.exception( diff --git a/automated-pytest-suite/keywords/common.py b/automated-pytest-suite/keywords/common.py index c7667a9..cecdd8a 100644 --- a/automated-pytest-suite/keywords/common.py +++ b/automated-pytest-suite/keywords/common.py @@ -330,7 +330,7 @@ def _scp_on_local(cmd, remote_password, logdir=None, timeout=900): logdir = logdir or ProjVar.get_var('LOG_DIR') logfile = os.path.join(logdir, 'scp_files.log') - with open(logfile, mode='a') as f: + with open(logfile, mode='a', encoding='utf8') as f: local_child = pexpect.spawn(command=cmd, encoding='utf-8', logfile=f) index = local_child.expect([pexpect.EOF, 'assword:', 'yes/no'], timeout=timeout) @@ -571,7 +571,7 @@ def write_to_file(file_path, content, mode='a'): """ time_stamp = time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime()) - with open(file_path, mode=mode) as f: + with open(file_path, mode=mode, encoding='utf8') as f: f.write( '\n-----------------[{}]-----------------\n{}\n'.format(time_stamp, content)) @@ -812,7 +812,7 @@ def get_yaml_data(filepath): Return(json): returns the json data """ - with open(filepath, 'r') as f: + with open(filepath, 'r', encoding='utf8') as f: data = yaml.safe_load(f) return data @@ -830,7 +830,7 @@ def write_yaml_data_to_file(data, filename, directory=None): if directory is None: directory = ProjVar.get_var('LOG_DIR') src_path = "{}/{}".format(directory, filename) - with open(src_path, 'w') as f: + with open(src_path, 'w', encoding='utf8') as f: yaml.dump(data, f) return src_path diff --git a/automated-pytest-suite/keywords/vm_helper.py b/automated-pytest-suite/keywords/vm_helper.py index ebfe212..0d8f4ce 100755 --- a/automated-pytest-suite/keywords/vm_helper.py +++ b/automated-pytest-suite/keywords/vm_helper.py @@ -4180,7 +4180,7 @@ def _create_cloud_init_if_conf(guest_os, nics_num): # else: # shell = '/bin/bash' - with open(tmp_file, mode='a') as f: + with open(tmp_file, mode='a', encoding='utf8') as f: f.write("#cloud-config\n") if new_user is not None: @@ -5279,7 +5279,7 @@ def collect_guest_logs(vm_id): else: output = vm_ssh.exec_cmd('tail -n 200 {}'.format(log_path), fail_ok=False)[1] - with open(local_log_path, mode='w') as f: + with open(local_log_path, mode='w', encoding='utf8') as f: f.write(output) return diff --git a/automated-pytest-suite/setups.py b/automated-pytest-suite/setups.py index f6b17fe..b60e8a7 100644 --- a/automated-pytest-suite/setups.py +++ b/automated-pytest-suite/setups.py @@ -487,7 +487,7 @@ def get_system_mode_from_lab_info(lab, multi_region_lab=False, def add_ping_failure(test_name): file_path = '{}{}'.format(ProjVar.get_var('PING_FAILURE_DIR'), 'ping_failures.txt') - with open(file_path, mode='a') as f: + with open(file_path, mode='a', encoding='utf8') as f: f.write(test_name + '\n') diff --git a/automated-pytest-suite/testcases/functional/nova/test_cpu_policy.py b/automated-pytest-suite/testcases/functional/nova/test_cpu_policy.py index 8d4c196..ef5576c 100755 --- a/automated-pytest-suite/testcases/functional/nova/test_cpu_policy.py +++ b/automated-pytest-suite/testcases/functional/nova/test_cpu_policy.py @@ -125,7 +125,7 @@ def test_cpu_pol_vm_actions(flv_vcpus, cpu_pol, pol_source, boot_source): **image_meta)[1] if boot_source == 'volume': LOG.tc_step("Create a volume from image") - source_id = cinder_helper.create_volume(name='cpu_pol'.format(cpu_pol), + source_id = cinder_helper.create_volume(name='cpu_pol_{}'.format(cpu_pol), source_id=image_id)[1] ResourceCleanup.add('volume', source_id) else: diff --git a/automated-pytest-suite/testcases/functional/security/test_ima.py b/automated-pytest-suite/testcases/functional/security/test_ima.py index de050ea..ae7e980 100755 --- a/automated-pytest-suite/testcases/functional/security/test_ima.py +++ b/automated-pytest-suite/testcases/functional/security/test_ima.py @@ -215,8 +215,6 @@ def test_ima_no_event(operation, file_path): """ - - global files_to_delete start_time = common.get_date_in_format() source_file = file_path con_ssh = ControllerClient.get_active_controller() @@ -296,7 +294,6 @@ def test_ima_event_generation(operation, file_path): - Check IMA violation event is logged """ - global files_to_delete con_ssh = ControllerClient.get_active_controller() start_time = common.get_date_in_format() @@ -315,8 +312,7 @@ def test_ima_event_generation(operation, file_path): execute_cmd = "{} -p".format(dest_file) else: LOG.tc_step("Append to copy of monitored file") - cmd = 'echo "output" | sudo -S tee -a /usr/sbin/TEMP'.format( - HostLinuxUser.get_password()) + cmd = 'echo "output" | sudo -S tee -a /usr/sbin/TEMP' con_ssh.exec_cmd(cmd, fail_ok=False) LOG.tc_step("Execute modified file") con_ssh.exec_sudo_cmd(dest_file) diff --git a/automated-pytest-suite/testcases/functional/z_containers/test_hugepage_pod.py b/automated-pytest-suite/testcases/functional/z_containers/test_hugepage_pod.py index 17ce5e1..067db90 100644 --- a/automated-pytest-suite/testcases/functional/z_containers/test_hugepage_pod.py +++ b/automated-pytest-suite/testcases/functional/z_containers/test_hugepage_pod.py @@ -32,11 +32,11 @@ def modify_yaml(file_dir, file_name, str_to_add, hugepage_value): Return(str): returns the file_dir and filename with modified values """ - with open("{}/{}".format(file_dir, file_name), 'r') as f: + with open("{}/{}".format(file_dir, file_name), 'r', encoding='utf8') as f: data = yaml.safe_load(f) data['spec']['containers'][0]['resources']['limits'][str_to_add] = hugepage_value newfile = "hugepages_pod_{}.yaml".format(hugepage_value) - with open("{}/{}".format(ProjVar.get_var('LOG_DIR'), newfile), 'w') as f: + with open("{}/{}".format(ProjVar.get_var('LOG_DIR'), newfile), 'w', encoding='utf8') as f: yaml.dump(data, f) return ProjVar.get_var('LOG_DIR'), newfile diff --git a/automated-pytest-suite/testcases/sanity/sanity_openstack/test_instance_from_snapshot.py b/automated-pytest-suite/testcases/sanity/sanity_openstack/test_instance_from_snapshot.py index b34349d..1f58f3d 100755 --- a/automated-pytest-suite/testcases/sanity/sanity_openstack/test_instance_from_snapshot.py +++ b/automated-pytest-suite/testcases/sanity/sanity_openstack/test_instance_from_snapshot.py @@ -87,7 +87,6 @@ def snapshot_from_instance(request, create_flavour_and_image, volume_for_instanc @fixture(scope="module") def launch_instances(create_flavour_and_image, create_network_sanity, snapshot_from_instance): - global VM_IDS net_id_list = list() net_id_list.append({"net-id": create_network_sanity}) host = system_helper.get_active_controller_name() diff --git a/automated-pytest-suite/testcases/sanity/sanity_openstack/test_instance_from_volume.py b/automated-pytest-suite/testcases/sanity/sanity_openstack/test_instance_from_volume.py index 4cff91b..83d783c 100755 --- a/automated-pytest-suite/testcases/sanity/sanity_openstack/test_instance_from_volume.py +++ b/automated-pytest-suite/testcases/sanity/sanity_openstack/test_instance_from_volume.py @@ -77,7 +77,6 @@ def volume_from_instance(request, create_flavour_and_image): @fixture(scope="module") def launch_instances(create_flavour_and_image, create_network_sanity, volume_from_instance): - global VM_IDS net_id_list = list() net_id_list.append({"net-id": create_network_sanity}) host = system_helper.get_active_controller_name() diff --git a/automated-pytest-suite/utils/clients/local.py b/automated-pytest-suite/utils/clients/local.py index 336049d..2f4db17 100644 --- a/automated-pytest-suite/utils/clients/local.py +++ b/automated-pytest-suite/utils/clients/local.py @@ -92,7 +92,7 @@ class LocalHostClient(SSHClient): self.logpath = self._get_logpath() if self.logpath: - self.session.logfile = open(self.logpath, 'w+') + self.session.logfile = open(self.logpath, 'w+', encoding='utf8') # Set prompt for matching self.set_prompt(prompt) diff --git a/automated-pytest-suite/utils/clients/ssh.py b/automated-pytest-suite/utils/clients/ssh.py index 65539fb..0499e87 100644 --- a/automated-pytest-suite/utils/clients/ssh.py +++ b/automated-pytest-suite/utils/clients/ssh.py @@ -164,7 +164,7 @@ class SSHClient: self.logpath = self._get_logpath() if self.logpath: - self.session.logfile = open(self.logpath, 'a+') + self.session.logfile = open(self.logpath, 'a+', encoding='utf8') # Login self.session.login(self.host, self.user, self.password, diff --git a/automated-pytest-suite/utils/clients/telnet.py b/automated-pytest-suite/utils/clients/telnet.py index 2003ae8..30498cd 100644 --- a/automated-pytest-suite/utils/clients/telnet.py +++ b/automated-pytest-suite/utils/clients/telnet.py @@ -542,7 +542,7 @@ class TelnetClient(Telnet): def get_log_file(self, log_dir): if log_dir: - logfile = open(log_dir, 'a') + logfile = open(log_dir, 'a', encoding='utf8') else: logfile = None diff --git a/automated-pytest-suite/utils/horizon/basewebobject.py b/automated-pytest-suite/utils/horizon/basewebobject.py index c0b20d0..f77518a 100644 --- a/automated-pytest-suite/utils/horizon/basewebobject.py +++ b/automated-pytest-suite/utils/horizon/basewebobject.py @@ -129,10 +129,10 @@ class BaseWebObject: elt = element() if hasattr(element, '__call__') else element except: return False - for text in texts: # + for text in texts: if self._is_text_visible(elt, 'Error'): # - s = 'error' # - raise s # + s = 'error' + raise Exception(s) if self._is_text_visible(elt, text): return text return False diff --git a/automated-pytest-suite/utils/horizon/pages/admin/system/metadatadefinitionspage.py b/automated-pytest-suite/utils/horizon/pages/admin/system/metadatadefinitionspage.py index c18197c..41a1396 100644 --- a/automated-pytest-suite/utils/horizon/pages/admin/system/metadatadefinitionspage.py +++ b/automated-pytest-suite/utils/horizon/pages/admin/system/metadatadefinitionspage.py @@ -66,7 +66,7 @@ class MetadatadefinitionsPage(basepage.BasePage): :return = json data container """ try: - with open(namespace_template_name, 'r') as template: + with open(namespace_template_name, 'r', encoding='utf8') as template: json_template = json.load(template) except Exception: raise EOFError("Can not read template file: [{0}]".format( diff --git a/automated-pytest-suite/utils/horizon/pages/project/apiaccesspage.py b/automated-pytest-suite/utils/horizon/pages/project/apiaccesspage.py index 40a8636..8f8a964 100644 --- a/automated-pytest-suite/utils/horizon/pages/project/apiaccesspage.py +++ b/automated-pytest-suite/utils/horizon/pages/project/apiaccesspage.py @@ -55,7 +55,7 @@ class ApiAccessPage(basepage.BasePage): self._wait_until( lambda _: len(self.list_of_files(directory, template)) > 0) file_name = self.list_of_files(directory, template)[0] - with open(join(directory, file_name)) as cred_file: + with open(join(directory, file_name), encoding='utf8') as cred_file: content = cred_file.read() username_re = r'export OS_USERNAME="([^"]+)"' if version == 2: diff --git a/automated-pytest-suite/utils/horizon/video_recorder.py b/automated-pytest-suite/utils/horizon/video_recorder.py index 5687196..7e1bc5e 100644 --- a/automated-pytest-suite/utils/horizon/video_recorder.py +++ b/automated-pytest-suite/utils/horizon/video_recorder.py @@ -35,7 +35,7 @@ class VideoRecorder(object): LOG.warning('Video recording is running already') return - fnull = open(os.devnull, 'w') + fnull = open(os.devnull, 'w', encoding='utf8') LOG.info('Record video via %s', ' '.join(self._cmd)) self._popen = subprocess.Popen(self._cmd, stdout=fnull, stderr=fnull) self.is_launched = True diff --git a/automated-pytest-suite/utils/parse_log.py b/automated-pytest-suite/utils/parse_log.py index 6edbdf5..f330cc6 100644 --- a/automated-pytest-suite/utils/parse_log.py +++ b/automated-pytest-suite/utils/parse_log.py @@ -30,7 +30,7 @@ def _get_failed_test_names(log_dir): if not path.exists(test_res_path): return [] - with open(test_res_path, 'r') as file: + with open(test_res_path, 'r', encoding='utf8') as file: failed_tests = [] for line in file: @@ -68,7 +68,7 @@ def get_tracebacks_from_pytestlog(log_dir, traceback_lines=10, current_failure = None next_failure = failed_tests.pop(0) traceback_for_test = [] - with open(path.join(log_dir, 'pytestlog.log'), 'r') as file: + with open(path.join(log_dir, 'pytestlog.log'), 'r', encoding='utf8') as file: for line in file: if current_failure is not None: if re.match(new_test_pattern, line): @@ -151,8 +151,8 @@ def parse_test_steps(log_dir, failures_only=True): if failures_only and not failed_tests: return - with open("{}/TIS_AUTOMATION.log".format(log_dir), 'r') as file, \ - open("{}/test_steps.log".format(log_dir), 'w') as log: + with open("{}/TIS_AUTOMATION.log".format(log_dir), 'r', encoding='utf8') as file, \ + open("{}/test_steps.log".format(log_dir), 'w', encoding='utf8') as log: for line in file: if test_steps_length >= 500: diff --git a/automated-robot-suite/Libraries/common.py b/automated-robot-suite/Libraries/common.py index 0d7ed50..4160766 100644 --- a/automated-robot-suite/Libraries/common.py +++ b/automated-robot-suite/Libraries/common.py @@ -132,7 +132,7 @@ def update_config_ini(**kwargs): # ----------------------------------------------------------------------- if count != 0: - with open(config_ini, 'w') as configfile: + with open(config_ini, 'w', encoding='utf8') as configfile: configurations.write(configfile) status = True message = '{}: was updated successfully'.format(os.path.basename( @@ -410,7 +410,7 @@ def get_controllers_ip(env, config_file, config_type, lab_file): """ # Read Configurtion File - conf = yaml.safe_load(open(config_file)) + conf = yaml.safe_load(open(config_file, encoding='utf8')) cont_data = {} # Get Controllers IP's @@ -423,7 +423,7 @@ def get_controllers_ip(env, config_file, config_type, lab_file): if env == 'baremetal': # Get phyisical interfaces - conf_lab = yaml.safe_load(open(lab_file)) + conf_lab = yaml.safe_load(open(lab_file, encoding='utf8')) cont_data['OAM_IF'] = conf_lab['nodes']['controller-0']['oam_if'] cont_data['MGMT_IF'] = conf_lab['nodes']['controller-0']['mgmt_if'] diff --git a/automated-robot-suite/Libraries/pxe_server.py b/automated-robot-suite/Libraries/pxe_server.py index 8bb592b..f93b0fd 100644 --- a/automated-robot-suite/Libraries/pxe_server.py +++ b/automated-robot-suite/Libraries/pxe_server.py @@ -31,7 +31,7 @@ PROMPT = '$' LOG_FILENAME = 'iso_setup_baremetal.log' LOG_PATH = config.get('general', 'LOG_PATH') LOG = logger.setup_logging('iso_setup_baremetal', - log_file='%s/%s'.format(LOG_PATH, LOG_FILENAME), + log_file='{}/{}'.format(LOG_PATH, LOG_FILENAME), console_log=False) @@ -133,9 +133,9 @@ class PxeServer(object): @staticmethod def check_pxe_services(): """This function is intended to restart DHCP service - DHCP service needs to be restarted in order to grab the changes on the dhcp config file""" + LOG.info('Checking PXE needed services') services = ['dhcpd', 'tftp', 'httpd'] @@ -221,7 +221,7 @@ class PxeServer(object): linuxefi=grub_lines['linuxefi'], initrdefi=grub_lines['initrdefi'])) grub_timeout = 'timeout=5\n' - with open(os.path.join(self.tftp_dir, 'grub.cfg'), 'w') as grub_file: + with open(os.path.join(self.tftp_dir, 'grub.cfg'), 'w', encoding='utf8') as grub_file: grub_file.writelines(grub_timeout) grub_file.write(grub_entry) @@ -352,7 +352,7 @@ def analyze_grub(grub_cfg_file): Get linuxefi command and initrdefi command from grub_dict according to selected option in config file """ - with open(grub_cfg_file, 'r') as grub: + with open(grub_cfg_file, 'r', encoding='utf8') as grub: lines = grub.readlines() cmd_lines = list() @@ -397,7 +397,7 @@ def install_iso_master_controller(): nodes_file = os.path.join(os.environ['PYTHONPATH'], 'baremetal', 'baremetal_setup.yaml') - nodes = yaml.safe_load(open(nodes_file)) + nodes = yaml.safe_load(open(nodes_file, encoding='utf8')) # Update config.ini with OAM and MGMT interfaces network_interfaces = [] @@ -423,7 +423,7 @@ def get_controller0_ip(): nodes_file = os.path.join(THIS_PATH, '..', 'BareMetal', 'installation_setup.yaml') - nodes = yaml.load(open(nodes_file)) + nodes = yaml.load(open(nodes_file, encoding='utf8')) controller_0 = nodes['controller-0'] master_controller = Node(controller_0) @@ -437,7 +437,7 @@ def config_controller(config_file): 'iso_installer', 'CONFIG_CONTROLLER_TIMEOUT')) nodes_file = os.path.join(os.environ['PYTHONPATH'], 'baremetal', 'baremetal_setup.yaml') - nodes = yaml.safe_load(open(nodes_file)) + nodes = yaml.safe_load(open(nodes_file, encoding='utf8')) controller_0 = nodes['nodes']['controller-0'] master_controller = Node(controller_0) serial_cmd = ('ipmitool -I lanplus -H {node_bmc_ip} -U {node_bmc_user} ' @@ -475,7 +475,7 @@ def install_secondary_nodes(): nodes_file = os.path.join(THIS_PATH, '..', 'BareMetal', 'installation_setup.yml') - nodes = yaml.load(open(nodes_file)) + nodes = yaml.load(open(nodes_file, encoding='utf8')) # Removing controller-0 from Nodes controller_0 = nodes.pop('controller-0') diff --git a/automated-robot-suite/Qemu/qemu_setup.py b/automated-robot-suite/Qemu/qemu_setup.py index d81c327..dde16dc 100644 --- a/automated-robot-suite/Qemu/qemu_setup.py +++ b/automated-robot-suite/Qemu/qemu_setup.py @@ -577,7 +577,7 @@ def setup_qemu(iso_file, configuration_file): check_preconditions() # loading all the configurations from yaml file - configurations = yaml.safe_load(open(configuration_file)) + configurations = yaml.safe_load(open(configuration_file, encoding='utf8')) # fixme(Humberto): check_system_resources is commented out due # check is giving problems when configuring an instance on qemu virtual diff --git a/automated-robot-suite/Utils/logger.py b/automated-robot-suite/Utils/logger.py index dd27070..a1b881c 100644 --- a/automated-robot-suite/Utils/logger.py +++ b/automated-robot-suite/Utils/logger.py @@ -17,7 +17,7 @@ def setup_logging_using_config(name, config_file): logger :return: returns the instance of the logger already configured """ - with open(config_file, 'r') as file_manager: + with open(config_file, 'r', encoding='utf8') as file_manager: config = yaml.safe_load(file_manager.read()) logging.config.dictConfig(config)