def get_info(self, required_info_keys=None):
if not self.is_cache_valid or not self._cache_infoor not self._verify_required_keys(self._cache_info, required_info_keys):<EOL><INDENT>self._cache_ip, self._cache_info = self._fetch_from_sources(required_info_keys)<EOL>self._cache_timestamp = time.time()<EOL><DEDENT>return self._cache_info<EOL>
Round robin through the configured providers until one returns the keys
required, then cache it
:param required_info_keys: The keys required for the fetch to be valid
:type required_info_keys: list(tuple)
:return: The info dictionary returned by the provider
:rtype: dict