Как получить GraphUserPrincipalNameCreationContext для пользователя AAD? - PullRequest
1 голос
/ 14 июня 2019

Мне нужно создать нового пользователя в Azure Devops, используя клиентскую библиотеку Python для API-интерфейса REST Azure DevOps.

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

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("anaya.john@mydomain.com")
print(addAADUserContext)

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

Я получил вывод:

{'additional_properties': {}, 'storage_key': 'anaya.john@dynactionize.onmicrosoft.com'}

При вызове метода 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 не поддерживает интерфейсы.

Так как же реализовать это в python?

1 Ответ

1 голос
/ 24 июня 2019

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

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

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

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

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

...