Я пишу скрипт на Python для добавления пользователя (существующего пользователя из провайдера AAD) в DevOps Azure. Для этой цели я использую клиентскую библиотеку Python Azure DevOps.
После аутентификации я могу получить пользователей из Azure Devops как:
# Create a connection to the org
credentials = BasicAuthentication('', personal_access_token)
connection = Connection(base_url=organization_url, creds=credentials)
# Get a client (the "graph" client provides access to list,get and create user)
graph_client = connection.clients_v5_0.get_graph_client()
resp = graph_client.list_users()
# Access the properties of object as object.property
users = resp.graph_users
# Show details about each user in the console
for user in users:
pprint.pprint(user.__dict__)
print("\n")
Как добавить пользователя, использующего это соединение GraphClient?
Для этого есть функция create_user (используется как graph_client.create_user()
): https://github.com/microsoft/azure-devops-python-api/blob/dev/azure-devops/azure/devops/v5_0/graph/graph_client.py
В нем говорится, что запрос должен включать GraphUserCreationContext в качестве входного параметра.
Но как я могу получить этот GraphUserCreationContext для пользователя AAD? В качестве входных данных у меня есть только информация об UPN пользователя AAD.
Примечание:
Я нашел образец .NET для этого здесь: https://github.com/microsoft/azure-devops-dotnet-samples/blob/master/ClientLibrary/Samples/Graph/UsersSample.cs
Он использует GraphUserPrincipalNameCreationContext, который расширяет GraphUserCreationContext.
Но я не смог найти такой класс в клиентской библиотеке Python. Я использовал такой код:
addAADUserContext = GraphUserCreationContext('anaya.john@domain.com')
print(addAADUserContext)
resp = graph_client.create_user(addAADUserContext)
print(resp)
Но получил ошибку:
azure.devops.exceptions.AzureDevOpsServiceError: VS860015: Must have exactly one of originId or principalName set.