Beispiel #1
0
        public async Task <ResourceTagSet[]> ListTagsForHealthChecksAsync(IEnumerable <string> resourceIds, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (resourceIds.IsNullOrEmpty())
            {
                if (resourceIds == null)
                {
                    return(null);
                }
                else
                {
                    return(new ResourceTagSet[0]);
                }
            }
            //Batches can be max 10
            var result = await _locker.Lock(() => resourceIds.Batch(10).ForEachAsync(
                                                b => _client.ListTagsForResourcesAsync(new ListTagsForResourcesRequest()
            {
                ResourceIds  = b.ToList(),
                ResourceType = TagResourceType.Healthcheck
            }, cancellationToken: cancellationToken).EnsureSuccessAsync()
                                                , maxDegreeOfParallelism: _maxDegreeOfParalelism, cancellationToken: cancellationToken)
                                            );

            return(result.SelectMany(x => x.ResourceTagSets).ToArray());
        }