code: def get_auth_handler(host, config, provider, requested_capability=None):
      
      ready_handlers = []
      auth_handlers = boto.plugin.get_plugin(AuthHandler, requested_capability)
      total_handlers = len(auth_handlers)
      for handler in auth_handlers:
          try:
              ready_handlers.append(handler(host, config, provider))
          except boto.auth_handler.NotReadyToAuthenticate:
              pass
   
      if not ready_handlers:
          checked_handlers = auth_handlers
          names = [handler.__name__ for handler in checked_handlers]
          raise boto.exception.NoAuthHandlerFound(
                'No handler was ready to authenticate. %d handlers were checked.'
                ' %s ' 
                'Check your credentials' % (len(names), str(names)))
  
      if len(ready_handlers) > 1:
          # NOTE: Even though it would be nice to accept more than one handler
          # by using one of the many ready handlers, we are never sure that each
          # of them are referring to the same storage account. Since we cannot
          # easily guarantee that, it is always safe to fail, rather than operate
          # on the wrong account.
          names = [handler.__class__.__name__ for handler in ready_handlers]
          raise boto.exception.TooManyAuthHandlerReadyToAuthenticate(
                 '%d AuthHandlers %s ready to authenticate for requested_capability '
                 '%s, only 1 expected. This happens if you import multiple '
                 'pluging.Plugin implementations that declare support for the '
                 'requested_capability.' % (len(names), str(names),
                 requested_capability))
  
      return ready_handlers[0]
docs: Finds an AuthHandler that is ready to authenticate.
  
      Lists through all the registered AuthHandlers to find one that is willing
      to handle for the requested capabilities, config and provider.
  
      :type host: string
      :param host: The name of the host
  
      :type config: 
      :param config:
  
      :type provider:
      :param provider:
  
      Returns:
          An implementation of AuthHandler.
  
      Raises:
          boto.exception.NoAuthHandlerFound:
          boto.exception.TooManyAuthHandlerReadyToAuthenticate: