CIData : global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 7 minutes de lecture
  • Classe utilitaire pour l’utilisation des structures de données de CI en JavaScript.

    L’API CIData nécessite le module d’extension Détection (com.snc.discovery.core) et peut être utilisée dans n’importe quel script côté Détection serveur.

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

    Cette classe agit comme un 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 (par exemple, un cmdb_ci_linux_server de ligne et ses superclasses). Cette carte peut être récupérée à l’aide de la méthode getData().
    • Tableaux de cartes représentant les instances des listes connexes, chaque tableau représentant une seule liste connexe et chaque élément d’un tel tableau représentant une seule ligne de cette liste connexe. Ces tableaux peuvent être récupérés à l’aide de la méthode getRelatedList().
    • 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 à l’aide de la méthode getM2MTable().

    CIData : addRelatedList(Array relatedList)

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

    Tableau 1. Paramètres
    Nom Type Description
    relatedList Tableau Liste connexe à ajouter.
    Tableau 2. 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 : CIData (chaîne debugFlag)

    Crée une instance de la classe CIData.

    Tableau 3. Paramètres
    Nom Type Description
    debugFlag (en) Chaîne Marqueur indiquant si la journalisation du débogage doit être activée.
    Valeurs valides :
    • Vrai : la journalisation de débogage est activée.
    • Faux : la journalisation de 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 : 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(String 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 Chaîne XML.
    Tableau 7. Renvoie
    Type Description
    nul

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

    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 CI de base.

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

    CIData : getM2MTable(String table, String refField)

    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 dans 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 mappages de données dans la liste plusieurs à plusieurs indiqué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(String table, String refField)

    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’agit d’un tableau d’instances de la table cible, et non de la 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 dans 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(String table, String refField)

    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 dans 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’un sys_id spécifié.

    Tableau 18. Paramètres
    Nom Type Description
    cmdb_ci Chaîne Les sys_id du CI
    Tableau 19. Renvoie
    Type Description
    Objet 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 de caractères.

    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 de 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 de toutes les listes connexes.
    var cdta = CIData();
    cdta.toXML();