CIData - Global

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 7 minutes de lecture
  • L’include de script CIData est une classe utilitaire qui fournit des méthodes pour travailler avec les structures de données d’éléments de configuration (CI) en JavaScript.

    Cet include de script nécessite le module d’extension Découverte (com.snc.discovery.core). Vous pouvez l’utiliser dans n’importe quel script côté Découverte serveur.

    Les instances de cette classe représentent un CI (à la fois son enregistrement de base et toutes les listes connexes), et les méthodes fournies permettent de charger ou de stocker à partir de l’enregistrement de base et des listes connexes, ou de les stocker.

    Cette classe sert de conteneur pour les classes simples agissant comme des cartes de paires nom/valeur de propriété. Cette classe contient trois types de cartes de ce type.
    • Carte unique représentant l’entrée de table CI de base (telle qu’une cmdb_ci_linux_server de ligne et ses superclasses). Vous pouvez récupérer cette carte à l’aide de la CIData : getData() méthode.
    • Tableaux de cartes représentant les instances de listes connexes, chaque tableau représentant une liste connexe unique et chaque élément d’un tel tableau représentant une ligne unique de cette liste connexe. Ces tableaux peuvent être récupérés avec la CIData : getRelatedList(Table de chaînes, Champ de référence de chaîne) méthode.
    • Tableaux de cartes représentant les instances de tables plusieurs-à-plusieurs, chaque tableau représentant une seule table plusieurs-à-plusieurs et chaque élément d’un tel tableau représentant une seule ligne de cette table plusieurs-à-plusieurs. Ces tableaux peuvent être récupérés avec la CIData : getM2MTable(Table de chaînes, Champ de référence de chaîne) méthode.

    CIData : CIData (chaîne, debugFlag)

    Crée une instance de la classe CIData.

    Tableau 1. Paramètres
    Nom Type Description
    marqueur de débogage Chaîne Marqueur indiquant s’il faut activer la journalisation du débogage.
    Valeurs valides :
    • Vrai : la journalisation du débogage est activée.
    • Faux : la journalisation du débogage n’est pas activée.

    Cet exemple crée et ajoute une liste connexe à l’objet CIData.

    var ciDataObj = new CIData();
    var rl = new CIRelatedList('cmdb_serial_number', 'cmdb_ci');
    var sr = {};
    sr['serial_number_type'] = "bios";
    sr['serial_number'] = "1BC5E4z89246";
    sr['valid'] =  "true";
    rl.addRec(sr);
    ciDataObj.addRelatedList(rl);

    CIData : addRelatedList(Tableau, relatedList)

    Ajoute la liste connexe spécifiée à cette instance.

    Tableau 2. Paramètres
    Nom Type Description
    Liste connexe Tableau Liste connexe à ajouter.
    Tableau 3. Renvoie
    Type Description
    nul

    Cet exemple crée et ajoute une liste connexe à l’objet CIData.

    var ciDataObj = new CIData();
    var rl = new CIRelatedList('cmdb_serial_number', 'cmdb_ci');
    var sr = {};
    sr['serial_number_type'] = "bios";
    sr['serial_number'] = "1BC5E4z89246";
    sr['valid'] =  "true";
    rl.addRec(sr);
    ciDataObj.addRelatedList(rl);

    CIData : convertRelatedList(String sensor, String tableName, String refField, String keyName)

    Convertit la liste connexe spécifiée en liste connexe dans un capteur donné.

    Tableau 4. Paramètres
    Nom Type Description
    capteur Chaîne Le capteur
    tableName Chaîne Le nom de table
    refField Chaîne Champ de référence
    keyName Chaîne Le nom de la clé
    Tableau 5. Renvoie
    Type Description
    nul

    CIData : fromXML(chaîne xml)

    Initialise l’instance CIData actuelle à partir de la chaîne XML spécifiée.

    Tableau 6. Paramètres
    Nom Type Description
    xml Chaîne Une chaîne XML.
    Tableau 7. Renvoie
    Type Description
    nul

    L’exemple suivant montre comment obtenir des données CI de test au format XML collectées lors de la découverte.

    var xmlCIData = '<CIData><data><fld name="cpu_name">Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz</fld><fld name="host_name">ip-172-31-19-95</fld><fld name="kernel_release">3.10.0-1160.45.1.el7.x86_64</fld><fld name="os">Linux CentOS</fld></data></CIData>';
    
    var ciData = new CIData();
    
    ciData.fromXML(xmlCIData);
    gs.log(ciData);

    Sortie :

    CIData instance:
      cpu_name: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
      host_name: ip-172-31-19-95
      kernel_release: 3.10.0-1160.45.1.el7.x86_64
      os: Linux CentOS
    [object Object]

    CIData : getData()

    Obtient la carte de données dans l’enregistrement de CI de base.

    Tableau 8. Paramètres
    Nom Type Description
    Aucun
    Tableau 9. Renvoie
    Type Description
    Objet Le mappage de données

    CIData : getM2MTable(Table de chaînes, Champ de référence de chaîne)

    Renvoie un tableau de cartes de données dans la liste plusieurs-à-plusieurs donnée (vers ce CI).

    Tableau 10. Paramètres
    Nom Type Description
    table Chaîne Nom de la table contenant la liste connexe. Dans le cas d’une liste plusieurs-à-plusieurs, il s’agit du nom de la table plusieurs-à-plusieurs, et non de la table cible.
    refField Chaîne Nom du champ de la liste connexe qui fait référence à ce CI. Dans le cas d’une liste plusieurs-à-plusieurs, il s’agit du nom du champ de référence dans la table plusieurs-à-plusieurs, et non dans la table cible.
    Tableau 11. Renvoie
    Type Description
    Tableau Liste des cartes de données dans la liste plusieurs-à-plusieurs donnée. La liste n’est pas dans un ordre particulier.

    S’il ne s’agit pas d’une liste plusieurs-à-plusieurs, renvoie un tableau vide.

    Cet exemple montre comment obtenir les relations plusieurs-à-plusieurs pour le champ installed_on de la table cmdb_software_instance.

    function () {
      //Instantiate a new CIData class object
      var cdta = new CIData();
    
      //Load the current data from a CI record.
      cdta.loadFromCI('b4fd7c8437201000deeabfc8bcbe5dc1');
    
      // Returns an Array of Objects (records) of a given M2M related list
      var records = cdta.getM2MTable('cmdb_software_instance', 'installed_on');
    
      gs.info(JSON.stringify(records, null, 4));
    
    })();

    Sortie :

    [
      {
        "sys_id": "208983661b3330106cdf0f26624bcb4b",
        "software": "46c1ec3ca9fe198100beafe77332be9a",
        "sys_updated_on": "2021-11-16 18:32:35",
        "sys_created_on": "2021-11-16 18:32:35",
        "name": "3D Groove Playback Engine-*ANNIE-IBM",
        "installed_on": "b4fd7c8437201000deeabfc8bcbe5dc1"
      },
      {
        "sys_id": "288983661b3330106cdf0f26624bcb4a",
        "software": "0c43bc5fc61122750182c13269a7a3ef",
        "sys_updated_on": "2021-11-16 18:32:35",
        "sys_created_on": "2021-11-16 18:32:35",
        "name": ".NET SDK 2003-*ANNIE-IBM",
        "installed_on": "b4fd7c8437201000deeabfc8bcbe5dc1"
      }
    ]

    CIData : getRelatedList(Table de chaînes, Champ de référence de chaîne)

    Obtient un tableau de cartes de données dans la liste connexe donnée (vers ce CI).

    Le tableau n’est pas dans un ordre particulier. Dans le cas d’une liste plusieurs-à-plusieurs, il s’agira d’un tableau d’instances de la table cible, et non d’une table plusieurs-à-plusieurs. Par exemple, étant donné « cmdb_software_instance » et « installed_on » (une table plusieurs-à-plusieurs et le champ qui fait référence à un CI), cette méthode renvoie un tableau de cartes représentant cmdb_ci_spkg instances (la table cible).

    Tableau 12. Paramètres
    Nom Type Description
    table Chaîne Nom de la table contenant la liste connexe. Dans le cas d’une liste plusieurs-à-plusieurs, il s’agit du nom de la table plusieurs-à-plusieurs, et non de la table cible.
    refField Chaîne Nom du champ de la liste connexe qui fait référence à ce CI. Dans le cas d’une liste plusieurs-à-plusieurs, il s’agit du nom du champ de référence dans la table plusieurs-à-plusieurs, et non dans la table cible.
    Tableau 13. Renvoie
    Type Description
    Tableau Tableau de cartes de données dans la liste connexe spécifiée.

    CIData : getRelatedListInstance(Table de chaînes, Champ de référence de chaîne)

    Renvoie l’instance de CIRelatedList pour la liste donnée.

    Tableau 14. Paramètres
    Nom Type Description
    table Chaîne Nom de la table contenant la liste connexe. Dans le cas d’une liste plusieurs-à-plusieurs, il s’agit du nom de la table plusieurs-à-plusieurs, et non de la table cible.
    refField Chaîne Nom du champ de la liste connexe qui fait référence à ce CI. Dans le cas d’une liste plusieurs-à-plusieurs, il s’agit du nom du champ de référence dans la table plusieurs-à-plusieurs, et non dans la table cible.
    Tableau 15. Renvoie
    Type Description
    Objet Instance de CIRelatedList pour la liste spécifiée.

    L’exemple de code suivant utilise la méthode getRelatedListInstance() pour trouver les relations de liste connexe à supprimer.

    removeAllRelatedList: function(ci_id) {
      var cdta = new CIData('false');
      cdta.init();
      cdta.loadFromCI(ci_id); // Get a Computer CI Instance
      var cirelatedlist = cdta.getRelatedListInstance('cmdb_rel_ci', 'parent'); // Get the CIRelatedList instance holding all relationships of the above CI.
      cirelatedlist.remove(); // Remove all the CI Relationships
    }

    CIData : init()

    Initialise cette instance en vue du chargement d’un nouveau CI.

    Tableau 16. Paramètres
    Nom Type Description
    Aucun
    Tableau 17. Renvoie
    Type Description
    nul
    var cdta = CIData('false');
    cdta.init();

    CIData : loadFromCI(String cmdb_ci)

    Charge les données actuelles à partir d’une sys_id spécifiée.

    Tableau 18. Paramètres
    Nom Type Description
    cmdb_ci Chaîne Le sys_id du CI
    Tableau 19. Renvoie
    Type Description
    Objet Les données actuelles du CI spécifié.
    var cdta = CIData('false');
    cdta.init();
    cdta.loadFromCI('ccaf9c0a8016400b98a06818d57c7');

    CIData : toString()

    Convertit le nom de cette instance CIData en chaîne.

    Tableau 20. Paramètres
    Nom Type Description
    Aucun
    Tableau 21. Renvoie
    Type Description
    Chaîne Nom de l'instance

    Cet exemple charge la CIData à partir du CI actuel et convertit cette nouvelle instance CIData au format chaîne.

    var cidata = new CIData(); // Instantiate a new CIData class object
    cidata.loadFromCI('0c43b0f5c6112275019abd2bb3dcd78f'); // Load the current data from a CI record. Use sys_id or ci name.
    cidata.toString(); // Convert the name of this CIData instance to a string.
    gs.info(cidata); // Display name value pairs of the current CI

    Sortie :

    CIData instance:
      sys_id: 0c43b0f5c6112275019abd2bb3dcd78f
      operational_status: 1
      os_service_pack: Service Pack 1
      cpu_manufacturer: 0c43b088c6112275011a4bd46a4e6cc4
      sys_updated_on: 2022-01-11 07:44:05
      discovery_source: Other Automated
      ram: 503
      cpu_speed: 1993
      sys_domain_path: /
      disk_space: 37.26
      cost_center: d9d07bddc0a80a647cf932056ed24652
      assigned: 2020-08-31 08:00:00
      cd_speed: -1
      can_print: 0
      sys_class_name: cmdb_ci_computer
      manufacturer: add7b97737e3100044e0bfc8bcbe5d96
      cpu_count: 1
      vendor: adb3d8ce37413000158bbfc8bcbe5d15
      assigned_to: 5137153cc611227c000bbd1bd8cd2007
      os_version: 5.1.2600
      cd_rom: 0
      unverified: 0
      asset: aac1ba8837f3100044e0bfc8bcbe5d3b
      skip_sync: 0
      sys_created_on: 2005-05-24 01:14:19
      sys_domain: global
      cpu_type: GenuineIntel
      install_date: 2020-05-19 07:00:00
      asset_tag: P1000143
      install_status: 1
      name: ANDREWDWXP
      subcategory: Computer
      virtual: 0
      sys_class_path: /!!/!2/!(
      company: 31bea3d53790200044e0bfc8bcbe5dec
      department: 221f3db5c6112284009f4becd3039cc9
      cost: 1299.99
      os: Windows XP Professional
      attestation_status: Not Yet Reviewed
      monitor: 0
      ip_address: 195.11.1.1
      cost_cc: USD
      location: db9a923c0a0a0a6501068d6eaec25ee0
      category: Hardware
      fault_count: 0
    [object Object]
    

    CIData - toXML()

    Renvoie une chaîne XML contenant une version sérialisée de cette instance (y compris toutes les listes connexes).

    Tableau 22. Paramètres
    Nom Type Description
    Aucun
    Tableau 23. Renvoie
    Type Description
    Chaîne Chaîne XML contenant une version sérialisée de cette instance et toutes les listes connexes.
    var cdta = CIData();
    cdta.toXML();