Как получить GraphUserPrincipalNameCreationContext для пользователя AAD?

Мне нужно создать нового пользователя в Azure DevOps, используя клиентскую библиотеку python для Azure DevOps REST API.

Я написал следующий код:

from azure.devops.connection import Connection
from azure.devops.v5_0.graph.models import GraphUserCreationContext
from msrest.authentication import BasicAuthentication

credentials = BasicAuthentication('', personal_access_token)
connection = Connection(base_url=organization_url, creds=credentials)

graph_client = connection.clients_v5_0.get_graph_client()

addAADUserContext = GraphUserCreationContext("[email protected]")
print(addAADUserContext)

resp = graph_client.create_user(addAADUserContext)
print(resp) 

Получаю вывод:

{'additional_properties': {}, 'storage_key': '[email protected]'}

И при вызове метода create_user возникает ошибка:

azure.devops.exceptions.AzureDevOpsServiceError: VS860015: Must have exactly one of originId or principalName set.

Собственно, что я должен передать GraphUserPrincipalNameCreationContext функции create_user.

Я нашел образец .NET, который делает это в функции с именем AddRemoveAADUserByUPN (): https://github.com/microsoft/azure-devops-dotnet-samples/blob/master/ClientLibrary/Samples/Graph/UsersSample.cs < / а>

GraphUserPrincipalNameCreationContext - это интерфейс в этом примере. Но питон не поддерживает интерфейсы.

Итак, как это реализовать на Python?


person AnjanaDyna    schedule 14.06.2019    source источник


Ответы (1)


Некоторые классы, такие как GraphUserPrincipalNameCreationContext, в настоящее время недоступны в клиентском API Python. Они над этим работают. Вы можете отслеживать проблему здесь, в репозитории GitHub: https://github.com/microsoft/azure-devops-python-api/issues/176

Вы можете использовать Права пользователя - Добавить REST API для azure DevOps вместо Graph API. Для этого вы можете использовать следующий клиент Python:

https://github.com/microsoft/azure-devops-python-api/tree/dev/azure-devops/azure/devops/v5_0/member_entitlement_management

Вы можете обратиться к образцу, приведенному в следующем вопросе, чтобы узнать, как использовать упомянутый клиент python:

Невозможно десериализовать в объект: тип, KeyError: 'ключ: int; значение: str '

person AnjanaDyna    schedule 24.06.2019