CIData - Global

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 7 min. de leitura
  • A inclusão de script CIData é uma classe de utilitário que fornece métodos para trabalhar com estruturas de dados de item de configuração (IC) em JavaScript.

    Esta inclusão de script requer o plug-in Descoberta (com.snc.discovery.core). Você pode usá-lo em qualquer script Descoberta do lado do servidor.

    As instâncias desta classe representam um IC (seu registro base e quaisquer listas relacionadas), e os métodos fornecidos permitem carregar ou armazenar o registro base e as listas relacionadas.

    Esta classe atua como um contêiner para classes simples que atuam como mapas de pares de nome/valor de propriedade. Esta classe contém três tipos desses mapas.
    • Um único mapa que representa a entrada da tabela de IC base (como uma linha cmdb_ci_linux_server e suas superclasses). Você pode recuperar este mapa usando o método CIData – getData().
    • Matrizes de mapas que representam as instâncias de listas relacionadas, com cada matriz representando uma única lista relacionada e cada elemento dessa matriz representando uma única linha dessa lista relacionada. Essas matrizes podem ser recuperadas com o método CIData - getRelatedList(cadeia de caracteres tabela, cadeia de caracteres refField).
    • Matrizes de mapas que representam as instâncias de tabelas de muitos para muitos, com cada matriz representando uma única tabela de muitos para muitos e cada elemento dessa matriz representando uma única linha dessa tabela de muitos para muitos. Essas matrizes podem ser recuperadas com o método CIData – getM2MTable(cadeia de caracteres tabela, cadeia de caracteres refField).

    CIData - CIData(cadeia de caracteres debugFlag)

    Cria uma instância da classe CIData.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    debugFlag Cadeia de caracteres Sinalizador que indica se o registro em log de depuração deve ser habilitado.
    Valores válidos:
    • Verdadeiro: o registro em log de depuração está habilitado.
    • Falso: o registro em log de depuração não está habilitado.

    Este exemplo cria e adiciona uma lista relacionada ao objeto 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(Array relatedList)

    Adiciona a lista relacionada especificada a esta instância.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    Lista relacionada Matriz Lista relacionada a ser adicionada.
    Tabela 3. Retorna
    Tipo Descrição
    vazio

    Este exemplo cria e adiciona uma lista relacionada ao objeto 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)

    Converte a lista relacionada especificada em uma lista relacionada em um determinado sensor.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    sensor Cadeia de caracteres O sensor
    tableName Cadeia de caracteres O nome da tabela
    refField Cadeia de caracteres O campo de referência
    keyName Cadeia de caracteres O nome da chave
    Tabela 5. Retorna
    Tipo Descrição
    vazio

    CIData - fromXML (cadeia de caracteres xml)

    Inicializa a instância CIData atual da cadeia de caracteres XML especificada.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    xml Cadeia de caracteres Uma cadeia de caracteres XML.
    Tabela 7. Retorna
    Tipo Descrição
    vazio

    O exemplo a seguir mostra como obter dados de IC formatados por XML de teste coletados durante a descoberta.

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

    Saída:

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

    Obtém o mapa de dados no registro de IC base.

    Tabela 8. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 9. Retorna
    Tipo Descrição
    Objeto O mapa de dados

    CIData – getM2MTable(cadeia de caracteres tabela, cadeia de caracteres refField)

    Retorna uma matriz de mapas de dados na lista de muitos para muitos fornecida (para este IC).

    Tabela 10. Parâmetros
    Nome Tipo Descrição
    tabela Cadeia de caracteres Nome da tabela que contém a lista relacionada. No caso de uma lista de muitos para muitos, este é o nome da tabela de muitos para muitos, não a tabela de destino.
    refField Cadeia de caracteres Nome do campo na lista relacionada que se refere a este IC. No caso de uma lista de muitos para muitos, este é o nome do campo de referência na tabela de muitos para muitos, não na tabela de destino.
    Tabela 11. Retorna
    Tipo Descrição
    Matriz Lista de mapas de dados na lista de muitos para muitos fornecida. A lista não está em nenhuma ordem específica.

    Se esta não for uma lista de muitos para muitos, retornará uma matriz vazia.

    Este exemplo mostra como obter os relacionamentos many-to-many para o campo opened_on da tabela 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));
    
    })();

    Saída:

    [
      {
        "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(cadeia de caracteres tabela, cadeia de caracteres refField)

    Obtém uma matriz de mapas de dados na lista relacionada fornecida (para este IC).

    A matriz não está em nenhuma ordem específica. No caso de uma lista de muitos para muitos, será uma matriz de instâncias da tabela de destino, não a tabela de muitos para muitos. Por exemplo, a partir de "cmdb_software_instance" e "installed_on" (uma tabela many-to-many e o campo que se refere a um IC), este método retornará uma matriz de mapas que representam instâncias de cmdb_ci_spkg (a tabela de destino).

    Tabela 12. Parâmetros
    Nome Tipo Descrição
    tabela Cadeia de caracteres Nome da tabela que contém a lista relacionada. No caso de uma lista de muitos para muitos, este é o nome da tabela de muitos para muitos, não a tabela de destino.
    refField Cadeia de caracteres Nome do campo na lista relacionada que se refere a este IC. No caso de uma lista de muitos para muitos, este é o nome do campo de referência na tabela de muitos para muitos, não na tabela de destino.
    Tabela 13. Retorna
    Tipo Descrição
    Matriz Uma matriz de mapas de dados na lista relacionada especificada.

    CIData - getRelatedListInstance(cadeia de caracteres tabela, cadeia de caracteres refField)

    Retorna a instância de CIRelatedList para a lista fornecida.

    Tabela 14. Parâmetros
    Nome Tipo Descrição
    tabela Cadeia de caracteres Nome da tabela que contém a lista relacionada. No caso de uma lista de muitos para muitos, este é o nome da tabela de muitos para muitos, não a tabela de destino.
    refField Cadeia de caracteres Nome do campo na lista relacionada que se refere a este IC. No caso de uma lista de muitos para muitos, este é o nome do campo de referência na tabela de muitos para muitos, não na tabela de destino.
    Tabela 15. Retorna
    Tipo Descrição
    Objeto Instância de CIRelatedList para a lista especificada.

    O exemplo de código a seguir usa o método getRelatedListInstance() para encontrar os relacionamentos de lista relacionados a serem removidos.

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

    Inicializa esta instância em preparação para carregar um novo IC.

    Tabela 16. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 17. Retorna
    Tipo Descrição
    vazio
    var cdta = CIData('false');
    cdta.init();

    CIData – loadFromCI(cadeia de caracteres cmdb_ci)

    Carrega os dados atuais de um sys_id especificado.

    Tabela 18. Parâmetros
    Nome Tipo Descrição
    cmdb_ci Cadeia de caracteres O sys_id do IC
    Tabela 19. Retorna
    Tipo Descrição
    Objeto Os dados atuais do IC especificado.
    var cdta = CIData('false');
    cdta.init();
    cdta.loadFromCI('ccaf9c0a8016400b98a06818d57c7');

    CIData - toString()

    Converte o nome desta instância CIData em uma cadeia de caracteres.

    Tabela 20. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 21. Retorna
    Tipo Descrição
    Cadeia de caracteres Nome da instância

    Este exemplo carrega o CIData do IC atual e converte esta nova instância de CIData em formato de cadeia de caracteres.

    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

    Saída:

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

    Retorna uma cadeia de caracteres XML que contém uma versão serializada desta instância (incluindo todas as listas relacionadas).

    Tabela 22. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 23. Retorna
    Tipo Descrição
    Cadeia de caracteres A cadeia de caracteres XML que contém uma versão serializada desta instância e todas as listas relacionadas.
    var cdta = CIData();
    cdta.toXML();