Esempio n. 1
0
        /// <summary>
        /// Returns the API version to use for getting data for resources of the specified provider and type.
        /// This method always returns the latest API version that is not a preview version.
        /// </summary>
        /// <param name="client">The ARM client.</param>
        /// <param name="provider">The provider name.</param>
        /// <param name="type">The resource type.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>A <see cref="Task{TResult}"/>, returning the API version.</returns>
        private async Task <string> GetLatestApiVersionAsync(ResourceManagementClient client, string provider, string type, CancellationToken cancellationToken)
        {
            ProviderInner providerInformation = await this.GetProviderInformationAsync(client, provider, cancellationToken);

            ProviderResourceType providerResourceType = providerInformation.ResourceTypes.FirstOrDefault(resourceType => resourceType.ResourceType.Equals(type, StringComparison.CurrentCultureIgnoreCase));

            if (providerResourceType == null)
            {
                throw new ArgumentException($"Provider {provider} does not support type {type}");
            }

            return(providerResourceType.ApiVersions.Where(version => version.Contains("preview") == false).Max());
        }
        public async Task <string> GetApiVersion(string type)
        {
            string resourceProvider = type.Split('/')[0];
            string resourceType     = type.TrimStart(resourceProvider.ToCharArray()).TrimStart('/');

            if (_apiVersions.ContainsKey(resourceType))
            {
                return(_apiVersions[resourceType]);
            }

            try
            {
                ProviderInner provider = await _client.Providers.GetAsync(resourceProvider);

                var resourceApi = provider.ResourceTypes.Where(x => x.ResourceType == resourceType).FirstOrDefault().ApiVersions[0];
                _apiVersions.Add(resourceType, resourceApi);
                return(resourceApi);
            }
            catch (Exception ex) { throw (ex); }
        }
 private IProvider WrapModel(ProviderInner innerModel)
 {
     return(new ProviderImpl(innerModel));
 }
Esempio n. 4
0
 private IEnumerable <KeyValuePair <string, string> > GetApiVersion(ProviderInner provider)
 {
     return(provider.ResourceTypes.Select(r => new KeyValuePair <string, string>(
                                              $"{provider.NamespaceProperty}/{r.ResourceType}",
                                              SelectApiVersion(r.ApiVersions))));
 }
        public async Task <IProvider> GetByNameAsync(string resourceProviderNamespace, CancellationToken cancellationToken = default(CancellationToken))
        {
            ProviderInner inner = await client.GetAsync(resourceProviderNamespace, cancellationToken : cancellationToken);

            return(new ProviderImpl(inner));
        }