in azure-devops/azext_devops/dev/common/identities.py [0:0]
def resolve_identity(identity_filter, organization):
"""Takes an identity name, email, alias, or id, and returns the identity.
"""
if identity_filter is None:
return None
if identity_filter.lower() == ME:
return get_current_identity(organization)
identity_client = get_identity_client(organization)
if identity_filter.find(' ') > 0 or identity_filter.find('@') > 0:
identities = identity_client.read_identities(search_filter='General',
filter_value=identity_filter)
if identities is None or not identities:
identities = identity_client.read_identities(search_filter='DirectoryAlias',
filter_value=identity_filter)
else:
identities = identity_client.read_identities(search_filter='DirectoryAlias',
filter_value=identity_filter)
if identities is None or not identities:
identities = identity_client.read_identities(search_filter='General',
filter_value=identity_filter)
if not identities:
raise CLIError('Could not resolve identity: ' + identity_filter)
if len(identities) > 1:
# prefer users with same domain
identities_with_tenant = []
for identity in identities:
if 'Domain' in identity.properties and '$value' in identity.properties['Domain']:
current_user = get_current_identity(organization)
if 'Domain' in current_user.properties and '$value' in current_user.properties['Domain']\
and identity.properties['Domain']['$value'] ==\
current_user.properties['Domain']['$value']:
identities_with_tenant.append(identity)
if len(identities_with_tenant) == 1:
return identities_with_tenant[0]
raise CLIError('There are multiple identities found for "' + identity_filter + '" '
'Please provide a more specific identifier for this identity.')
return identities[0]