docs: def wait_for_ribcl_firmware_update_to_complete(ribcl_object):
      """Continuously checks for iLO firmware update to complete."""
  
      def is_ilo_reset_initiated():
          """Checks for initiation of iLO reset
  
          Invokes the ``get_product_name`` api and returns
              i) True, if exception gets raised as that marks the iLO reset
                 initiation.
              ii) False, if the call gets through without any failure, marking
                  that iLO is yet to be reset.
          """
          try:
              LOG.debug(ribcl_object._('Checking for iLO reset...'))
              ribcl_object.get_product_name()
              return False
          except exception.IloError:
              LOG.debug(ribcl_object._('iLO is being reset...'))
              return True
  
      # Note(deray): wait for 5 secs, before checking if iLO reset got triggered
      # at every interval of 6 secs. This looping call happens for 10 times.
      # Once it comes out of the wait of iLO reset trigger, then it starts
      # waiting for iLO to be up again after reset.
      wait_for_operation_to_complete(
          is_ilo_reset_initiated,
          delay_bw_retries=6,
          delay_before_attempts=5,
          is_silent_loop_exit=True
      )
      wait_for_ilo_after_reset(ribcl_object)