Compartilhar via


DeviceManagementClient.CreateOrUpdateDeploymentAsync Método

Definição

Cria ou atualiza uma implantação.

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)

Parâmetros

groupId
String

Identificador de grupo.

deploymentId
String

Identificador de implantação.

content
RequestContent

O conteúdo a ser enviado como o corpo da solicitação. Os detalhes do esquema do corpo da solicitação estão na seção Comentários abaixo.

context
RequestContext

O contexto de solicitação, que pode substituir os comportamentos padrão do pipeline do cliente por chamada.

Retornos

A resposta retornada do serviço. Os detalhes do esquema do corpo da resposta estão na seção Comentários abaixo.

Exceções

groupId, deploymentId ou content é nulo.

groupId ou deploymentId é uma cadeia de caracteres vazia e esperava-se que não estivesse vazia.

O serviço retornou um código de status sem êxito.

Exemplos

Este exemplo mostra como chamar CreateOrUpdateDeploymentAsync com os parâmetros necessários e o conteúdo da solicitação e como analisar o resultado.

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());

Este exemplo mostra como chamar CreateOrUpdateDeploymentAsync com todos os parâmetros e conteúdo da solicitação e como analisar o resultado.

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());

Comentários

Abaixo está o esquema JSON para os conteúdos de solicitação e resposta.

Corpo da solicitação:

Esquema para 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.
            }

Corpo da resposta:

Esquema para 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.
            }

Aplica-se a