CIData : Global

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 6 Minuten Lesedauer
  • Die CIData -Skripteinbindung ist eine Dienstprogrammklasse, die Methoden zum Arbeiten mit Konfigurationselement-Datenstrukturen (Configuration Item, CI) in JavaScript bereitstellt.

    Diese Skripteinbindung erfordert das Plugin Discovery (com.snc.discovery.core). Sie können es in jedem serverseitigen Discovery -Skript verwenden.

    Instanzen dieser Klasse stellen ein CI dar (sowohl den Basisdatensatz als auch alle zugehörigen Listen), und die bereitgestellten Methoden ermöglichen das Laden aus oder das Speichern des Basisdatensatzes sowie der zugehörigen Listen.

    Diese Klasse dient als Container für einfache Klassen, die als Zuordnungen von Eigenschaftsnamen/Wert-Paaren dienen. Diese Klasse enthält drei Arten solcher Zuordnungen
    • Eine einzelne Zuordnung, die den Basiseintrag der CI-Tabelle darstellt (z. B. eine Zeile cmdb_ci_linux_server und ihre Superklassen). Sie können diese Zuordnung mit der Methode CIData – getData() abrufen.
    • Anordnungen von Zuordnungen, die die Instanzen zusammengehöriger Listen darstellen, wobei jedes Array eine einzelne Themenliste darstellt und jedes Element eines solchen Arrays eine einzelne Zeile dieser Themenliste darstellt. Diese Arrays können mit der Methode CIData – getRelatedList(String table, String refField) abgerufen werden.
    • Arrays von Zuordnunge, die die Instanzen von Many-to-Many-Tabellen darstellen, wobei jedes Array eine einzige Many-to-Many-Tabelle darstellt und jedes Element eines solchen Arrays eine einzelne Zeile dieser Many-to-Many-Tabelle darstellt. Diese Arrays können mit der Methode CIData – getM2MTable(String table, String refField) abgerufen werden.

    CIData – CIData(String debugFlag)

    Erstellt eine Instanz der CIData-Klasse.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    debugFlag Zeichenfolge Kennzeichnung, die angibt, ob die Debug-Protokollierung aktiviert werden soll.
    Gültige Werte:
    • Wahr: Debug-Protokollierung ist aktiviert.
    • False: Debug-Protokollierung ist nicht aktiviert.

    In diesem Beispiel wird eine zugehörige Liste erstellt und dem CIData-Objekt hinzugefügt.

    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(Array relatedList)

    Fügt der Instanz die angegebene Themenliste hinzu.

    Tabelle : 2. Parameter
    Name Typ Beschreibung
    relatedList Array Zugehörige Liste zum Hinzufügen.
    Tabelle : 3. Rückgaben
    Typ Beschreibung
    void

    In diesem Beispiel wird eine zugehörige Liste erstellt und dem CIData-Objekt hinzugefügt.

    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)

    Konvertiert die angegebene Themenliste in eine Themenliste in einem angegebenen Sensor.

    Tabelle : 4. Parameter
    Name Typ Beschreibung
    sensor Zeichenfolge Der Sensor
    tableName Zeichenfolge Der Tabellenname
    refField Zeichenfolge Das Referenzfeld
    keyName Zeichenfolge Der Schlüsselname
    Tabelle : 5. Ergebnisse
    Typ Beschreibung
    void

    CIData – fromXML(String xml)

    Initialisiert die aktuelle CIData-Instanz aus der angegebenen XML-Zeichenfolge.

    Tabelle : 6. Parameter
    Name Typ Beschreibung
    xml Zeichenfolge Eine XML-Zeichenfolge.
    Tabelle : 7. Rückgaben
    Typ Beschreibung
    void

    Das folgende Beispiel zeigt, wie XML-formatierte CI-Testdaten abgerufen werden, die während der Discovery gesammelt wurden.

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

    Ausgabe:

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

    Ruft die Datenzuordnung im Basis-CI-Datensatz ab.

    Tabelle : 8. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 9. Ergebnisse
    Typ Beschreibung
    Objekt Die Datenzuordnung

    CIData – getM2MTable(String table, String refField)

    Gibt ein Array von Datenzuordnungen in der angegebenen Viele-zu-Viele-Liste (zu diesem CI) zurück.

    Tabelle : 10. Parameter
    Name Typ Beschreibung
    table Zeichenfolge Name der Tabelle, die die zugehörige Liste enthält. Im Falle einer Many-to-Many-Liste ist dies der Name der Many-to-Many-Tabelle, nicht der Zieltabelle.
    refField Zeichenfolge Name des Feldes in der Bezugsliste, das auf dieses CI verweist. Im Falle einer Many-to-Many-Liste ist dies der Name des referenzierenden Feldes in der Many-to-Many-Tabelle, nicht in der Zieltabelle.
    Tabelle : 11. Ergebnisse
    Typ Beschreibung
    Array Liste der Datenzuordnungen in der angegebenen Viele-zu-Viele-Liste. Die Liste weist keine bestimmte Reihenfolge auf.

    Wenn es sich nicht um eine Many-to-Many-Liste handelt, wird ein leeres Array zurückgegeben.

    In diesem Beispiel wird gezeigt, wie die Viele-zu-Viele-Beziehungen für das Feld Installierte_on der Tabelle cmdb_software_instance abgerufen werden.

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

    Ausgabe:

    [
      {
        "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)

    Ruft ein Array von Datenzuordnungen in der angegebenen Themenliste (zu diesem CI) ab.

    Das Array ist in keiner bestimmten Reihenfolge. Bei einer Many-to-Many-Liste handelt es sich hierbei um ein Array von Instanzen der Zieltabelle, nicht der Many-to-Many-Tabelle. Wenn Sie beispielsweise 'cmdb_software_instance' und 'install_on' (eine Many-to-Many-Tabelle und das Feld, das auf ein CI verweist) angeben, gibt diese Methode ein Array von Zuordnungen zurück, das die Instanzen von cmdb_ci_spkg (der Zieltabelle) darstellt.

    Tabelle : 12. Parameter
    Name Typ Beschreibung
    table Zeichenfolge Name der Tabelle, die die zugehörige Liste enthält. Im Falle einer Many-to-Many-Liste ist dies der Name der Many-to-Many-Tabelle, nicht der Zieltabelle.
    refField Zeichenfolge Name des Feldes in der Bezugsliste, das auf dieses CI verweist. Im Falle einer Many-to-Many-Liste ist dies der Name des referenzierenden Feldes in der Many-to-Many-Tabelle, nicht in der Zieltabelle.
    Tabelle : 13. Ergebnisse
    Typ Beschreibung
    Array Ein Array von Datenzuordnungen in der angegebenen Themenliste.

    CIData – getRelatedListInstance(String table, String refField)

    Gibt die Instanz von CIRelatedList für die angegebene Liste zurück.

    Tabelle : 14. Parameter
    Name Typ Beschreibung
    table Zeichenfolge Name der Tabelle, die die zugehörige Liste enthält. Im Falle einer Many-to-Many-Liste ist dies der Name der Many-to-Many-Tabelle, nicht der Zieltabelle.
    refField Zeichenfolge Name des Feldes in der Bezugsliste, das auf dieses CI verweist. Im Falle einer Many-to-Many-Liste ist dies der Name des referenzierenden Feldes in der Many-to-Many-Tabelle, nicht in der Zieltabelle.
    Tabelle : 15. Ergebnisse
    Typ Beschreibung
    Objekt Instanz der CIRelatedList für die angegebene Liste.

    Im folgenden Codebeispiel wird mit der Methode getRelatedListInstance() die zugehörigen Listenbeziehungen ermittelt, die entfernt werden sollen.

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

    Initialisiert diese Instanz in Vorbereitung auf das Laden eines neuen CI.

    Tabelle : 16. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 17. Ergebnisse
    Typ Beschreibung
    void
    var cdta = CIData('false');
    cdta.init();

    CIData – loadFromCI(String cmdb_ci)

    Lädt die aktuellen Daten aus einer angegebenen sys_id.

    Tabelle : 18. Parameter
    Name Typ Beschreibung
    cmdb_ci Zeichenfolge Die sys_id des CI
    Tabelle : 19. Ergebnisse
    Typ Beschreibung
    Objekt Die aktuellen Daten des angegebenen CI.
    var cdta = CIData('false');
    cdta.init();
    cdta.loadFromCI('ccaf9c0a8016400b98a06818d57c7');

    CIData – toString()

    Konvertiert den Namen dieser CIData-Instanz in eine Zeichenfolge.

    Tabelle : 20. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 21. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Name der Instanz

    Dieses Beispiel lädt die CIData aus dem aktuellen CI und konvertiert diese neue CIData-Instanz in das Zeichenfolgenformat.

    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

    Ausgabe:

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

    Gibt eine XML-Zeichenfolge zurück, die eine serialisierte Version dieser Instanz enthält (einschließlich zugehöriger Listen).

    Tabelle : 22. Parameter
    Name Typ Beschreibung
    Keine
    Tabelle : 23. Ergebnisse
    Typ Beschreibung
    Zeichenfolge Die XML-Zeichenfolge, die eine serialisierte Version dieser Instanz und alle zugehörigen Listen enthält.
    var cdta = CIData();
    cdta.toXML();