added svcapi ui and camunda code
[it/otf.git] / otf-frontend / server / src / agenda / agenda.js
1 /*  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
2 #                                                                              #\r
3 #   Licensed under the Apache License, Version 2.0 (the "License");            #\r
4 #   you may not use this file except in compliance with the License.           #\r
5 #   You may obtain a copy of the License at                                    #\r
6 #                                                                              #\r
7 #       http://www.apache.org/licenses/LICENSE-2.0                             #\r
8 #                                                                              #\r
9 #   Unless required by applicable law or agreed to in writing, software        #\r
10 #   distributed under the License is distributed on an "AS IS" BASIS,          #\r
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #\r
12 #   See the License for the specific language governing permissions and        #\r
13 #   limitations under the License.                                             #\r
14 ##############################################################################*/\r
15 \r
16 \r
17 const logger = require('../lib/logger');\r
18 const Agenda = require('agenda');\r
19 const mongoData = require('config').mongo;\r
20 const jobTypes = ['test-execution-job'];\r
21 const agenda = new Agenda({\r
22         db: {\r
23                 address: 'mongodb://' + mongoData.username + ':' + mongoData.password + '@' + mongoData.baseUrl + mongoData.dbOtf + '?replicaSet=' + mongoData.replicaSet,\r
24                 collection: 'agenda'\r
25         }\r
26 });\r
27 \r
28 module.exports = {\r
29         agenda: agenda,\r
30         initializeAgenda: function () {\r
31                 // Load all job types\r
32                 jobTypes.forEach(type => {\r
33                         require('./jobs/' + type)(agenda);\r
34                 });\r
35 \r
36                 // Wait for the db connection to be established before starting agenda (sync).\r
37                 agenda.on('ready', function () {\r
38                         logger.debug('Agenda successfully established a connection to MongoDB.');\r
39                         agenda.start();\r
40                         // agenda.processEvery('0.001 seconds');\r
41                 });\r
42 \r
43                 async function graceful () {\r
44                         await agenda.stop();\r
45                         process.exit(0);\r
46                 }\r
47 \r
48                 process.on('SIGTERM', graceful);\r
49                 process.on('SIGINT', graceful);\r
50         }\r
51 };\r