Exemple #1
0
        def _wait_for_horcm_execution(start_time, flag, *cmd, **kwargs):
            ignore_error = kwargs.pop('ignore_error', [])
            no_retry_error = ignore_error + _HORCM_NO_RETRY_ERRORS
            success_code = kwargs.pop('success_code', HORCM_EXIT_CODE)
            timeout = kwargs.pop('timeout', _EXEC_MAX_WAITTIME)
            horcmgr = kwargs.pop('horcmgr', _HORCMGR)
            do_login = kwargs.pop('do_login', False)

            result = utils.execute(*cmd, **kwargs)
            if _NOT_LOCKED in result[2] and not utils.check_timeout(
                    start_time, _LOCK_WAITTIME):
                LOG.debug(
                    "The resource group to which the operation object "
                    "belongs is being locked by other software.")
                return
            if (result[0] in success_code or
                    utils.check_timeout(start_time, timeout) or
                    utils.check_ignore_error(no_retry_error, result[2])):
                raise loopingcall.LoopingCallDone(result)
            if result[0] == EX_ENAUTH:
                if not self._retry_login(flag['ignore_enauth'], do_login):
                    raise loopingcall.LoopingCallDone(result)
                flag['ignore_enauth'] = False
            elif result[0] in _HORCM_ERROR:
                if not self._start_horcmgr(horcmgr):
                    raise loopingcall.LoopingCallDone(result)
            elif result[0] not in _COMMAND_IO_TO_RAID:
                raise loopingcall.LoopingCallDone(result)
Exemple #2
0
 def run_and_verify_storage_cli(self, *cmd, **kwargs):
     do_raise = kwargs.pop('do_raise', True)
     ignore_error = kwargs.get('ignore_error')
     success_code = kwargs.get('success_code', set([0]))
     (ret, stdout, stderr) = self.run_storage_cli(*cmd, **kwargs)
     if (ret not in success_code and
             not utils.check_ignore_error(ignore_error, stderr)):
         msg = utils.output_log(
             600, cmd=' '.join([six.text_type(c) for c in cmd]),
             ret=ret, out=' '.join(stdout.splitlines()),
             err=' '.join(stderr.splitlines()))
         if do_raise:
             raise exception.HPEXPError(data=msg)
     return ret, stdout, stderr