/// <summary> /// Determines the list of api versions currently supported by the RP. /// </summary> /// <param name="context">The azure profile.</param> /// <param name="providerNamespace">The provider namespace.</param> /// <param name="resourceType">The resource type.</param> /// <param name="cancellationToken">The cancellation token.</param> private static string[] GetApiVersionsForResourceType(IAzureContext context, string providerNamespace, string resourceType, CancellationToken cancellationToken, Dictionary <string, string> cmdletHeaderValues = null) { var resourceManagerClient = ResourceManagerClientHelper.GetResourceManagerClient(context, cmdletHeaderValues); var defaultSubscription = context.Subscription; var resourceCollectionId = defaultSubscription == null ? "/providers" : string.Format("/subscriptions/{0}/providers", defaultSubscription.Id); var providers = PaginatedResponseHelper.Enumerate( getFirstPage: () => resourceManagerClient .ListObjectColleciton <ResourceProviderDefinition>( resourceCollectionId: resourceCollectionId, apiVersion: Constants.ProvidersApiVersion, cancellationToken: cancellationToken), getNextPage: nextLink => resourceManagerClient .ListNextBatch <ResourceProviderDefinition>( nextLink: nextLink, cancellationToken: cancellationToken), cancellationToken: cancellationToken); string[] apiVersions = providers .CoalesceEnumerable() .Where(provider => providerNamespace.EqualsInsensitively(provider.Namespace)) .SelectMany(provider => provider.ResourceTypes) .Where(type => resourceType.EqualsInsensitively(type.ResourceType)) .Select(type => type.ApiVersions) .FirstOrDefault(); if (apiVersions == null) { string topLevelResourceType = ResourceTypeUtility.GetTopLevelResourceType(resourceType); return(providers .CoalesceEnumerable() .Where(provider => providerNamespace.EqualsInsensitively(provider.Namespace)) .SelectMany(provider => provider.ResourceTypes) .Where(type => topLevelResourceType.EqualsInsensitively(type.ResourceType)) .Select(type => type.ApiVersions) .FirstOrDefault()); } else { return(apiVersions); } }
public void TestInputProviderAndTopLevelResourceTypeAndSubLevelResourceType() { string resourceType = ResourceTypeUtility.GetTopLevelResourceTypeWithProvider("Microsoft.Compute/virtualMachines/networking"); Assert.Equal("virtualMachines", resourceType); }
public void TestInputProviderNull() { string resourceType = ResourceTypeUtility.GetTopLevelResourceTypeWithProvider(null); Assert.Null(resourceType); }
public void TestInputTopLevelResourceTypeAndSubResourceType() { string resourceType = ResourceTypeUtility.GetTopLevelResourceType("virtualMachines/networking"); Assert.Equal("virtualMachines", resourceType); }
public void TestInputTopLevelResourceTypeSingle() { string resourceType = ResourceTypeUtility.GetTopLevelResourceType("virtualMachines"); Assert.Equal("virtualMachines", resourceType); }
public void TestInputIsNull() { string resourceType = ResourceTypeUtility.GetTopLevelResourceType(null); Assert.Null(resourceType); }