---
sourceDocument: Xanadu IT Operations Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/it-operations-management

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Xanadu IT Operations Management

ft:clusterId :

    - itom

bundleId :

    - itom

workflow :

    - Technology


---

# Exemplo de processador de resposta do servidor virtual

# Exemplo de processador de resposta do servidor virtual {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 min. de leitura

O script Create_Virtual_Server_Response_Processor, que está disponível por padrão em Cloud Provisioning and Governance, é o processador de resposta que trata a criação de ICs de máquina virtual da AWS.

## Criar servidor virtual {#response-processor-example__section_q5y_xt3_v2b}

O script do processador de recursos Create_Virtual_Server_Response_Processor está disponível por padrão no bloco de recursos do Servidor Virtual. Seu trabalho é criar um registro de servidor virtual na tabela Instância de máquina virtual \[cmdb_ci_vm_instance\] quando um novo servidor virtual é provisionado.  
Todos os processadores de resposta têm a primeira linha com estes parâmetros comuns:

    function processResponse(response, cloudServiceAccountId, ldc, correlationId,step, requestorContext) {

Isso traz a resposta do provedor de nuvem e as informações importantes, como o ID da conta, que são necessárias para o novo IC que o sistema pode criar. Todos esses parâmetros são necessários para todos os processadores de resposta.

A linha 10 analisa a resposta em JSON para que o sistema possa processá-la. As informações são mantidas na variável vmResponse:  


    var vmResponse = global.JSON.parse(response);

Sempre que você cria ou edita um processador de resposta, é preciso saber quais entradas são necessárias para o tipo de IC. A linha 11 trata uma das entradas necessárias, o ID de hardware, que o registro CMDB requer:  


    var hardwareId = vmResponse.hardwareId;

A linha 39 mostra as informações necessárias para o sistema identificar o novo servidor virtual e os ICs relacionados, para que as informações possam ser colocadas no CMDB. Nesse caso, o ID do objeto da conta de serviço identifica a conta associada ao servidor virtual, o ID do objeto do datacenter identifica o datacenter no qual o servidor virtual reside e o ID do objeto da instância da máquina virtual identifica o próprio servidor virtual. Este bloco de código de identificação evita a criação de ICs duplicados.  


    var vmInfo = {
        "cmdb_ci_vm_instance": {
          "validator": "virtual_machine_create_update_validator",
          "validator_overrides": {},
          "identification": {
            "cmdb_ci_cloud_service_account": {
              "criterion": {
                "object_id": cloudServiceAccountId
              }
            },
            "cmdb_ci_aws_datacenter": {
              "criterion": {
                "object_id": ldc
              }
            },
            "cmdb_ci_vm_instance": {
              "criterion": {
                "object_id": vmResponse.nodeId
              }
            }
          },

Os atributos são preenchidos nos campos na tabela cmdb_ci_vm_instance. Esses atributos são definidos na linha 61:  


    "attributes": {
      "name": vmResponse.nodeName,
      "object_id": vmResponse.nodeId,
      "state": status_map[vmResponse.state],
      "dns_suffix": vmResponse.dnsSuffix,
      "cpus": vmCPUs,
      "memory": vmMemory,
      "disks": vmResponse.volumes.length,
      "disks_size": "",
      "nics": vmResponse.networkInterfaces.length,
      "terminated_on": "",
      "termination_protection": "",
      "ip_address": vmPubIPAddr,
      "assigned_to": reqContext.userId,
      "assignment_group": reqContext.groupId
    },

Referências a outros ICs também podem ser incluídas no processador de resposta. Nesse caso, o modelo de SO no qual o servidor virtual se baseia é identificado primeiro pela identificação do ID de objeto da conta de serviço e o datacenter junto com o modelo de SO real.  


    "references": {
      "cmdb_ci_os_template": {
        "identification": {
          "cmdb_ci_cloud_service_account": {
            "criterion": {
              "object_id": cloudServiceAccountId
            }
          },
          "cmdb_ci_aws_datacenter": {
            "criterion": {
              "object_id": ldc
            }
          },
          "cmdb_ci_os_template": {
            "criterion": {
              "object_id": imageIdTrim
            }
          }
        },

O bloco de código a seguir adiciona o ID do objeto da imagem do SO à lista de atributos para que essas informações possam ser preenchidas no registro do CMDB do servidor virtual.  


    "attributes": {
      "object_id": imageIdTrim
    }

Este bloco de código executa identificação adicional no modelo de computação (o tipo de hardware) e, em seguida, a adiciona aos atributos:  


    "cmdb_ci_compute_template": {
      "identification": {
        "cmdb_ci_cloud_service_account": {
          "criterion": {
            "object_id": cloudServiceAccountId
          }
        },
        "cmdb_ci_aws_datacenter": {
          "criterion": {
            "object_id": ldc
          }
        },
        "cmdb_ci_compute_template": {
          "criterion": {
            "object_id": vmResponse.hardwareId
          }
        }
      },
      "attributes": {
        "object_id": vmResponse.hardwareId,
        "name": vmResponse.hardwareId
      }
    }

Seções de código adicionais fazem o relacionamento com as interfaces de rede e identificam qualquer armazenamento anexado ao servidor virtual.

Este bloco de código obrigatório envia os dados por push para o CMDB e retorna a cadeia de caracteres JSON:  


    cloudModelString.push(vmInfo);
    return global.JSON.stringify(cloudModelString);


