Name

global.DiscoveryMigrateToPatterns

Description

No description available

Script

var DiscoveryMigrateToPatterns = Class.create();
DiscoveryMigrateToPatterns.prototype = Object.extendsObject(ProbeToPatternPrerequisiteScript, {
  MIGRATE_SOURCE : "DiscoveryMigrateToPatterns",

  enablePattern: function(classy, classifierName, patternName, defaultSysId) {
  	var classifierObj = this.classifierProbeCheck(classifierName, defaultSysId, "discovery_classy_" + classy, patternName);
  	this.enablePatternObj(classifierObj);
  	return classifierObj;
  },

  enablePatternObj: function(classyObj) {
  	var classifierId = classyObj.sys_id;
  	var classifierName = classyObj.classifierName;
  	if (!classyObj.status.equals(this.checkResult.FAIL)) {
  		var dcp = new GlideRecord('discovery_classifier_probe');
  		if (classyObj.classifierProbeSysId) {
  			//Found matching Classifier Probe record
  			this.deactivateProbes(classifierId, classifierName);
  			dcp.get(classyObj.classifierProbeSysId);
  			if (classyObj.classyTable.equals(this.DISCOVERY_CLASSY_PROC))
  				dcp.setValue('phase', 'exploration');
  			else
  				dcp.setValue('phase', 'identification');
  			dcp.setValue('active', true);
  			dcp.update();
  		} else if (classyObj.patternSysId) {
  			// Need to create new record
  			this.deactivateProbes(classifierId, classifierName);
  			dcp.initialize();
  			dcp.setValue('child', this.HORIZONTAL_PROBE_SYSID);
  			dcp.setValue('classy', classifierId);
  			dcp.setValue('pattern', classyObj.patternSysId);
  			dcp.setValue('active', true);
  			if (classyObj.classyTable.equals(this.DISCOVERY_CLASSY_PROC))
  				dcp.setValue('phase', 'exploration');
  			else
  				dcp.setValue('phase', 'identification');
  			if (classyObj.conditionScript)
  				dcp.setValue('condition_script', classyObj.conditionScript);
  			dcp.insert();
  			this.infoMsg("Pattern Probe for Classifier '" + classifierName + "' has been created.");
  		} else {
  			// Should not reach here, but putting error message just in case
  			this.infoMsg("Cannot find Classifier Probe or Pattern for Classifier '" + classifierName + "'. Check logs to see why this failed.");
  			return;
  		}
  		this.infoMsg("Classifier '" + classifierName + "' has been converted to Patterns.");
  	} else
  		this.infoMsg("Cannot convert Classifier '" + classifierName + "' to Patterns. Check logs to see why this failed.");
  },

  deactivateProbes: function (classy, classifier) {
  	var probes = new GlideRecord('discovery_classifier_probe');
  	probes.addQuery('classy', classy);
  	if (classifier != 'Solaris')
  		probes.addQuery('name', 'DOES NOT CONTAIN', 'ADM');
  	probes.addQuery('name', 'DOES NOT CONTAIN', 'TrafficBasedDataCollection');
  	probes.addQuery('name', 'DOES NOT CONTAIN', 'Installed Software');
  	probes.addQuery('name', 'DOES NOT CONTAIN', 'HorizontalDiscoveryProbe');
  	probes.addQuery('name', 'DOES NOT CONTAIN', 'File Discovery');
  	probes.query();		
  	while (probes.next()) {
  		probes.setWorkflow(false);
  		probes.setValue('active', false);
  		probes.update();
  	}
  },

  setPropertyForOSProbes: function (propertyName, state) {
  	var sp = new GlideRecord('sys_properties');
  	sp.addQuery('name', propertyName);
  	sp.query();
  	if (sp.next()) {
  		sp.setValue('value', state);
  		sp.update();
  	}
  },

  infoMsg : function(infoMsg) {
  	this.logMsg(infoMsg, this.MIGRATE_SOURCE);
  },

  type: 'DiscoveryMigrateToPatterns'
});

Sys ID

fe29037159076300964fd0aa17cfbcf1

Offical Documentation

Official Docs: