def METHOD_NAME(self, federation):
    """Loads metadata of federated IdPs from the specified metadata service.
    :param federation: SAML federation where loaded IdPs belong to
    :type federation: api.saml.metadata.federations.model.SAMLFederation
    :return: List of SAMLFederatedIdP objects
    :rtype: Iterable[api.saml.configuration.SAMLFederatedIdentityProvider]
    """
    if not isinstance(federation, SAMLFederation):
        raise ValueError(
            "Argument 'federation' must be an instance of {0} class".format(
                SAMLFederation
            )
        )
    self._logger.info("Started loading federated IdP's for {0}".format(federation))
    federated_idps = []
    metadata = self._loader.load_idp_metadata(federation.idp_metadata_service_url)
    self._validator.validate(federation, metadata)
    parsing_results = self._parser.parse(metadata)
    for parsing_result in parsing_results:
        idp = parsing_result.provider
        if idp.ui_info.display_names:
            display_name = self._try_to_get_an_english_value(
                idp.ui_info.display_names
            )
        elif idp.organization.organization_display_names:
            display_name = self._try_to_get_an_english_value(
                idp.organization.organization_display_names
            )
        elif idp.organization.organization_names:
            display_name = self._try_to_get_an_english_value(
                idp.organization.organization_names
            )
        else:
            display_name = idp.entity_id
        xml_metadata = tostring(parsing_result.xml_node, encoding="unicode")
        federated_idp = SAMLFederatedIdentityProvider(
            federation, idp.entity_id.strip(), display_name.strip(), xml_metadata
        )
        federated_idps.append(federated_idp)
    self._logger.info(
        "Finished loading {0} federated IdP's for {1}".format(
            len(federated_idps), federation
        )
    )
    return federated_idps