Name

global.ScheduleNodesLogsDownload

Description

Schedule a new log download job.

Script

var ScheduleNodesLogsDownload = Class.create();
ScheduleNodesLogsDownload.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  schedule: function() {
      if (!this._isAdmin()) {
          gs.print("User: " + gs.getUserID() + " doesn't have access to ScheduleNodesLogsDownload");
          return;
      }

      var dateArray = this.getDateArray();
      if (dateArray === undefined)
          return;

      var parentTrackerSysID = NodeLogDownloadWorker.createParentTrackerId();
      var tableSysID = this.createNodeLogRecord(parentTrackerSysID);
      this.scheduleJob(tableSysID, parentTrackerSysID);
      return tableSysID;
  },

  cancell: function() {
      if (!this._isAdmin()) {
          gs.print("User: " + gs.getUserID() + " doesn't have access to ScheduleNodesLogsDownload");
          return;
      }

      new NodeLogDownloadWorker(this.getParameter("sysparm_tableSysID"), this.getParameter("sysparm_executionTrackerID")).cancelExecutionTracker();
  },

  getDateArray: function() {
      if (!this._isAdmin()) {
          gs.print("User: " + gs.getUserID() + " doesn't have access to ScheduleNodesLogsDownload");
          return;
      }

      var dateRange = this.getParameter("sysparm_date_range");
      if (dateRange === undefined || dateRange === null) {
          gs.info("Date not parse correctly");
          return;
      }
      var dateArray = dateRange.split(";");
      if (dateArray.length === 0) {
          gs.info("Date not parse correctly");
          return;
      }
      return dateArray;
  },

  getSelectedSysIDs: function() {
      if (!this._isAdmin()) {
          gs.print("User: " + gs.getUserID() + " doesn't have access to ScheduleNodesLogsDownload");
          return;
      }

      var selectedSysIDsElement = this.getParameter("sysparm_selected_sys_ids");
      var selectedSysIDs = [];
      if (selectedSysIDsElement)
          selectedSysIDs = selectedSysIDsElement.split(";");

      return selectedSysIDs;
  },

  createNodeLogRecord: function(parentTrackerSysID) {
      if (!this._isAdmin()) {
          gs.print("User: " + gs.getUserID() + " doesn't have access to ScheduleNodesLogsDownload");
          return;
      }

      if (!GlideStringUtil.isEligibleSysID(parentTrackerSysID)) {
          gs.print(parentTrackerSysID + " is not a valid sys_id");
          return;
      }

      var dateArray = this.getDateArray();
      var grn = new GlideRecord('node_log_download_info');
      grn.initialize();
      grn.setValue("execution_tracker", parentTrackerSysID);
      grn.setValue('selected_node_number', this.getSelectedSysIDs().length);
      grn.setValue("log_start_date", dateArray[0]);
      grn.setValue("log_end_date", dateArray[dateArray.length - 1]);
      grn.setValue("requested_by", gs.getUserDisplayName());
      var tableSysID = grn.insert();
      return tableSysID;
  },

  scheduleJob: function(tableSysID, parentTrackerSysID) {
      if (!this._isAdmin()) {
          gs.print("User: " + gs.getUserID() + " doesn't have access to ScheduleNodesLogsDownload");
          return;
      }

      if (!GlideStringUtil.isEligibleSysID(tableSysID)) {
          gs.print(tableSysID + " is not a valid sys_id");
          return;
      }

      if (!GlideStringUtil.isEligibleSysID(parentTrackerSysID)) {
          gs.print(parentTrackerSysID + " is not a valid sys_id");
          return;
      }

      var email = this.getParameter("sysparm_email");
      var downloadUrl = this.getParameter('sysparm_protocol') + "//" + this.getParameter('sysparm_host') + "/download_logs.do?sysparm_sys_id=" + tableSysID;
      var childScript = "new AJAXLogDownloadWorker().downloadNow(" + "'" + tableSysID + "', '" + parentTrackerSysID + "', '" + email + "', '" + this.getParameter("sysparm_date_range") + "', '" + downloadUrl + "');";
      var rootScript = "new AJAXLogDownloadWorker().cancellParentTracker('" + tableSysID + "', '" + parentTrackerSysID + "', '" + email + "', '" + this.getParameter("sysparm_date_range") + "', '" + downloadUrl + "');";
      // Set log download time out, can change it in glide.util.logdownloadtimeout
      var time = new GlideDateTime();
      var timeOut = GlideProperties.getInt('glide.util.logdownloadtimeout', 10);
      time.addSeconds(timeOut * 60);
      GlideRunScriptJob.scheduleScript(rootScript, 'Check Node Log Download Parent Progress', time);

      var selectedSysIds = this.getSelectedSysIDs();
      for (var i = 0; i < selectedSysIds.length; i++)
          GlideRunScriptJob.scheduleScriptWithSystemID(childScript, 'Selected Node Log Download', 25, selectedSysIds[i]);

  },

  _isAdmin: function() {
      return gs.hasRole("admin");
  }
});

Sys ID

5ff88ba30b3112005a33061437673a07

Offical Documentation

Official Docs: