private async Task <string> CreateDeploymentGroupStepAsync() { string groupId = _deviceTag; bool createNewGroup = false; ConsoleEx.WriteLine(ConsoleColor.Yellow, "Querying deployment group..."); try { Response groupResponse = await _managementClient.GetGroupAsync(groupId, new RequestContext()); Console.WriteLine($"Deployment group {groupId} already exists."); } catch (RequestFailedException e) { if (e.Status == (int)HttpStatusCode.NotFound) { createNewGroup = true; } } if (createNewGroup) { ConsoleEx.WriteLine(ConsoleColor.Yellow, "Creating deployment group..."); var group = RequestContent.Create(new { groupId = groupId, groupType = "IoTHubTag", tags = new [] { groupId }, deviceClassId = "0919e3ae422a2bfa8c84ff905813e60351e456d1", createdDateTime = DateTimeOffset.UtcNow.ToString() }); Response groupResponse = await _managementClient.CreateOrUpdateGroupAsync(groupId, group); var groupDoc = JsonDocument.Parse(groupResponse.Content.ToMemory()); if (groupDoc.RootElement.TryGetProperty("value", out var groupValue)) { Console.WriteLine($"Group {groupId} created."); Console.WriteLine(); ConsoleEx.WriteLine(ConsoleColor.Yellow, "Waiting for the group to be populated with devices..."); Console.WriteLine("(this may take about five minutes to complete)"); bool repeat = true; while (repeat) { groupResponse = await _managementClient.GetGroupAsync(groupId, new RequestContext()); if (groupValue.TryGetProperty("deviceCount", out var deviceCountValue) && deviceCountValue.GetInt32() > 0) { Console.WriteLine($"Deployment group {groupId} now has {deviceCountValue.GetInt32()} devices."); repeat = false; } else { Console.Write("."); await Task.Delay(DefaultRetryAfterValue); } } } } Console.WriteLine(); return(groupId); }
public async Task GroupAndDeployment() { DeviceManagementClient client = CreateClient(); string groupid = "joegroup"; /* list groups. */ AsyncPageable <BinaryData> fetchResponse = client.GetGroupsAsync(new RequestContext()); int counter = 0; await foreach (var item in fetchResponse) { Assert.IsNotNull(item); counter++; } Assert.IsTrue(counter > 0); /* create a group. */ var body = new { groupId = groupid, tags = new string[] { groupid }, createdDateTime = "2021-11-17T16:29:56.5770502+00:00", groupType = "DeviceClassIdAndIoTHubTag", deviceClassId = "0919e3ae422a2bfa8c84ff905813e60351e456d1" }; Response createResponse = await client.CreateOrUpdateGroupAsync(groupid, RequestContent.Create(body), new RequestContext()); Assert.IsTrue(createResponse.Status == 200); /* get a group. */ Response getResponse = await client.GetGroupAsync(groupid, new RequestContext()); Assert.IsTrue(getResponse.Status == 200); /* create a deployment. */ string deploymentid = "testdeployment1"; var deploymentBody = new { deploymentId = deploymentid, startDateTime = "2021-09-02T16:29:56.5770502Z", groupId = groupid, updateId = new { provider = "fabrikam", name = "vacuum", version = "2021.1117.1036.48" } }; Response createDeploymentResponse = await client.CreateOrUpdateDeploymentAsync(groupid, deploymentid, RequestContent.Create(deploymentBody), new RequestContext()); Assert.IsTrue(createDeploymentResponse.Status == 200); /* get deployment. */ Response getDepoloymentResponse = await client.GetDeploymentAsync(groupid, deploymentid, new RequestContext()); Assert.IsTrue(getDepoloymentResponse.Status == 200); /* delete deployment. */ Response deleteDeploymentResponse = await client.DeleteDeploymentAsync(groupid, deploymentid, new RequestContext()); Assert.IsTrue(deleteDeploymentResponse.Status == 204); /* delete group. */ Response deleteGroupResponse = await client.DeleteGroupAsync(groupid, new RequestContext()); Assert.IsTrue(deleteGroupResponse.Status == 204); }