Name
global.SoftwareLicenseManager
Description
Manages the install count and license count of software and licenses.
Script
/**
* Install counts / License count management of the following three tables
* - cmdb_ci_spkg
* - ast_license_base
* - ast_software_license
*
* Originally written by Pat Casey, but has been heavily modified by Aleck Lin aleck.lin@service-now.com
*/
var SoftwareLicenseManager = Class.create();
SoftwareLicenseManager.prototype = {
initialize : function() {
},
countAll : function() {
this.refreshSWInstallCount();
this.refreshASTInstallCount();
this.refreshSWLicenseCount();
this.refreshLicenseTableInstallCount();
},
/*
* Calculates the install count field of each software package (cmdb_ci_spkg).
*/
refreshSWInstallCount: function() {
new SoftwarePackage().calcInstallCount();
},
/*
* Calculates the install count field of AST licenses.
*/
refreshASTInstallCount: function() {
new ASTLicense().calcInstallCount();
},
/*
* Calculates the license count field of software packages
*/
refreshSWLicenseCount: function() {
new SoftwarePackage().calcLicenseCount();
},
/*
* Calculates the total install count and license count of the license bundle (ast_software_license)
* The scenario is that a license bundle may contain multiple licenses (such as adobe 3.0, adobe 4.0 and adobe 5.0)
*/
refreshLicenseTableInstallCount: function() {
var gr = new GlideRecord("ast_software_license");
gr.query();
while(gr.next())
this._refreshLicenseTableInstallCount(gr);
},
_refreshLicenseTableInstallCount: function(gr) {
var purchasedCnt = 0;
var installedCnt = 0;
var astGr = new GlideRecord('ast_license_base');
astGr.addQuery('parent', gr.sys_id);
astGr.query();
while(astGr.next()) {
purchasedCnt += astGr.license_count;
installedCnt += astGr.install_count;
}
gr.license_count = purchasedCnt;
gr.install_count = installedCnt;
gr.update();
},
}
Sys ID
dd8556ea0a0a0b1500f2fc5a5257304a