Exemple de processeur de réponse de serveur virtuel
Ce Create_Virtual_Server_Response_Processor script, disponible par défaut dans Mise en service et gouvernance du cloud, est le processeur de réponses qui gère la création des CI d’ordinateurs virtuels AWS.
Créer un serveur virtuel
Le script du processeur de ressources Create_Virtual_Server_Response_Processor est disponible par défaut sur le bloc de ressources du serveur virtuel. Sa fonction 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.
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 en JSON afin que le système puisse la traiter. Les informations sont contenues 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 requises pour le type de CI. La ligne 11 gère l’une des entrées nécessaires, l’ID matériel, requis par l’enregistrement CMDB :
var hardwareId = vmResponse.hardwareId;
La ligne 39 affiche les informations requises pour permettre au système d’identifier le nouveau serveur virtuel et les CI associés, afin que ces informations puissent être placées dans la CMDB. Dans ce cas, l’ID d’objet de compte de service identifie le compte associé au serveur virtuel, l’ID d’objet de centre de données identifie le centre de données dans lequel se trouve le serveur virtuel 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
},
Des 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é en identifiant d’abord l’ID d’objet du compte de service et du centre de données avec 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 du système d’exploitation à la liste des 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 (le 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 établissent la relation avec les interfaces réseau et identifient tout stockage attaché au serveur virtuel.
Ce bloc de code obligatoire envoie les données au CMDB et renvoie la chaîne JSON :
cloudModelString.push(vmInfo);
return global.JSON.stringify(cloudModelString);