Name

global.CMDBQueryUtilsBase

Description

This script include contains functionalities for performing operations with CMDB query

Script

var CMDBQueryUtilsBase = Class.create();
CMDBQueryUtilsBase.prototype = {
  initialize: function() {},
  getCMDBQueryExecutionDetails: function(queryName, timeoutSec) {
      var response = null;
      var defaultTimeout = gs.getProperty("glide.cmdb.query.batch_time_limit_in_sec", 300);
      if (!timeoutSec) timeoutSec = defaultTimeout;
      if (!gs.nil(queryName)) {
          response = SNC.CMDBQueryBuilderAPI.getSavedQueryExecutionDetails(queryName, true, timeoutSec);
      }
      return String(response);
  },
  deleteCMDBQuery: function(queryId) {
      if (!gs.nil(queryId)) {
          this._deleteCMDBQuery(queryId);
      }
  },
  deleteCMDBGroup: function(groupId) {
      if (!gs.nil(groupId)) {
          this._deleteAllAssociatedCMDBQueries(groupId);
          this._deleteCMDBGroup(groupId);
      }
  },
  deleteRecords: function(table) {
      var grResultTable = new GlideRecord(table);
      grResultTable.query();
      grResultTable.setWorkflow(false);
      grResultTable.deleteMultiple();
  },
  _deleteAllAssociatedCMDBQueries: function(groupId) {
      var grGroupToQueryMapper = new GlideRecord('cmdb_group_contains_qb_query');
      grGroupToQueryMapper.addQuery('group', groupId);
      grGroupToQueryMapper.query();
      while (grGroupToQueryMapper.next()) {
          this._deleteCMDBQuery(grGroupToQueryMapper.getValue('qb_query'));
      }
  },
  _deleteCMDBGroup: function(groupId) {
      var grCmdbGroup = new GlideRecord('cmdb_group');
      if (grCmdbGroup.canDelete() && grCmdbGroup.get(groupId)) {
          grCmdbGroup.deleteRecord();
      }
  },
  _deleteCMDBQuery: function(queryId) {
      var resultTable = this._getQueryResultTableName(queryId);
      if (!gs.nil(resultTable)) {
          new global.TableUtils().dropAndClean(resultTable);
      }
      var grQuery = new GlideRecord('qb_saved_query');
      if (grQuery.canDelete() && grQuery.get(queryId)) {
          grQuery.deleteRecord();
      }
  },
  _getQueryResultTableName: function(newQueryId) {
      var name = '';
      var glideRecord = new GlideRecord('cmdb_qb_table_mapping');
      glideRecord.addQuery('query', newQueryId);
      glideRecord.setLimit(1);
      glideRecord.query();
      if (glideRecord.next()) {
          name = glideRecord.getValue('table_name');
      }
      return name;
  },
  type: 'CMDBQueryUtilsBase'
};

Sys ID

b3d5619b0720301054685d3f0ad300fb

Offical Documentation

Official Docs: