diff --git a/common/OpTestHMC.py b/common/OpTestHMC.py index 96edee021..e05ee2629 100644 --- a/common/OpTestHMC.py +++ b/common/OpTestHMC.py @@ -839,6 +839,53 @@ def is_msp_enabled(self, mg_system, vios_name, remote_hmc=None): return False return True + def enable_msp(self, mg_system, vios_name, remote_hmc=None): + ''' + The function enables msp for lpar of the + given lpar_id and managaed system. + + :param mg_system: string, Source managed system + :param lpar_id: number. lpar ID of the lpar + :returns: Boolean, True on success, False on failure + ''' + hmc = remote_hmc if remote_hmc else self + cmd = "chsyscfg -m %s -r lpar -i name=%s,msp=1" % (mg_system, vios_name) + msp_enable = hmc.ssh.run_command(cmd) + if msp_enable != 0: + return False + return True + + def set_label(self, mg_system, adapter_id, port_id, label, remote_hmc=None): + ''' + :param mg_system: string, Source managed system + :param adapter_id: number adapter ID of the card + :param label: string, name of the label that needs to be set + :returns: Boolean, True on success, False on failure + ''' + hmc = remote_hmc if remote_hmc else self + cmd = 'chhwres -r sriov -m %s --rsubtype physport -o \ + s -a "adapter_id=%s,phys_port_id=%s,phys_port_label=%s"' % ( + mg_system, adapter_id, port_id, label) + label_set = hmc.ssh.run_command(cmd) + if label_set != 0: + return False + return True + + def remove_label(self, mg_system, adapter_id, port_id, remote_hmc=None): + ''' + :param mg_system: string, Source managed system + :param adapter_id: number, adapter ID of the card + :returns: Boolean, True on success, False on failure + ''' + hmc = remote_hmc if remote_hmc else self + cmd = 'chhwres -r sriov -m %s --rsubtype physport -o \ + s -a "adapter_id=%s,phys_port_id=%s,phys_port_label=none"' % ( + mg_system, adapter_id, port_id) + label_remove = hmc.ssh.run_command(cmd) + if label_remove != 0: + return False + return True + def gather_logs(self, list_of_commands=[], remote_hmc=None, output_dir=None): ''' Gather the logs for the commands at the given directory diff --git a/testcases/OpTestLPM.py b/testcases/OpTestLPM.py index f42a98b44..9f1242c59 100644 --- a/testcases/OpTestLPM.py +++ b/testcases/OpTestLPM.py @@ -103,10 +103,12 @@ def setUp(self, remote_hmc=None): self.dest_lpar_vios = self.conf.args.remote_lpar_vios.split(",") for vios_name in self.src_lpar_vios: if not self.cv_HMC.is_msp_enabled(self.src_mg_sys, vios_name): - self.errMsg(vios_name, self.src_mg_sys) + log.info("MSP is not set, trying to set MSP..!") + self.cv_HMC.enable_msp(self.src_mg_sys, vios_name) for vios_name in self.dest_lpar_vios: if not self.cv_HMC.is_msp_enabled(self.dest_mg_sys, vios_name, remote_hmc): - self.errMsg(vios_name, self.dest_mg_sys) + log.info("MSP is not set in destination machine, trying to set MSP..!") + self.cv_HMC.enable_msp(self.dest_mg_sys, vios_name) if 'slot_num' in self.conf.args: self.slot_num = self.conf.args.slot_num @@ -120,6 +122,7 @@ def setUp(self, remote_hmc=None): self.interface_ip = self.conf.args.interface_ip self.netmask = self.conf.args.netmask self.peer_ip = self.conf.args.peer_ip + self.adapter_labels = self.conf.args.adapter_labels.split(",") self.vios_id = [] for vios_name in self.src_lpar_vios: @@ -134,6 +137,12 @@ def setUp(self, remote_hmc=None): for adapter in self.target_adapters: self.target_adapter_id.append(self.cv_HMC.get_adapter_id(self.dest_mg_sys, adapter, remote_hmc)) + for index in range(0, len(self.adapter_labels)): + for port in self.ports: + self.cv_HMC.set_label(self.src_mg_sys, self.adapter_id[index], self.ports[index], self.adapter_labels[index]) + for port in self.target_ports: + self.cv_HMC.set_label(self.dest_mg_sys, self.target_adapter_id[index], self.ports[index], self.adapter_labels[index]) + def check_pkg_installation(self): pkg_found = True pkg_notfound = [] @@ -386,6 +395,11 @@ def tearDown(self): self.cv_HOST.host_run_command('pkill -x "stress-ng"') self.thread_stressng.console_terminate() + for index in range(0, len(self.adapter_labels)): + for port in self.ports: + self.cv_HMC.remove_label(self.src_mg_sys, self.adapter_id[index], self.ports[index]) + for port in self.target_ports: + self.cv_HMC.remove_label(self.dest_mg_sys, self.target_adapter_id[index], self.ports[index]) class OpTestLPM_CrossHMC(OpTestLPM):