你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

DeviceManagementClient.CreateOrUpdateDeploymentAsync 方法

定义

创建或更新部署。

public virtual System.Threading.Tasks.Task<Azure.Response> CreateOrUpdateDeploymentAsync (string groupId, string deploymentId, Azure.Core.RequestContent content, Azure.RequestContext context = default);
abstract member CreateOrUpdateDeploymentAsync : string * string * Azure.Core.RequestContent * Azure.RequestContext -> System.Threading.Tasks.Task<Azure.Response>
override this.CreateOrUpdateDeploymentAsync : string * string * Azure.Core.RequestContent * Azure.RequestContext -> System.Threading.Tasks.Task<Azure.Response>
Public Overridable Function CreateOrUpdateDeploymentAsync (groupId As String, deploymentId As String, content As RequestContent, Optional context As RequestContext = Nothing) As Task(Of Response)

参数

groupId
String

组标识符。

deploymentId
String

部署标识符。

content
RequestContent

要作为请求正文发送的内容。 请求正文架构的详细信息,请参阅下面的“备注”部分。

context
RequestContext

请求上下文,可以基于每个调用替代客户端管道的默认行为。

返回

从服务返回的响应。 响应正文架构的详细信息,请参阅下面的“备注”部分。

例外

groupIddeploymentIdcontent 为 null。

groupIddeploymentId 是空字符串,预期为非空。

服务返回了非成功状态代码。

示例

此示例演示如何使用所需的参数和请求内容调用 CreateOrUpdateDeploymentAsync,以及如何分析结果。

var credential = new DefaultAzureCredential();
var endpoint = new Uri("<https://my-service.azure.com>");
var client = new DeviceManagementClient(endpoint, "<instanceId>", credential);

var data = new {
    deploymentId = "<deploymentId>",
    startDateTime = "2022-05-10T18:57:31.2311892Z",
    update = new {
        updateId = new {
            provider = "<provider>",
            name = "<name>",
            version = "<version>",
        },
    },
    groupId = "<groupId>",
};

Response response = await client.CreateOrUpdateDeploymentAsync("<groupId>", "<deploymentId>", RequestContent.Create(data));

JsonElement result = JsonDocument.Parse(response.ContentStream).RootElement;
Console.WriteLine(result.GetProperty("deploymentId").ToString());
Console.WriteLine(result.GetProperty("startDateTime").ToString());
Console.WriteLine(result.GetProperty("update").GetProperty("updateId").GetProperty("provider").ToString());
Console.WriteLine(result.GetProperty("update").GetProperty("updateId").GetProperty("name").ToString());
Console.WriteLine(result.GetProperty("update").GetProperty("updateId").GetProperty("version").ToString());
Console.WriteLine(result.GetProperty("groupId").ToString());

此示例演示如何使用所有参数和请求内容调用 CreateOrUpdateDeploymentAsync,以及如何分析结果。

var credential = new DefaultAzureCredential();
var endpoint = new Uri("<https://my-service.azure.com>");
var client = new DeviceManagementClient(endpoint, "<instanceId>", credential);

var data = new {
    deploymentId = "<deploymentId>",
    startDateTime = "2022-05-10T18:57:31.2311892Z",
    update = new {
        updateId = new {
            provider = "<provider>",
            name = "<name>",
            version = "<version>",
        },
    },
    groupId = "<groupId>",
    deviceClassSubgroups = new[] {
        "<String>"
    },
    isCanceled = true,
    isRetried = true,
    rollbackPolicy = new {
        update = new {
            updateId = new {
                provider = "<provider>",
                name = "<name>",
                version = "<version>",
            },
        },
        failure = new {
            devicesFailedPercentage = 1234,
            devicesFailedCount = 1234,
        },
    },
    isCloudInitiatedRollback = true,
};

Response response = await client.CreateOrUpdateDeploymentAsync("<groupId>", "<deploymentId>", RequestContent.Create(data));

