ServiceNow Dynatrace Maintenance Window integration: ensuring the start/end times are clock change resistant
script include code:
startS = grcOutage.begin;
startS = this.utcUpdateTime(startS);
endS = grcOutage.end;
endS = this.utcUpdateTime(endS);
utcUpdateTime: function(dTime) {
this._dLog(" utcUpdateTime is Called");
var dateTime = dTime;
//check if dateTime is diff from Approval Date Time
dateTime = this.checkApprovDateTime(dTime);
this._dLog(" utcUpdateTime dTime =" + dTime + " ---- dateTime = " + dateTime);
var newdateTime = new GlideDateTime(dateTime);
var yourDST = this._utcTimeZone();
if (yourDST == 'UTC+00:00') {
//No Change to reported value
} else {
gs.log(yourDST+'dynatraceDST');
newdateTime.addSeconds(3600);
}
newdateTime = newdateTime.toString();
newdateTime = newdateTime.replace(' ', 'T');
this._dLog(" utcUpdateTime dateTime =" + dateTime + " newdateTime =" + newdateTime);
return newdateTime.toString();
},
checkApprovDateTime: function(dateTime) {
this._dLog(" checkApprovDateTime is Called");
var resultDate = dateTime;
var aEnc = "sysapproval=" + current.sys_id + "^approver.active=true^stateINapproved,not_required";
var grcApp = new GlideRecord('sysapproval_approver');
grcApp.addEncodedQuery(aEnc);
grcApp.orderBy('sys_updated_on');
grcApp.query();
if (grcApp.next()) {
this._dLog(" checkApprovDateTime dateTime =" + grcApp.sys_updated_on);
if (grcApp.sys_updated_on > dateTime) {
this._dLog(" checkApprovDateTime Approval Did Not happend in Time");
resultDate = grcApp.sys_updated_on;
} else {
this._dLog(" checkApprovDateTime Approval happend in Time");
}
}
this._dLog(" checkApprovDateTime resultDate =" + resultDate);
return resultDate;
},
_utcTimeZone: function() {
this._dLog(" _utcTimeZone is Called");
var zoneId = '';
var testTZ = new GlideDateTime();
var yourDST = testTZ.getDSTOffset();
if (yourDST == 0) {
zoneId = 'UTC+00:00';
} else {
zoneId = 'UTC+01:00';
}
this._dLog(" yourDST =" + yourDST + " zoneId =" + zoneId);
return zoneId;
},
Comments
Post a Comment