+ if filter_q.get("domain_name"):
+ filter_domain = self._get_domain_id(
+ filter_q["domain_name"], fail_if_not_found=False
+ )
+ # If domain is not found, use the same name to obtain an empty list
+ filter_domain = filter_domain or filter_q["domain_name"]
+ if filter_q.get("domain_id"):
+ filter_domain = filter_q["domain_id"]
+
+ users = self.keystone.users.list(name=filter_name, domain=filter_domain)
+ # get users from user_domain_name_list[1:], because it will not be provided in case of LDAP
+ if filter_domain is None and len(self.user_domain_name_list) > 1:
+ for user_domain in self.user_domain_name_list[1:]:
+ domain_id = self._get_domain_id(
+ user_domain, fail_if_not_found=False
+ )
+ if not domain_id:
+ continue
+ # find if users of this domain are already provided. In this case ignore
+ for u in users:
+ if u.domain_id == domain_id:
+ break
+ else:
+ users += self.keystone.users.list(
+ name=filter_name, domain=domain_id
+ )
+
+ # if filter name matches a user id, provide it also
+ if filter_name:
+ try:
+ user_obj = self.keystone.users.get(filter_name)
+ if user_obj not in users:
+ users.append(user_obj)
+ except Exception:
+ pass
+
+ users = [
+ {
+ "username": user.name,
+ "_id": user.id,
+ "id": user.id,
+ "_admin": user.to_dict().get("_admin", {}), # TODO: REVISE
+ "domain_name": self.domains_id2name.get(user.domain_id),
+ }
+ for user in users
+ if user.name != self.admin_username
+ ]