/// <summary> /// Update metadata of DigitalTwinsInstance. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group that contains the DigitalTwinsInstance. /// </param> /// <param name='resourceName'> /// The name of the DigitalTwinsInstance. /// </param> /// <param name='digitalTwinsPatchDescription'> /// The DigitalTwinsInstance and security metadata. /// </param> public static DigitalTwinsDescription BeginUpdate(this IDigitalTwinsOperations operations, string resourceGroupName, string resourceName, DigitalTwinsPatchDescription digitalTwinsPatchDescription) { return(operations.BeginUpdateAsync(resourceGroupName, resourceName, digitalTwinsPatchDescription).GetAwaiter().GetResult()); }
/// <summary> /// Update metadata of DigitalTwinsInstance. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group that contains the DigitalTwinsInstance. /// </param> /// <param name='resourceName'> /// The name of the DigitalTwinsInstance. /// </param> /// <param name='digitalTwinsPatchDescription'> /// The DigitalTwinsInstance and security metadata. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <DigitalTwinsDescription> BeginUpdateAsync(this IDigitalTwinsOperations operations, string resourceGroupName, string resourceName, DigitalTwinsPatchDescription digitalTwinsPatchDescription, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginUpdateWithHttpMessagesAsync(resourceGroupName, resourceName, digitalTwinsPatchDescription, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
public async Task TestDigitalTwinsLifecycle() { using var context = MockContext.Start(GetType()); Initialize(context); // Create Resource Group ResourceGroup rg = await ResourcesClient.ResourceGroups.CreateOrUpdateAsync( DefaultResourceGroupName, new ResourceGroup { Location = DefaultLocation, }); try { // Check if instance exists and delete CheckNameResult dtNameCheck = await DigitalTwinsClient.DigitalTwins.CheckNameAvailabilityAsync( DefaultLocation, DefaultInstanceName); if (!dtNameCheck.NameAvailable.Value) { DigitalTwinsDescription dtDelete = await DigitalTwinsClient.DigitalTwins.DeleteAsync( rg.Name, DefaultInstanceName); dtDelete.ProvisioningState.Should().Be(ProvisioningState.Deleted); dtNameCheck = await DigitalTwinsClient.DigitalTwins.CheckNameAvailabilityAsync( DefaultLocation, DefaultInstanceName); dtNameCheck.NameAvailable.Should().BeTrue(); } // Create DigitalTwins resource var dtInstance = await DigitalTwinsClient.DigitalTwins.CreateOrUpdateAsync( rg.Name, DefaultInstanceName, new DigitalTwinsDescription { Location = DefaultLocation, }); try { dtInstance.Should().NotBeNull(); dtInstance.Name.Should().Be(DefaultInstanceName); dtInstance.Location.Should().Be(DefaultLocation); // Add and Get Tags const string key2 = "key2"; const string value2 = "value2"; var patch = new DigitalTwinsPatchDescription( tags: new Dictionary <string, string> { { "key1", "value1" }, { key2, value2 }, }); dtInstance = await DigitalTwinsClient.DigitalTwins.UpdateAsync( rg.Name, dtInstance.Name, patch); dtInstance.Should().NotBeNull(); dtInstance.Tags.Count().Should().Be(2); dtInstance.Tags[key2].Should().Be(value2); // List DigitalTwins instances in Resource Group var twinsResources = await DigitalTwinsClient.DigitalTwins.ListByResourceGroupAsync(rg.Name); twinsResources.Count().Should().BeGreaterThan(0); // Get all of the available operations, ensure CRUD var operationList = await DigitalTwinsClient.Operations.ListAsync(); operationList.Count().Should().BeGreaterThan(0); Assert.Contains(operationList, e => e.Name.Equals($"Microsoft.DigitalTwins/digitalTwinsInstances/read", StringComparison.OrdinalIgnoreCase)); Assert.Contains(operationList, e => e.Name.Equals($"Microsoft.DigitalTwins/digitalTwinsInstances/write", StringComparison.OrdinalIgnoreCase)); Assert.Contains(operationList, e => e.Name.Equals($"Microsoft.DigitalTwins/digitalTwinsInstances/delete", StringComparison.OrdinalIgnoreCase)); // Test other operations // Register Operation var registerOperations = operationList.Where(e => e.Name.Contains($"Microsoft.DigitalTwins/register")); registerOperations.Count().Should().BeGreaterThan(0); // Twin Operations var twinOperations = operationList.Where(e => e.Name.Contains($"Microsoft.DigitalTwins/digitaltwins")); twinOperations.Count().Should().BeGreaterThan(0); // Event Route Operations var eventRouteOperations = operationList.Where(e => e.Name.Contains($"Microsoft.DigitalTwins/eventroutes")); eventRouteOperations.Count().Should().BeGreaterThan(0); // Model operations var modelOperations = operationList.Where(e => e.Name.Contains($"Microsoft.DigitalTwins/models")); modelOperations.Count().Should().BeGreaterThan(0); } finally { // Delete instance DigitalTwinsDescription deleteOp = await DigitalTwinsClient.DigitalTwins.BeginDeleteAsync( rg.Name, dtInstance.Name); deleteOp.ProvisioningState.Should().Be(ProvisioningState.Deleting); } } finally { await ResourcesClient.ResourceGroups.DeleteAsync(rg.Name); } }