Name

sn_agent.AgentVersionFieldStyle

Description

No description available

Script

var AgentVersionFieldStyle = Class.create();
AgentVersionFieldStyle.prototype = {
  initialize: function(record) {
  	this.agentVersion = gs.getProperty('sn_agent.agent_version');
  	this.record = record;
  },
  
  isValid: function() {
  	
  	if (this.record.getTableName() == "sn_agent_ci_extended_info")
  		return this.record.getValue("agent_version") == this.agentVersion;
  	
  	if (this.record.getTableName() == "sn_agent_cmdb_ci_agent" && this.record.isValidField("agent_extended_info"))
  		return this.record.agent_extended_info.agent_version == this.agentVersion;
  	
  	return false;
  },

  type: 'AgentVersionFieldStyle'
};

AgentVersionFieldStyle.getAccfVersion = function() {
  var devMode = gs.getProperty('sn_agent.dev_mode', 'false');
  var accfVersion = "";
  if (devMode.toUpperCase() == "TRUE")
  	accfVersion = gs.getProperty('sn_agent.agent_snapshot_version');
  else
  	accfVersion = gs.getProperty('sn_agent.agent_version');
  
  return accfVersion;
};

AgentVersionFieldStyle.getAgentVersion = function(accfVer,shouldReplaceSubVersion, replaceWith) {
  // If need to replace: replace last digit with  replaceWith
  if (shouldReplaceSubVersion) {
  	var arrVer = accfVer.split(/\./);
  	if (arrVer[2])
  		arrVer[2] = replaceWith;
  	
  	accfVer = arrVer.join('.')
  }
  
  return accfVer;
};

/*
  This method makes sure to return the correct agent version per ACC-F version.
  ACC-F store app version 2.6.2 will return agent version 2.6.0
    and 2.8.1 to return 2.8.2
*/
AgentVersionFieldStyle.getAgentVersionFinal = function() {
  // ACC-F Store app and agent installation versions should match
  // This map maps the excpetions between the ACC-F release version and the agent installation version.
  var accStoreAppToAgentVersion = {
  	"2.10.2": "2.10.1"
  };
  var accfVer = AgentVersionFieldStyle.getAccfVersion();
  
  if (accStoreAppToAgentVersion[accfVer])
  	return accStoreAppToAgentVersion[accfVer];

  // assume same version
  return accfVer;
};

/*
  Just like compareTo in Java.
  version1 == version2 : The method returns 0.
  version1 > version2 : The method returns a positive value.
  version1 < version2 : The method returns a negative value.
*/
AgentVersionFieldStyle.agentVersionCompareTo = function(version1, version2, skipSubVersion) {
  var version1Arr = version1.split('.');
  var version2Arr = version2.split('.');
  
  if (version1Arr.length !=3 && version1Arr.length != version2Arr.length)
  	return -1; // agentVersion is bigger than ACC-F Version
  
  version1Arr[0] = Number(version1Arr[0]);
  version2Arr[0] = Number(version2Arr[0]);
  
  if (!isNaN(version1Arr[0]) && isNaN(version2Arr[0]))
  	return 1;
  if (isNaN(version1Arr[0]) && !isNaN(version2Arr[0]))
  	return -1;
  
  // Comparing major first
  if (version1Arr[0] > version2Arr[0])
  	return 1;
  if (version1Arr[0] < version2Arr[0])
  	return -1;
  
  version1Arr[1] = Number(version1Arr[1]);
  version2Arr[1] = Number(version2Arr[1]);
  
  if (!isNaN(version1Arr[1]) && isNaN(version2Arr[1]))
  	return 1;
  if (isNaN(version1Arr[1]) && !isNaN(version2Arr[1]))
  	return -1;
  
  // Comparing minor
  if (version1Arr[1] > version2Arr[1])
  	return 1;
  if (version1Arr[1] < version2Arr[1])
  	return -1;
  
  if (skipSubVersion)
  	return 0;
  
  // Checking the last digit
  version1Arr[2] = Number(version1Arr[2]);
  version2Arr[2] = Number(version2Arr[2]);

  if (!isNaN(version1Arr[2]) && isNaN(version2Arr[2]))
  	return 1;
  if (isNaN(version1Arr[2]) && !isNaN(version2Arr[2]))
  	return -1;

  // Comparing sub version
  if (version1Arr[2] > version2Arr[2])
  	return 1;
  if (version1Arr[2] < version2Arr[2])
  	return -1;
  
  return 0;
};

/*
  Just like compareTo in Java.
  Assuming ACC-F Version is s1 and the input agentVersion is s2
  s1 == s2 : The method returns 0.
  s1 > s2 : The method returns a positive value.
  s1 < s2 : The method returns a negative value.
*/
AgentVersionFieldStyle.agentVersionCompareToAccVersion = function(agentVersion, skipSubVersion) {
  return AgentVersionFieldStyle.agentVersionCompareTo(AgentVersionFieldStyle.getAccfVersion(), agentVersion, skipSubVersion);
};

AgentVersionFieldStyle.isAgentVersionLowerThanAccfVersion = function(agentVersion, skipSubVersion) {
  if (AgentVersionFieldStyle.agentVersionCompareToAccVersion(agentVersion, skipSubVersion) > 0)
  	return true;
  
  return false;
};

AgentVersionFieldStyle.isLatestAgentVersion = function(agentVersion, skipSubVersion) {
  if (AgentVersionFieldStyle.agentVersionCompareTo(agentVersion, AgentVersionFieldStyle.getAgentVersionFinal(), skipSubVersion) > -1)
  	return true;
  
  return false;
};

Sys ID

0c3cdeaf537a0010c113ddeeff7b124a

Offical Documentation

Official Docs: