/// <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);
            }
        }
Exemplo n.º 2
0
        public void TestInputProviderAndTopLevelResourceTypeAndSubLevelResourceType()
        {
            string resourceType = ResourceTypeUtility.GetTopLevelResourceTypeWithProvider("Microsoft.Compute/virtualMachines/networking");

            Assert.Equal("virtualMachines", resourceType);
        }
Exemplo n.º 3
0
        public void TestInputProviderNull()
        {
            string resourceType = ResourceTypeUtility.GetTopLevelResourceTypeWithProvider(null);

            Assert.Null(resourceType);
        }
Exemplo n.º 4
0
        public void TestInputTopLevelResourceTypeAndSubResourceType()
        {
            string resourceType = ResourceTypeUtility.GetTopLevelResourceType("virtualMachines/networking");

            Assert.Equal("virtualMachines", resourceType);
        }
Exemplo n.º 5
0
        public void TestInputTopLevelResourceTypeSingle()
        {
            string resourceType = ResourceTypeUtility.GetTopLevelResourceType("virtualMachines");

            Assert.Equal("virtualMachines", resourceType);
        }
Exemplo n.º 6
0
        public void TestInputIsNull()
        {
            string resourceType = ResourceTypeUtility.GetTopLevelResourceType(null);

            Assert.Null(resourceType);
        }