Exemplo de processador de resposta do servidor virtual

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 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

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