如何搜索不区分大小写的OpenStack用户?

问题描述

我有一个连接到LDAP的OpenStack云(我无法控制它,并且在查询时不返回匹配的大小写),其中Keystone的用户为'UserNaMe',如果我使用此代码搜索用户, ID返回:

conn = openstack.connect(cloud)
pprint(conn.identity.find_user('UserNaMe'))

但是,如果我搜索用户名不正确,则不会返回ID:

pprint(conn.identity.find_user('username'))

由于https://docs.openstack.org/openstacksdk/latest/user/proxies/identity_v3.html#user-operations文档不是特定的,如何使搜索不区分大小写,以便始终获得正确的用户ID?

Horizo​​n似乎对“用户名”而不是“ UserNaMe”没有问题,因此必须有一种不敏感的搜索方式。

解决方法

一种选择是检查Horizon source并查看其如何处理用户搜索。

另一个选择是遍历用户列表并执行不区分大小写的比较。例如:

want_user = 'UserNaMe'

found_user = [user for user in conn.identity.users()
              if user.name.lower() == want_user.lower()]