Building up a scripted REST api list of catalog tasks plus their variables

called via scripted rest endpoint

script include logic:

getOpenRequests: function() {

        //--done this way due to issues with gliderecord/memory leakage!!
        var responseObj = {};
        try {

            //gs.log('1:' + this.LINUX_SERVER_REQ);
            /*test it this way:
               var si= new _ansible_servicerequest();
               var sRes= si.getOpenRequests()
               gs.print('result:\n ' +JSON.stringify(sRes));
            var itemSYSID = this.LINUX_SERVER_REQ;
            var grTasks = new GlideRecord('sc_task');
            grTasks.addQuery('request_item.cat_item=' + itemSYSID);

            responseObj.numberOfAnsibleTasks = grTasks.getRowCount();

            if (grTasks.getRowCount() > 0) {
                while ( {
var sNum = grTasks.number;
                    //return snNumberList;
                                                                                var taskObj, ritmVariables, variableName;
                    ritmVariables = grTasks.request_item.variables;
                    taskObj = {};
                    taskObj['field:number'] = this.u_getTaskField(grTasks,'number') ;//--use this method to avoid a weird memory leakage on the GlideRecord which I couldnt quite get to the bottom of...
                                                                                taskObj['field:short_description'] = this.u_getTaskField(grTasks,'short_description') ;//--use this
                                                                                taskObj['field:requestor'] = this.u_getRequestValue_ReqFor(grTasks.request) ;//--use this

                    for (variableName in ritmVariables) {
                        if (ritmVariables.hasOwnProperty(variableName) && ritmVariables[variableName]) { //Make sure the property exists and isn't null or unknown.
                            variableName = variableName.toString(); //Make sure we're all proper strings here.
                            taskObj['variable:' +variableName] = ritmVariables[variableName].getDisplayValue().toString();

                    responseObj = this.u_addObjToObj(responseObj, taskObj, 'ansibleTask:' + grTasks. number); 
        } catch (ex) {
            gs.logError('ISSUE:' + ex.toString());

        return responseObj;

u_addObjToObj: function(parent, child, name) {
        parent[name] = child;
        return parent; //Note: Does not break pass-by-reference, because we're declaring a new object on each loop on line 39 above.

u_getTaskField: function (grTask, fieldName){
return (grTask.getValue(fieldName));

u_getRequestValue_ReqFor: function(sysid){
//--insert code to retrieve the requested for from REQ record, pass in task.request as param


Popular posts from this blog

GlideRecord setValue

variable advanced reference qualifier example

Running transform maps asynchronously