JsonElement result = JsonDocument.Parse(response.ContentStream).RootElement;
Console.WriteLine(result.GetProperty("deploymentId").ToString());
Console.WriteLine(result.GetProperty("startDateTime").ToString());
Console.WriteLine(result.GetProperty("update").GetProperty("updateId").GetProperty("provider").ToString());
Console.WriteLine(result.GetProperty("update").GetProperty("updateId").GetProperty("name").ToString());
Console.WriteLine(result.GetProperty("update").GetProperty("updateId").GetProperty("version").ToString());
Console.WriteLine(result.GetProperty("update").GetProperty("description").ToString());
Console.WriteLine(result.GetProperty("update").GetProperty("friendlyName").ToString());
Console.WriteLine(result.GetProperty("groupId").ToString());
Console.WriteLine(result.GetProperty("deviceClassSubgroups")[0].ToString());
Console.WriteLine(result.GetProperty("isCanceled").ToString());
Console.WriteLine(result.GetProperty("isRetried").ToString());
Console.WriteLine(result.GetProperty("rollbackPolicy").GetProperty("update").GetProperty("updateId").GetProperty("provider").ToString());
Console.WriteLine(result.GetProperty("rollbackPolicy").GetProperty("update").GetProperty("updateId").GetProperty("name").ToString());
Console.WriteLine(result.GetProperty("rollbackPolicy").GetProperty("update").GetProperty("updateId").GetProperty("version").ToString());
Console.WriteLine(result.GetProperty("rollbackPolicy").GetProperty("update").GetProperty("description").ToString());
Console.WriteLine(result.GetProperty("rollbackPolicy").GetProperty("update").GetProperty("friendlyName").ToString());
Console.WriteLine(result.GetProperty("rollbackPolicy").GetProperty("failure").GetProperty("devicesFailedPercentage").ToString());
Console.WriteLine(result.GetProperty("rollbackPolicy").GetProperty("failure").GetProperty("devicesFailedCount").ToString());
Console.WriteLine(result.GetProperty("isCloudInitiatedRollback").ToString());

注解

下面是请求和响应有效负载的 JSON 架构。

请求正文:

Deployment架构:

{
              deploymentId: string, # Required. The caller-provided deployment identifier. This cannot be longer than 73 characters, must be all lower-case, and cannot contain '&', '^', '[', ']', '{', '}', '|', '<', '>', forward slash, backslash, or double quote. The Updates view in the Azure Portal IoT Hub resource generates a GUID for deploymentId when you create a deployment.
              startDateTime: string (ISO 8601 Format), # Required. The deployment start datetime.
              update: {
                updateId: {
                  provider: string, # Required. Update provider.
                  name: string, # Required. Update name.
                  version: string, # Required. Update version.
                }, # Required. Update identifier.
                description: string, # Optional. Update description.
                friendlyName: string, # Optional. Friendly update name.
              }, # Required. Update information for the update in the deployment.
              groupId: string, # Required. The group identity for the devices the deployment is intended to update.
              deviceClassSubgroups: [string], # Optional. The device class subgroups the deployment is compatible with and subgroup deployments have been created for. This is not provided by the caller during CreateOrUpdateDeployment but is automatically determined by Device Update
              isCanceled: boolean, # Optional. Boolean flag indicating whether the deployment was canceled.
              isRetried: boolean, # Optional. Boolean flag indicating whether the deployment has been retried.
              rollbackPolicy: {
                update: UpdateInfo, # Required. Update to rollback to.
                failure: {
                  devicesFailedPercentage: number, # Required. Percentage of devices that failed.
                  devicesFailedCount: number, # Required. Number of devices that failed.
                }, # Required. Failure conditions to initiate rollback policy.
              }, # Optional. The rollback policy for the deployment.
              isCloudInitiatedRollback: boolean, # Optional. Boolean flag indicating whether the deployment is a rollback deployment.
            }

响应正文:

Deployment架构:

{
              deploymentId: string, # Required. The caller-provided deployment identifier. This cannot be longer than 73 characters, must be all lower-case, and cannot contain '&', '^', '[', ']', '{', '}', '|', '<', '>', forward slash, backslash, or double quote. The Updates view in the Azure Portal IoT Hub resource generates a GUID for deploymentId when you create a deployment.
              startDateTime: string (ISO 8601 Format), # Required. The deployment start datetime.
              update: {
                updateId: {
                  provider: string, # Required. Update provider.
                  name: string, # Required. Update name.
                  version: string, # Required. Update version.
                }, # Required. Update identifier.
                description: string, # Optional. Update description.
                friendlyName: string, # Optional. Friendly update name.
              }, # Required. Update information for the update in the deployment.
              groupId: string, # Required. The group identity for the devices the deployment is intended to update.
              deviceClassSubgroups: [string], # Optional. The device class subgroups the deployment is compatible with and subgroup deployments have been created for. This is not provided by the caller during CreateOrUpdateDeployment but is automatically determined by Device Update
              isCanceled: boolean, # Optional. Boolean flag indicating whether the deployment was canceled.
              isRetried: boolean, # Optional. Boolean flag indicating whether the deployment has been retried.
              rollbackPolicy: {
                update: UpdateInfo, # Required. Update to rollback to.
                failure: {
                  devicesFailedPercentage: number, # Required. Percentage of devices that failed.
                  devicesFailedCount: number, # Required. Number of devices that failed.
                }, # Required. Failure conditions to initiate rollback policy.
              }, # Optional. The rollback policy for the deployment.
              isCloudInitiatedRollback: boolean, # Optional. Boolean flag indicating whether the deployment is a rollback deployment.
            }

适用于