X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=ta%2Fremote-installer.git;a=blobdiff_plain;f=src%2Fremoteinstaller%2Finstaller%2Fbmc_management%2Fbmctools.py;h=cbe9565fd6feb9fe0efafd9e5464d502c45f88e5;hp=dfdeaea5e97abbe84a9ee89b7d9447a9ca11f84a;hb=3b665c4c4524f586c291935265a8613c8fe9c982;hpb=f9adb9143ef94b16ae16941652e75deccad506ef diff --git a/src/remoteinstaller/installer/bmc_management/bmctools.py b/src/remoteinstaller/installer/bmc_management/bmctools.py index dfdeaea..cbe9565 100644 --- a/src/remoteinstaller/installer/bmc_management/bmctools.py +++ b/src/remoteinstaller/installer/bmc_management/bmctools.py @@ -22,10 +22,11 @@ class BMCException(Exception): pass class BMC(object): - def __init__(self, host, user, passwd, log_path=None): + def __init__(self, host, user, passwd, priv_level='ADMINISTRATOR', log_path=None): self._host = host self._user = user self._passwd = passwd + self._priv_level = priv_level if log_path: self._log_path = log_path else: @@ -52,6 +53,9 @@ class BMC(object): def get_passwd(self): return self._passwd + def get_priv_level(self): + return self._priv_level + def reset(self): logging.info('Reset BMC of %s: %s', self.get_host_name(), self.get_host()) @@ -208,7 +212,7 @@ class BMC(object): return ''.join('{}'.format(c.decode('hex')) for c in hex_string) def _execute_ipmitool_command(self, ipmi_command): - command = 'ipmitool -I lanplus -H {} -U {} -P {} {}'.format(self._host, self._user, self._passwd, ipmi_command) + command = 'ipmitool -I lanplus -H {} -U {} -P {} -L {} {}'.format(self._host, self._user, self._passwd, self._priv_level, ipmi_command) p = subprocess.Popen(command.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) out, _ = p.communicate() @@ -257,12 +261,12 @@ class BMC(object): def _open_console(self): logging.debug('Open SOL console (log in %s)', self._log_path) - expect_session = pexpect.spawn('ipmitool -I lanplus -H {} -U {} -P {} sol deactivate'.format(self._host, self._user, self._passwd)) + expect_session = pexpect.spawn('ipmitool -I lanplus -H {} -U {} -P {} -L {} sol deactivate'.format(self._host, self._user, self._passwd, self._priv_level)) expect_session.expect(pexpect.EOF) logfile = open(self._log_path, 'ab') - expect_session = pexpect.spawn('ipmitool -I lanplus -H {} -U {} -P {} sol activate'.format(self._host, self._user, self._passwd), timeout=None, logfile=logfile) + expect_session = pexpect.spawn('ipmitool -I lanplus -H {} -U {} -P {} -L {} sol activate'.format(self._host, self._user, self._passwd, self._priv_level), timeout=None, logfile=logfile) return expect_session @@ -306,6 +310,8 @@ class BMC(object): logging.info('Retry to expect a flag in console, %s seconds remaining', remaining_time) self.close() + raise BMCException('Expected message in console did not occur in time ({})'.format(flags)) + def _wait_for_bios_settings_done(self): logging.debug('Wait until BIOS settings are updated')