public async static Task<string> GetLatestAPIVersion(ResourceManagementClient client, string resourceId, string apiVersion = null)
{
if (apiVersion == null)
{
var parameters = new Microsoft.Azure.Management.Resources.Models.ProviderListParameters();
var listProvidersResponse = await client.Providers.ListAsync(parameters).ConfigureAwait(continueOnCapturedContext: false);
var identity = GetIdentityFromId(resourceId, apiVersion);
var provider = listProvidersResponse.Providers.Where(x => x.Namespace.Equals(identity.ResourceProviderNamespace)).FirstOrDefault();
if (provider == null)
{
throw new InvalidOperationException("This is not a valid resource provider namespace");
}
var type = provider.ResourceTypes.Where(x => x.Name.Equals(identity.ResourceType)).FirstOrDefault();
if (type == null)
{
throw new InvalidOperationException("This is not a valid resource type");
}
apiVersion = type.ApiVersions.OrderByDescending(x => x).FirstOrDefault();
}
return apiVersion;
}