Name

global.CimCIData

Description

Wrapper for CIM CI data manipulation.

Script

// Discovery
/**
* Wrapper for CIM CI data manipulation.
* @author roy.laurie
*/
var CimCIData = Class.create();

/**
* For use with out-of-the-box use of addSerial().
*/
CimCIData.serialType = {
  	psnt: 'psnt',
  chassis: 'cim_chassis',
  partNumber: 'part_number'
};

CimCIData.isValueValid = function(name) {
  if (gs.nil(name))
  	return false;

  if (name.match(/unknown|empty/i))
  	return false;

  return true;
};

CimCIData.prototype = {
  SerialRecord: function(type, serial) {
  	this.serial_number_type = type;
  	this.serial_number = serial;
  	this.valid = true;
  },
  
  /**
   * @param CIData cidata
   */
  initialize: function(cidata) {
  	this.cidata = cidata;
  	this.data = this.cidata.data;
  	this.serials = null;
  	this.serialMap = { };
  },
  
  /**
   * Adds a serial to this CI, by type.
   * @param string type If out-of-box, use enum CimCIData.serialType.
   * @param string serial
   */
  addSerial: function(type, serial) {
  	// validate
  	if (gs.nil(type))
  		return;

  	if (!CimCIData.isValueValid(serial))
  		return;
  	
  	var sn = new SncSerialNumber();
  	if (!sn.isValid(serial))
  		return;
  	
  	if (this.serials === null)
  		this._initSerials();
  	if (this.cidata.data.serial_number === null)
  		this.cidata.data.serial_number = serial;

  	this.serialMap[type] = this.serialMap[type] || { };
  	if (this.serialMap[type][serial])
  		return;
  	this.serialMap[type][serial] = true;

  	var record = new this.SerialRecord(type, serial);
  	this.serials.addRec(record);		
  	return this;
  },

  _initSerials: function() {
  	// create a related instance if one does not already exist
  	this.serials = this.cidata.getRelatedListInstance('cmdb_serial_number', 'cmdb_ci');
  	if (this.serials === null) {
  		this.serials = new CIRelatedList('cmdb_serial_number', 'cmdb_ci', this.cmdb_ci, this.debug_flag);
  		this.cidata.addRelatedList(this.serials);
  	}
  	
  	if (this.cidata.data.serial_number === undefined)
  		this.cidata.data.serial_number = null;
  },
  
  setMakeAndModel: function(make, model) {
  	if (!CimCIData.isValueValid(make))
  		make = '';
  	if (!CimCIData.isValueValid(model))
  		model = '';
  	var ecmdbMakeModel = MakeAndModelJS.fromNames(make, model, 'hardware');
  	this.cidata.data.manufacturer = ''+ecmdbMakeModel.getManufacturerSysID();
  	this.cidata.data.model_id = ''+ecmdbMakeModel.getModelNameSysID();
  },
  
  type: 'CimCIData'
};

Sys ID

44fe3bab3701200032ff8c00dfbe5d88

Offical Documentation

Official Docs: