Script to calculate numeric value

sukran
Mega Sage

Script query return 3 numeric value for one record size value

Requirement is that , we need to calculate (add) all these and update the total through BR

 

sukran_0-1721295477878.png

 

2 ACCEPTED SOLUTIONS

hi @sukran 

Please try the below code its working for me i have tried the same in PDI .

var arr = [];
var arr1 = [];
var totalSum=0;
var gr = new GlideRecord('cmdb_ci_computer');
gr.addQuery('sys_id', '79f66bd31b6dc8147fcc202a2d4bcbae');
gr.query();
while (gr.next()) {
    var compsys = gr.sys_id;
    var gr1 = new GlideRecord('cmdb_ci_disk');
    gr1.addQuery('computer', compsys);
    gr1.query();
    while (gr1.next()) {
        var siz = gr1.size;
        var fsiz = parseInt(siz);
        arr.push(fsiz);
        gs.info(arr);
    }
    var val = arr.split(",");
    for (i = 0; i < arr.length; i++){
        totalSum += arr[i];
       
    }
   gs.info(totalSum);
}

 

Please try to run it in background first.

 

Thank you!

Vishakha Yadav

View solution in original post

Thanks ,. this information helps and now i understand what you are struggling with.

Here is a script that will work

var totalSize = 0;
var gr = new GlideRecord("cmdb_ci_disk");
gr.addEncodedQuery("computer=5f9b83bfc0a8010e005a2b3212c9dc07"); //use sys_id of computer you want to add
gr.query();
while (gr.next()) {
   gs.print(gr.size);
   var s = parseFloat(gr.size.toString().replace(/GB/g, ""));
   totalSize = totalSize + s
}
gs.print(totalSize);
-Anurag

View solution in original post

12 REPLIES 12

@Anurag Tripathi   the table is cmdb_ci_disk and below screenshot Im query one computer record ( 138) and the size having 3 values (500 , 15, 150) gb

 

Those values needs to count total as( 500+15+150) 

 

sukran_0-1721301247604.png

 

hi @sukran 

Please try the below code its working for me i have tried the same in PDI .

var arr = [];
var arr1 = [];
var totalSum=0;
var gr = new GlideRecord('cmdb_ci_computer');
gr.addQuery('sys_id', '79f66bd31b6dc8147fcc202a2d4bcbae');
gr.query();
while (gr.next()) {
    var compsys = gr.sys_id;
    var gr1 = new GlideRecord('cmdb_ci_disk');
    gr1.addQuery('computer', compsys);
    gr1.query();
    while (gr1.next()) {
        var siz = gr1.size;
        var fsiz = parseInt(siz);
        arr.push(fsiz);
        gs.info(arr);
    }
    var val = arr.split(",");
    for (i = 0; i < arr.length; i++){
        totalSum += arr[i];
       
    }
   gs.info(totalSum);
}

 

Please try to run it in background first.

 

Thank you!

Vishakha Yadav

Thanks ,. this information helps and now i understand what you are struggling with.

Here is a script that will work

var totalSize = 0;
var gr = new GlideRecord("cmdb_ci_disk");
gr.addEncodedQuery("computer=5f9b83bfc0a8010e005a2b3212c9dc07"); //use sys_id of computer you want to add
gr.query();
while (gr.next()) {
   gs.print(gr.size);
   var s = parseFloat(gr.size.toString().replace(/GB/g, ""));
   totalSize = totalSize + s
}
gs.print(totalSize);
-Anurag

@Anurag Tripathi  Yes it works .. Handsoff 🙏

With the example screenshot you posted, what would you expect the value to be:

- 665, what you will get from the code above

- or 650.015

 

You will have a mix of MB, GB and TB in the individual drive sizes, which, I'm assuming, you need to account for.