Name

sn_itom_pattern.KubernetesUtils

Description

No description available

Script

var KubernetesUtils = Class.create();

var childSysId, midServer, discoSchedName, sysDomain, script, hostlessName;
var paramArray = [], stagingArray = [];

KubernetesUtils.prototype = {
  initialize: function() {
  },
  
  filterDiscoSchedule: function(parentSysId) {
  	
  	var filter = new GlideRecord('discovery_ptrn_hostless_lchr');
  	filter.addQuery('pattern', '96324ec09f3303002ae692ec757fcf61');
  	filter.addQuery('schedule', parentSysId);
  	filter.query();
  	if(filter.next()){
  		childSysId = filter.getValue('sys_id');
  		hostlessName = filter.getValue('name');
  		if(this.filterLaunchParam(childSysId) == true){
  			return true;
  		}
  		else{
  			return false;
  		}
  	}
  	return false;
  },
  
  
  filterLaunchParam: function(childSysId){
  	var launchParamFilter = new GlideRecord('discovery_ptrn_lnch_param');
  	launchParamFilter.addEncodedQuery('pattern_launcher.sys_id=' + childSysId + '^valueISNOTEMPTY');
  	launchParamFilter.query();
  	if(launchParamFilter.hasNext()){
  		while(launchParamFilter.next()){
  			var param = launchParamFilter.getDisplayValue('param');
  			var value = launchParamFilter.getValue('value');
  			var obj = {};
  				obj[param] = value;
  				paramArray.push(obj);
  			}
  			for(var i = 0; i < paramArray.length; i++){
  				if(this.isEmpty(paramArray[i]) == false){
  					stagingArray.push('true');
  					
  				}else{
  					
  					return false;
  				}
  				
  			}
  			if(stagingArray.length == 3){
  				return true;
  			}else{
  				
  				return false;
  			}
  			
  			
  		}
  		
  		return false;
  	},
  	
  	isEmpty: function (obj) {
  		for (var key in obj) {
  			if(obj.hasOwnProperty(key)) {
  				if(obj[key] === '') {
  					return true;
  				}
  			}
  		}
  		
  		return false;
  	},
  	
  	getDiscoSchedule: function(parentSysId){
  		var getDiscoSched = new GlideRecord('discovery_schedule');
  		getDiscoSched.addQuery('sys_id', parentSysId);
  		getDiscoSched.query();
  		if(getDiscoSched.hasNext()){
  			while(getDiscoSched.next()){
  				
  				midServer = getDiscoSched.getValue('mid_server');
  				discoSchedName = getDiscoSched.getValue('name');
  				sysDomain = getDiscoSched.getValue('sys_domain');
  				script = getDiscoSched.getValue('script');
  				
  			}
  		}
  		
  		if(midServer != '' && discoSchedName != '' && sysDomain != '' && script != ''){
  			this.filterDiscoSchedule(parentSysId);
  			this.createDiscoSchedule(midServer, discoSchedName, sysDomain, script, paramArray, hostlessName);
  			
  		}else{
  			
  			return;
  			
  		}
  		
  	},
  	
  	createDiscoSchedule: function(midServer, discoSchedName, sysDomain, script, paramArray, hostlessName){
  		var dateTimeObj = new GlideDateTime();
  		var dur1 = new GlideDateTime("1970-01-01 00:00:00");
  		var dur2 = new GlideDateTime("1970-01-01 00:05:00");
  		var duration = new GlideDuration();
  		duration = GlideDateTime.subtract(dur1, dur2);
  		var discoSched = new GlideRecord('discovery_schedule');
  		discoSched.initialize();
  		discoSched.name = discoSchedName + ' events';
  		discoSched.discover = 'Hostless';
  		discoSched.disco_run_type = 'periodically';
  		discoSched.run_period = duration;
  		discoSched.run_start = dateTimeObj;
  		discoSched.mid_server = midServer;
  		discoSched.script = script;
  		discoSched.sys_domain = sysDomain;
  		discoSched.active = 'true';
  		var parentSysId = discoSched.insert();
  		var serverLessRec = new GlideRecord('discovery_ptrn_hostless_lchr');
  		serverLessRec.initialize();
  		serverLessRec.pattern = 'c13a00829f4213002b9b92ec757fcff8';
  		serverLessRec.name = hostlessName + ' event';
  		serverLessRec.schedule = parentSysId;
  		serverLessRec.sys_domain = sysDomain;
  		var childSysId = serverLessRec.insert();
  		this.waitSeconds(1000);
  		var launchParamFilter = new GlideRecord('discovery_ptrn_lnch_param');
  		launchParamFilter.addEncodedQuery('pattern_launcher.sys_id=' + childSysId + '^valueISEMPTY');
  		launchParamFilter.query();
  		while(launchParamFilter.next()){
  			for (var key in paramArray){
  				if (Object.getOwnPropertyNames(paramArray[key]) == 'url' && launchParamFilter.getDisplayValue('param') == 'url'){
  					launchParamFilter.value = paramArray[key].url;
  					launchParamFilter.update();
  				}else if(Object.getOwnPropertyNames(paramArray[key]) == 'namespace' && launchParamFilter.getDisplayValue('param') == 'namespace'){
  					launchParamFilter.value = paramArray[key].namespace;
  					launchParamFilter.update();
  				}else if(Object.getOwnPropertyNames(paramArray[key]) == 'credentialsAlias' && launchParamFilter.getDisplayValue('param') == 'credentialsAlias'){
  					launchParamFilter.value = paramArray[key].credentialsAlias;
  					launchParamFilter.update();
  					
  				}
  				
  				
  			}
  			
  		}
  		
  	},
  	
  	waitSeconds: function (iMilliSeconds) {
  		var counter= 0, start = new GlideTime(), end = 0;
  		while (counter < iMilliSeconds) {
  			end = new GlideTime();
  			counter = end - start;
  		}
  	},
  	
  	checkIfDiscoSchedCreated: function(parentSysId){
  		var name;
  		var getDiscoSched = new GlideRecord('discovery_schedule');
  		getDiscoSched.addQuery('sys_id', parentSysId);
  		getDiscoSched.query();
  		while(getDiscoSched.next()){
  			
  			name = getDiscoSched.getValue('name');
  			
  		}
  		var getDiscoSchedEvent = new GlideRecord('discovery_schedule');
  		getDiscoSchedEvent.addEncodedQuery('nameSTARTSWITH' + name + '^nameENDSWITHevents');
  		getDiscoSchedEvent.query();
  		if(getDiscoSchedEvent.hasNext()){
  			
  			return true;
  			
  		}else{
  			
  			return false;
  			
  		}
  		
  	},
  	type: 'KubernetesUtils'
  };

Sys ID

7c62e1979fa213002b9b92ec757fcf56

Offical Documentation

Official Docs: