public async virtual Task <Response <GenericResource> > SetTagsAsync(IDictionary <string, string> tags, CancellationToken cancellationToken = default) { if (tags == null) { throw new ArgumentNullException(nameof(tags), $"{nameof(tags)} provided cannot be null."); } using var scope = _clientDiagnostics.CreateScope("GenericResource.SetTags"); scope.Start(); try { var apiVersion = await GetApiVersionAsync(cancellationToken).ConfigureAwait(false); await TagResource.DeleteAsync(true, cancellationToken : cancellationToken).ConfigureAwait(false); var originalTags = await TagResource.GetAsync(cancellationToken).ConfigureAwait(false); originalTags.Value.Data.Properties.TagsValue.ReplaceWith(tags); await TagResource.CreateOrUpdateAsync(true, originalTags.Value.Data, cancellationToken : cancellationToken).ConfigureAwait(false); var originalResponse = await _resourcesRestClient.GetByIdAsync(Id, apiVersion, cancellationToken).ConfigureAwait(false); return(Response.FromValue(new GenericResource(ArmClient, originalResponse.Value), originalResponse.GetRawResponse())); } catch (Exception e) { scope.Failed(e); throw; } }
public virtual async Task <Response <ResourceGroup> > SetTagsAsync(IDictionary <string, string> tags, CancellationToken cancellationToken = default) { Argument.AssertNotNull(tags, nameof(tags)); using var scope = _resourceGroupClientDiagnostics.CreateScope("ResourceGroup.SetTags"); scope.Start(); try { await TagResource.DeleteAsync(WaitUntil.Completed, cancellationToken : cancellationToken).ConfigureAwait(false); var originalTags = await TagResource.GetAsync(cancellationToken).ConfigureAwait(false); originalTags.Value.Data.TagValues.ReplaceWith(tags); await TagResource.CreateOrUpdateAsync(WaitUntil.Completed, originalTags.Value.Data, cancellationToken : cancellationToken).ConfigureAwait(false); var originalResponse = await _resourceGroupRestClient.GetAsync(Id.SubscriptionId, Id.ResourceGroupName, cancellationToken).ConfigureAwait(false); return(Response.FromValue(new ResourceGroup(Client, originalResponse.Value), originalResponse.GetRawResponse())); } catch (Exception e) { scope.Failed(e); throw; } }