opennms
Version:
Client API for the OpenNMS network monitoring platform
1 lines • 83.5 kB
JSON
{"remainingRequest":"/data/node_modules/babel-loader/lib/index.js!/data/node_modules/ts-loader/index.js!/data/node_modules/tslint-loader/index.js??ref--4-0!/data/src/dao/AlarmDAO.ts","dependencies":[{"path":"/data/src/dao/AlarmDAO.ts","mtime":1553611371628},{"path":"/data/node_modules/typescript-logging/dist/commonjs/typescript-logging.d.ts","mtime":1553611387808},{"path":"/data/node_modules/typescript-logging/dist/commonjs/control/LogGroupControl.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/control/CategoryServiceControl.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/extension/MessagesToExtensionJSON.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/extension/MessagesFromExtensionJSON.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/extension/ExtensionMessageJSON.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/extension/ExtensionHelper.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/AbstractCategoryLogger.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/LoggerOptions.d.ts","mtime":1553611387932},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryLogger.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryService.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryConsoleLoggerImpl.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryDelegateLoggerImpl.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/category/CategoryMessageBufferImpl.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/Logger.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/LoggerFactory.d.ts","mtime":1553611388004},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/LoggerFactoryService.d.ts","mtime":1553611388004},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/LoggerFactoryRuntimeSettings.d.ts","mtime":1553611388004},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/AbstractLogger.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/ConsoleLoggerImpl.d.ts","mtime":1553611388000},{"path":"/data/node_modules/typescript-logging/dist/commonjs/log/standard/MessageBufferLoggerImpl.d.ts","mtime":1553611388004},{"path":"/data/node_modules/typescript-logging/dist/commonjs/utils/DataStructures.d.ts","mtime":1553611387936},{"path":"/data/node_modules/typescript-logging/dist/commonjs/utils/JSONHelper.d.ts","mtime":1553611387936},{"path":"/data/node_modules/typescript-logging/dist/commonjs/utils/MessageUtils.d.ts","mtime":1553611387936},{"path":"/data/node_modules/moment/moment.d.ts","mtime":1553611386704},{"path":"/data/node_modules/axios/index.d.ts","mtime":1553611386356},{"path":"/data/typings/index.d.ts","mtime":1553611371628},{"path":"/data/node_modules/@types/fs-extra/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/node/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/node/inspector.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/glob/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/minimatch/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/glob/node_modules/@types/minimatch/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/handlebars/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/highlight.js/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/jest/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/jquery/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/lodash/index.d.ts","mtime":1553611386320},{"path":"/data/node_modules/@types/lodash/common/common.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/array.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/collection.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/date.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/function.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/lang.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/math.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/number.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/object.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/seq.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/string.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/lodash/common/util.d.ts","mtime":1553611386984},{"path":"/data/node_modules/@types/marked/index.d.ts","mtime":1553611386368},{"path":"/data/node_modules/@types/shelljs/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/@types/urijs/index.d.ts","mtime":1553611386380},{"path":"/data/node_modules/typescript/lib/lib.es2015.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.core.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.collection.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.generator.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.promise.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.iterable.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.symbol.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.proxy.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.reflect.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","mtime":1553611387384},{"path":"/data/node_modules/typescript/lib/lib.es5.d.ts","mtime":1553611387388},{"path":"/data/node_modules/typescript/lib/lib.dom.d.ts","mtime":1553611387384},{"path":"/data/src/dao/AbstractDAO.ts","mtime":1553611371628},{"path":"/data/src/dao/EventDAO.ts","mtime":1553611371628},{"path":"/data/src/api/Filter.ts","mtime":1553611371624},{"path":"/data/src/api/IHasHTTP.ts","mtime":1553611371624},{"path":"/data/src/internal/IHash.ts","mtime":1553611371628},{"path":"/data/src/api/IOnmsHTTP.ts","mtime":1553611371624},{"path":"/data/src/api/OnmsError.ts","mtime":1553611371624},{"path":"/data/src/api/OnmsHTTPOptions.ts","mtime":1553611371624},{"path":"/data/src/api/OnmsResult.ts","mtime":1553611371624},{"path":"/data/src/api/SearchProperty.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsAlarm.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsAlarmSummary.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsAlarmType.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsParm.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsServiceType.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsSeverity.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsTroubleTicketState.ts","mtime":1553611371628},{"path":"/data/src/model/OnmsMemo.ts","mtime":1553611371628},{"path":"/data/src/api/Log.ts","mtime":1553611371624},{"path":"/data/node_modules/typescript-logging/dist/commonjs/typescript-logging.d.ts","mtime":1553611387808},{"path":"/data/.babelrc","mtime":1553611371556},{"path":"/data/node_modules/cache-loader/dist/cjs.js","mtime":1553611387012},{"path":"/data/node_modules/babel-loader/lib/index.js","mtime":1553611386992},{"path":"/data/node_modules/ts-loader/index.js","mtime":1553611386824},{"path":"/data/node_modules/tslint-loader/index.js","mtime":1553611386824}],"contextDependencies":[],"result":["\"use strict\";\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AbstractDAO_1 = require(\"./AbstractDAO\");\nvar EventDAO_1 = require(\"./EventDAO\");\nvar OnmsError_1 = require(\"../api/OnmsError\");\nvar OnmsHTTPOptions_1 = require(\"../api/OnmsHTTPOptions\");\nvar OnmsAlarm_1 = require(\"../model/OnmsAlarm\");\nvar OnmsAlarmType_1 = require(\"../model/OnmsAlarmType\");\nvar OnmsParm_1 = require(\"../model/OnmsParm\");\nvar OnmsServiceType_1 = require(\"../model/OnmsServiceType\");\nvar OnmsSeverity_1 = require(\"../model/OnmsSeverity\");\nvar OnmsTroubleTicketState_1 = require(\"../model/OnmsTroubleTicketState\");\nvar OnmsMemo_1 = require(\"../model/OnmsMemo\");\nvar Log_1 = require(\"../api/Log\");\nvar typescript_logging_1 = require(\"typescript-logging\");\n/** @hidden */\nvar cat = new typescript_logging_1.Category('alarms', Log_1.catDao);\n/**\n * Data access for [[OnmsAlarm]] objects.\n * @module AlarmDAO\n */\n\nvar AlarmDAO = function (_AbstractDAO_1$Abstra) {\n _inherits(AlarmDAO, _AbstractDAO_1$Abstra);\n\n function AlarmDAO(impl) {\n _classCallCheck(this, AlarmDAO);\n\n var _this = _possibleConstructorReturn(this, (AlarmDAO.__proto__ || Object.getPrototypeOf(AlarmDAO)).call(this, impl));\n\n _this.eventDao = new EventDAO_1.EventDAO(impl);\n return _this;\n }\n /**\n * Fetch an alarm.\n *\n * @version ReST v1+\n * @param {number} id - The alarm's ID.\n * @return An [[OnmsAlarm]].\n */\n\n\n _createClass(AlarmDAO, [{\n key: \"get\",\n value: function get(id) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this2 = this;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", this.getOptions().then(function (opts) {\n return _this2.http.get(_this2.pathToAlarmsEndpoint() + '/' + id, opts).then(function (result) {\n return _this2.fromData(result.data);\n });\n }));\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n }\n /**\n * Find matching alarms.\n *\n * @version ReST v1+\n * @param {Filter} filter - The filter to use when querying.\n * @return An array of [[OnmsAlarm]] objects.\n */\n\n }, {\n key: \"find\",\n value: function find(filter) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var _this3 = this;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", this.getOptions(filter).then(function (opts) {\n return _this3.http.get(_this3.pathToAlarmsEndpoint(), opts).then(function (result) {\n var data = _this3.getData(result);\n if (!Array.isArray(data)) {\n if (!data) {\n return [];\n }\n throw new OnmsError_1.OnmsError('Expected an array of alarms but got \"' + (typeof data === \"undefined\" ? \"undefined\" : _typeof(data)) + '\" instead.');\n }\n return data.map(function (alarmData) {\n return _this3.fromData(alarmData);\n });\n });\n }));\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n }\n /**\n * Extracts the data from an HTTP Request result.\n *\n * @param result the HTTP Request result.\n * @returns An array of [[OnmsAlarm]] objects.\n */\n\n }, {\n key: \"getData\",\n value: function getData(result) {\n var data = result.data;\n if (data !== null && this.getCount(data) > 0 && data.alarm) {\n data = data.alarm;\n } else {\n data = [];\n }\n if (!Array.isArray(data)) {\n if (data.id) {\n data = [data];\n } else {\n throw new OnmsError_1.OnmsError('Expected an array of alarms but got \"' + (typeof data === \"undefined\" ? \"undefined\" : _typeof(data)) + '\" instead.');\n }\n }\n return data;\n }\n /**\n * Acknowledge an alarm.\n *\n * @version ReST v1+\n * @param {number|OnmsAlarm} id - The [[OnmsAlarm]] or alarm ID.\n * @param {string=} user - The user to ack the alarm as.\n * (Only administrators have the right to do this.)\n */\n\n }, {\n key: \"acknowledge\",\n value: function acknowledge(alarm, user) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var alarmId, parameters;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n parameters = {};\n\n parameters.ack = 'true';\n if (user !== undefined) {\n parameters.ackUser = user;\n }\n return _context3.abrupt(\"return\", this.put(this.pathToAlarmsEndpoint() + '/' + alarmId, parameters));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n }\n /**\n * Un-acknowledge an alarm.\n *\n * @version ReST v1+\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n */\n\n }, {\n key: \"unacknowledge\",\n value: function unacknowledge(alarm, user) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var alarmId, parameters;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n parameters = {};\n\n parameters.ack = 'false';\n if (user !== undefined) {\n parameters.ackUser = user;\n }\n return _context4.abrupt(\"return\", this.put(this.pathToAlarmsEndpoint() + '/' + alarmId, parameters));\n\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n }\n /**\n * Escalate an alarm.\n *\n * @version ReST v1+\n * @param {number|OnsmAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n */\n\n }, {\n key: \"escalate\",\n value: function escalate(alarm) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var alarmId, parameters;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n parameters = {};\n\n parameters.escalate = 'true';\n return _context5.abrupt(\"return\", this.put(this.pathToAlarmsEndpoint() + '/' + alarmId, parameters));\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n }\n /**\n * Clear an alarm.\n *\n * @version ReST v1+\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n */\n\n }, {\n key: \"clear\",\n value: function clear(alarm) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var alarmId, parameters;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n parameters = {};\n\n parameters.clear = 'true';\n return _context6.abrupt(\"return\", this.put(this.pathToAlarmsEndpoint() + '/' + alarmId, parameters));\n\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n }\n /**\n * Associate a ticket ID with the alarm.\n *\n * @version ReST v1+\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n * @param {string} ticketId - The ticket ID.\n */\n\n }, {\n key: \"setTTicketId\",\n value: function setTTicketId(alarm, ticketId) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee7() {\n var alarmId, parameters;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n parameters = {};\n\n parameters.ticketId = ticketId;\n return _context7.abrupt(\"return\", this.put(this.pathToAlarmsEndpoint() + '/' + alarmId, parameters));\n\n case 4:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n }\n /**\n * Update the state of the ticket associated with the alarm.\n *\n * @version ReST v1+\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n * @param {string} state - The ticket state.\n */\n\n }, {\n key: \"setTTicketState\",\n value: function setTTicketState(alarm, state) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee8() {\n var alarmId, parameters;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n parameters = {};\n\n parameters.ticketState = state.label;\n return _context8.abrupt(\"return\", this.put(this.pathToAlarmsEndpoint() + '/' + alarmId, parameters));\n\n case 4:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n }\n /**\n * Create a trouble ticket for the specified alarm.\n *\n * @version ReST v2\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n */\n\n }, {\n key: \"createTicket\",\n value: function createTicket(alarm) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee9() {\n var _this4 = this;\n\n var alarmId, options;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (!(this.getApiVersion() === 1)) {\n _context9.next = 2;\n break;\n }\n\n throw new OnmsError_1.OnmsError('Create/Update/Close ticket is only available in OpenNMS ' + 'versions that support the ReSTv2 API.');\n\n case 2:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n options = new OnmsHTTPOptions_1.OnmsHTTPOptions();\n\n options.headers.accept = 'text/plain';\n return _context9.abrupt(\"return\", this.http.post(this.pathToAlarmsEndpoint() + '/' + alarmId + '/ticket/create', options).then(function () {\n Log_1.log.debug('Ticket creation pending.', cat);\n }).catch(function (err) {\n if (err.code === 501) {\n Log_1.log.warn('Trouble ticketing is not enabled on ' + _this4.http.server.toString());\n }\n throw err;\n }));\n\n case 6:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n }\n /**\n * Notify OpenNMS it should fetch updated ticket state for an alarm from the remote ticketing system.\n *\n * @version ReST v2\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n */\n\n }, {\n key: \"triggerTicketUpdate\",\n value: function triggerTicketUpdate(alarm) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee10() {\n var _this5 = this;\n\n var alarmId, options;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (!(this.getApiVersion() === 1)) {\n _context10.next = 2;\n break;\n }\n\n throw new OnmsError_1.OnmsError('Create/Update/Close ticket is only available in OpenNMS ' + 'versions that support the ReSTv2 API.');\n\n case 2:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n options = new OnmsHTTPOptions_1.OnmsHTTPOptions();\n\n options.headers.accept = 'text/plain';\n return _context10.abrupt(\"return\", this.http.post(this.pathToAlarmsEndpoint() + '/' + alarmId + '/ticket/update', options).then(function () {\n Log_1.log.debug('Ticket update pending.', cat);\n }).catch(function (err) {\n if (err.code === 501) {\n Log_1.log.warn('Trouble ticketing is not enabled on ' + _this5.http.server.toString());\n }\n throw err;\n }));\n\n case 6:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n }\n /**\n * Close the ticket associated with the given alarm.\n *\n * @version ReST v2\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n */\n\n }, {\n key: \"closeTicket\",\n value: function closeTicket(alarm) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee11() {\n var _this6 = this;\n\n var alarmId, options;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!(this.getApiVersion() === 1)) {\n _context11.next = 2;\n break;\n }\n\n throw new OnmsError_1.OnmsError('Create/Update/Close ticket is only available in OpenNMS ' + 'versions that support the ReSTv2 API.');\n\n case 2:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n options = new OnmsHTTPOptions_1.OnmsHTTPOptions();\n\n options.headers.accept = 'text/plain';\n return _context11.abrupt(\"return\", this.http.post(this.pathToAlarmsEndpoint() + '/' + alarmId + '/ticket/close', options).then(function () {\n Log_1.log.debug('Ticket close pending.', cat);\n }).catch(function (err) {\n if (err.code === 501) {\n Log_1.log.warn('Trouble ticketing is not enabled on ' + _this6.http.server.toString());\n }\n throw err;\n }));\n\n case 6:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n }\n /**\n * Create or update the sticky memo associated with the alarm.\n *\n * @version ReST v2\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n * @param {string} body - The memo body\n * @param {string=} user - The user to update the memo as.\n * (Only administrators have the right to do this.)\n */\n\n }, {\n key: \"saveStickyMemo\",\n value: function saveStickyMemo(alarm, body, user) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee12() {\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n return _context12.abrupt(\"return\", this.saveMemo('memo', alarm, body, user));\n\n case 1:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n }\n /**\n * Create or update the journal memo associated with the alarm.\n *\n * @version ReST v2\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n * @param {string} body - The memo body\n * @param {string=} user - The user to update the memo as.\n * (Only administrators have the right to do this.)\n */\n\n }, {\n key: \"saveJournalMemo\",\n value: function saveJournalMemo(alarm, body, user) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee13() {\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n return _context13.abrupt(\"return\", this.saveMemo('journal', alarm, body, user));\n\n case 1:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n }\n /**\n * Delete the sticky memo ticket associated with the given alarm.\n *\n * @version ReST v2\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n */\n\n }, {\n key: \"deleteStickyMemo\",\n value: function deleteStickyMemo(alarm) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee14() {\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n return _context14.abrupt(\"return\", this.deleteMemo('memo', alarm));\n\n case 1:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n }\n /**\n * Delete the journal memo ticket associated with the given alarm.\n *\n * @version ReST v2\n * @param {number|OnmsAlarm} alarm - The [[OnmsAlarm]] or alarm ID.\n */\n\n }, {\n key: \"deleteJournalMemo\",\n value: function deleteJournalMemo(alarm) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee15() {\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n return _context15.abrupt(\"return\", this.deleteMemo('journal', alarm));\n\n case 1:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n }\n /**\n * Generate an alarm object from the given dictionary.\n * @hidden\n */\n\n }, {\n key: \"fromData\",\n value: function fromData(data) {\n var alarm = new OnmsAlarm_1.OnmsAlarm();\n alarm.id = this.toNumber(data.id);\n alarm.count = data.count;\n alarm.ackUser = data.ackUser;\n alarm.uei = data.uei;\n alarm.description = data.description;\n alarm.firstEventTime = this.toDate(data.firstEventTime);\n alarm.lastEvent = this.eventDao.fromData(data.lastEvent);\n alarm.location = data.location;\n alarm.logMessage = data.logMessage;\n alarm.reductionKey = data.reductionKey;\n alarm.troubleTicket = data.troubleTicket;\n alarm.troubleTicketLink = data.troubleTicketLink;\n alarm.nodeId = this.toNumber(data.nodeId);\n alarm.nodeLabel = data.nodeLabel;\n alarm.suppressedBy = data.suppressedBy;\n alarm.operatorInstructions = data.operatorInstructions;\n if (data.ackTime) {\n alarm.ackTime = this.toDate(data.ackTime);\n }\n if (data.severity) {\n alarm.severity = OnmsSeverity_1.Severities[data.severity];\n }\n if (data.type) {\n var type = this.toNumber(data.type);\n alarm.type = OnmsAlarmType_1.AlarmTypes[type];\n }\n if (typeof data.troubleTicketState !== 'undefined') {\n var troubleTicketKey = Object.keys(OnmsTroubleTicketState_1.TroubleTicketStates).find(function (key) {\n return OnmsTroubleTicketState_1.TroubleTicketStates[key].id === data.troubleTicketState;\n });\n if (troubleTicketKey) {\n alarm.troubleTicketState = OnmsTroubleTicketState_1.TroubleTicketStates[troubleTicketKey];\n }\n }\n if (data.serviceType) {\n var st = data.serviceType;\n alarm.service = OnmsServiceType_1.OnmsServiceType.for(st.id, st.name);\n }\n if (data.suppressedTime) {\n alarm.suppressedTime = this.toDate(data.suppressedTime);\n }\n if (data.suppressedUntil) {\n alarm.suppressedUntil = this.toDate(data.suppressedUntil);\n }\n if (data.parameters) {\n var parms = data.parameters;\n if (parms.parameter) {\n parms = parms.parameter;\n }\n if (!Array.isArray(parms)) {\n parms = [parms];\n }\n alarm.parameters = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = parms[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var parm = _step.value;\n\n parm = new OnmsParm_1.OnmsParm(parm.name, parm.type, parm.value);\n alarm.parameters.push(parm);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n alarm.relatedAlarms = data.relatedAlarms;\n alarm.managedObjectType = data.managedObjectType;\n alarm.managedObjectInstance = data.managedObjectInstance;\n alarm.sticky = this.toMemo(data.stickyMemo);\n alarm.journal = this.toMemo(data.reductionKeyMemo);\n alarm.detailsPage = this.getDetailsPage(alarm);\n alarm.affectedNodeCount = data.affectedNodeCount;\n return alarm;\n }\n /**\n * Generate a memo from the given dictionary.\n * @hidden\n */\n\n }, {\n key: \"toMemo\",\n value: function toMemo(data) {\n if (!data) {\n return null;\n }\n var memo = new OnmsMemo_1.OnmsMemo();\n memo.id = data.id;\n memo.author = data.author;\n memo.body = data.body;\n memo.created = this.toDate(data.created);\n memo.updated = this.toDate(data.updated);\n return memo;\n }\n /**\n * The path to the alarm search properties endpoint.\n */\n\n }, {\n key: \"searchPropertyPath\",\n value: function searchPropertyPath() {\n return this.pathToAlarmsEndpoint() + '/properties';\n }\n /**\n * Given an optional filter, generate an [[OnmsHTTPOptions]] object for DAO calls.\n * @hidden\n */\n\n }, {\n key: \"getOptions\",\n value: function getOptions(filter) {\n var _this7 = this;\n\n var _super = function _super(name) {\n return _get(AlarmDAO.prototype.__proto__ || Object.getPrototypeOf(AlarmDAO.prototype), name, _this7);\n };\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee16() {\n var _this8 = this;\n\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n return _context16.abrupt(\"return\", _super(\"getOptions\").call(this, filter).then(function (options) {\n // always use application/json for v2 calls\n if (_this8.getApiVersion() === 2) {\n options.headers.accept = 'application/json';\n }\n return options;\n }));\n\n case 1:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n }\n /**\n * Call a PUT request in the format the alarm ack API expects.\n * @hidden\n */\n\n }, {\n key: \"put\",\n value: function put(url) {\n var parameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee17() {\n var _this9 = this;\n\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n return _context17.abrupt(\"return\", this.getOptions().then(function (opts) {\n opts.headers['content-type'] = 'application/x-www-form-urlencoded';\n opts.headers.accept = null;\n opts.parameters = parameters;\n return _this9.http.put(url, opts).then(function (result) {\n if (!result.isSuccess) {\n throw result;\n }\n return;\n });\n }));\n\n case 1:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n }\n /**\n * Call a DELETE request in the format the alarm ack API expects.\n * @hidden\n */\n\n }, {\n key: \"httpDelete\",\n value: function httpDelete(url) {\n var parameters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee18() {\n var _this10 = this;\n\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n return _context18.abrupt(\"return\", this.getOptions().then(function (opts) {\n opts.headers['content-type'] = 'application/x-www-form-urlencoded';\n opts.headers.accept = null;\n opts.parameters = parameters;\n return _this10.http.httpDelete(url, opts).then(function (result) {\n if (!result.isSuccess) {\n throw result;\n }\n return;\n });\n }));\n\n case 1:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n }\n /**\n * Get the path to the alarms endpoint for the appropriate API version.\n * @hidden\n */\n\n }, {\n key: \"pathToAlarmsEndpoint\",\n value: function pathToAlarmsEndpoint() {\n return this.getApiVersion() === 2 ? 'api/v2/alarms' : 'rest/alarms';\n }\n /**\n * Save a journal or sticky memo.\n * @hidden\n */\n\n }, {\n key: \"saveMemo\",\n value: function saveMemo(type, alarm, body, user) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee19() {\n var alarmId, parameters;\n return _regenerator2.default.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n if (!(this.getApiVersion() === 1)) {\n _context19.next = 2;\n break;\n }\n\n throw new OnmsError_1.OnmsError('Save/Delete memo is only available in OpenNMS ' + 'versions that support the ReSTv2 API.');\n\n case 2:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n parameters = {};\n\n parameters.body = body;\n if (user !== undefined) {\n parameters.user = user;\n }\n return _context19.abrupt(\"return\", this.put(this.pathToAlarmsEndpoint() + '/' + alarmId + '/' + type, parameters));\n\n case 7:\n case \"end\":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n }\n /**\n * Delete a journal or sticky memo\n * @hidden\n */\n\n }, {\n key: \"deleteMemo\",\n value: function deleteMemo(type, alarm) {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee20() {\n var alarmId;\n return _regenerator2.default.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n if (!(this.getApiVersion() === 1)) {\n _context20.next = 2;\n break;\n }\n\n throw new OnmsError_1.OnmsError('Save/Delete memo is only available in OpenNMS ' + 'versions that support the ReSTv2 API.');\n\n case 2:\n alarmId = typeof alarm === 'number' ? alarm : alarm.id;\n return _context20.abrupt(\"return\", this.httpDelete(this.pathToAlarmsEndpoint() + '/' + alarmId + '/' + type));\n\n case 4:\n case \"end\":\n