Что такое эквивалент C-Get-AzureRmResource в .NET SDK для Azure? - PullRequest
0 голосов
/ 16 января 2019

Я хотел бы знать, есть ли какой-либо метод .NET для получения всех ресурсов по подписке.Это доступно в PowerShell в командлете: Get-AzureRmResource.

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Как сказали бы англичане, Горе!

TL; DR

Попробуйте:

using Microsoft.Azure.Management.ResourceManager.Fluent;
...

var rm = ResourceManager.                    
                .Configure()
                .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                .Authenticate(credentials)
                .WithDefaultSubscription();

var resources= rm.GenericResources.List();

foreach(IGenericResource res in resources)
{
    ....
}

TL; DR 2

Некоторые комментарии указывают на метод расширения ResourceOperationsExtensions.List . Для этого требуется экземпляр IResourceOpearations. Это доступно через IResourceManagementClient.Resources . Это доступно через свойство ResourceManager.Inner :

var rmOps=rm.Inner.Resources;
var resources = rmOps.List(someODataQuery);

Длинная версия

Управление Azure работает путем предоставления интерфейсов REST. В конце концов, и Azure SDK, и командлеты Powershell будут вызывать этот интерфейс REST. Вы можете использовать Fiddler или другой отладочный прокси для захвата и повторного использования

Командлеты Powershell реализованы поверх SDK, что означает, что вы можете посмотреть на сам исходный код .

В командлете используется метод ResourceManagerSdkClient класса ListResources с запросом OData, сгенерированным из его параметров:

result = this.ResourceManagerSdkClient.ListResources(odataQuery);

К сожалению, это не помогает, поскольку командлеты используют свои собственные низкоуровневые абстракции, в то время как библиотеки Azure RM используют различные абстракции и интерфейсы. ListResources говорит нам, что нам нужно запросить GenericResource.

Репозиторий Azure Resource Manager размещен на Github. Документация не показывает, как добраться до ResourceManager . Поиск в самом репо показывает, как ResourceManager используется в тестах .

ResourceManager.GenericResources предоставляет доступ к тем же универсальным ресурсам, которые использует команда Powershell. Тип этого свойства IGenericResources , который, в свою очередь, реализует ISupportsListing , который дает нам доступ к List

Документы не дают понять, реализованы ли эти интерфейсы явно. Код может нуждаться в явном приведении.

IGenericResources также реализует ISupportsListingByResourceGroup и ISupportsListingInResourceGroupByTag, которые можно использовать для поиска по группам ресурсов и тегам.

Поиск в Google для ResourceManager.GenericResources или GenericResources.List() и т. Д. Не дает релевантных результатов. Термины слишком ... общие.

Я думаю, что сейчас сделаю перерыв.

0 голосов
/ 16 января 2019

Я думаю, что вы ищете Azure Resource Manager libraries for .NET, подробности в этом документе .

А в GitHub есть пример проекта, который вы можете скачать и использовать для тестирования. В этом примере проекта вы можете создать / обновить / список ресурсов (что эквивалентно get-AzureRmResource )

...