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