Exemple de processeur de réponses du serveur virtuel

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 2 minutes de lecture
  • Le script Create_Virtual_Server_Response_Processor, disponible par défaut dans Cloud Provisioning and Governance, est le processeur de réponses qui gère la création de CI d'ordinateurs virtuels AWS.

    Créer un serveur virtuel

    Le script de processeur de ressources Create_Virtual_Server_Response_Processor est disponible par défaut sur le bloc de ressources du serveur virtuel. Son rôle consiste à créer un enregistrement de serveur virtuel dans la table Instance d'ordinateur virtuel [cmdb_ci_vm_instance] lorsqu'un nouveau serveur virtuel est mis en service.

    Tous les processeurs de réponses ont cette première ligne avec ces paramètres communs :
    function processResponse(response, cloudServiceAccountId, ldc, correlationId,step, requestorContext) {
    

    Cela apporte la réponse du fournisseur dans le cloud et les informations importantes, telles que l'ID de compte, requises pour le nouveau CI que le système peut créer. Tous ces paramètres sont requis pour tous les processeurs de réponses.

    La ligne 10 analyse la réponse au format JSON afin que le système puisse la traiter. Les informations sont conservées dans la variable vmResponse :

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

    Chaque fois que vous créez ou modifiez un processeur de réponses, vous devez savoir quelles entrées sont nécessaires pour le type de CI. La ligne 11 gère l'une des entrées nécessaires, l'ID de matériel, dont l'enregistrement CMDB a besoin :

    
    var hardwareId = vmResponse.hardwareId;
    

    La ligne 39 affiche les informations requises pour que le système identifie le nouveau serveur virtuel et les CI associés, afin que les informations puissent être placées dans la CMDB. Dans ce cas, l'ID d'objet de compte de services identifie le compte associé au serveur virtuel, l'ID d'objet du centre de données identifie le centre de données dans lequel le serveur virtuel vit et l'ID d'objet d'instance d'ordinateur virtuel identifie le serveur virtuel lui-même. Ce bloc de code d'identification empêche la création de CI en double.

    
    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
              }
            }
          },

    Les attributs sont renseignés dans les champs de la table cmdb_ci_vm_instance. Ces attributs sont définis à la ligne 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
    },
    

    Les références à d'autres CI peuvent également être incluses dans le processeur de réponses. Dans ce cas, le modèle de système d'exploitation sur lequel le serveur virtuel est basé est identifié d'abord par l'identification de l'ID d'objet du compte de services et du centre de données ainsi que le modèle de système d'exploitation réel.

    
    "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
            }
          }
        },

    Le bloc de code suivant ajoute l'ID d'objet de l'image de système d'exploitation à la liste d'attributs afin que ces informations puissent être renseignées dans l'enregistrement CMDB du serveur virtuel.

    
    "attributes": {
      "object_id": imageIdTrim
    }
    

    Ce bloc de code effectue une identification supplémentaire sur le modèle de calcul (type de matériel), puis l'ajoute aux attributs :

    
    "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
      }
    }

    Des sections de code supplémentaires font la relation avec les interfaces réseau et identifient tout stockage associé au serveur virtuel.

    Ce bloc de code obligatoire pousse les données vers la CMDB et renvoie la chaîne JSON :

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