Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }