Skip to content

Commit 2c69a73

Browse files
jasonpetcsantanapr
authored andcommitted
use a view to retrieve trigger docs (apache#41)
1 parent 2023a67 commit 2c69a73

File tree

3 files changed

+78
-57
lines changed

3 files changed

+78
-57
lines changed

.jshintrc

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"esversion" : 6,
33
"module" : true,
4-
"node" : true
4+
"node" : true,
5+
"predef" : ["emit"]
56
}

provider/app.js

+67-47
Original file line numberDiff line numberDiff line change
@@ -45,40 +45,63 @@ var dbPort = process.env.DB_PORT;
4545
var dbProtocol = process.env.DB_PROTOCOL;
4646
var dbPrefix = process.env.DB_PREFIX;
4747
var databaseName = dbPrefix + constants.TRIGGER_DB_SUFFIX;
48+
var ddname = '_design/filters';
4849

4950
// Create the Provider Server
5051
var server = http.createServer(app);
5152
server.listen(app.get('port'), function(){
5253
logger.info(tid, 'server.listen', 'Express server listening on port ' + app.get('port'));
5354
});
5455

55-
function createDatabase (nanop) {
56-
57-
logger.info(tid, 'createDatabase', 'creating the trigger database');
58-
if (nanop !== null) {
59-
nanop.db.create(databaseName, function(err, body, header) {
60-
if (!err) {
61-
logger.info(tid, databaseName, ' database for triggers was created.');
62-
} else {
63-
logger.info(tid, databaseName, 'failed to create the trigger database. it might already exist ',err);
64-
}
56+
function createDatabase(nanop) {
57+
logger.info(tid, 'createDatabase', 'creating the trigger database');
58+
return new Promise(function(resolve, reject) {
59+
nanop.db.create(databaseName, function (err, body) {
60+
if (!err) {
61+
logger.info(tid, databaseName, ' database for triggers was created.');
62+
} else {
63+
logger.info(tid, databaseName, 'failed to create the trigger database. it might already exist ', err);
64+
}
65+
var db = nanop.db.use(databaseName);
66+
var only_triggers = {
67+
map: function (doc) {
68+
if (doc.maxTriggers) {
69+
emit(doc._id, 1);
70+
}
71+
}.toString()
72+
};
73+
74+
db.get(ddname, function (error, body) {
75+
if (error) {
76+
//new design doc
77+
db.insert({
78+
views: {
79+
only_triggers: only_triggers
80+
},
81+
}, ddname, function (error, body) {
82+
if (error) {
83+
reject("view could not be created: " + error);
84+
}
85+
resolve(db);
86+
});
87+
}
88+
else {
89+
resolve(db);
90+
}
91+
});
92+
});
6593
});
66-
var chDb = nanop.db.use(databaseName);
67-
return chDb;
68-
} else {
69-
logger.info(tid, databaseName, 'failed to create the trigger database. nano provider did not get created. check db URL: ' + dbHost);
70-
return null;
71-
}
72-
7394
}
7495

75-
function createTriggerDb () {
76-
77-
logger.info('url is ' + dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
78-
var nanop = require('nano')(dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
79-
80-
return createDatabase (nanop);
81-
96+
function createTriggerDb() {
97+
logger.info('url is ' + dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
98+
var nanop = require('nano')(dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
99+
if (nanop !== null) {
100+
return createDatabase (nanop);
101+
}
102+
else {
103+
Promise.reject('nano provider did not get created. check db URL: ' + dbHost);
104+
}
82105
}
83106

84107
// Initialize the Provider Server
@@ -92,35 +115,32 @@ function init(server) {
92115
}
93116
}
94117

95-
///
96-
var nanoDb = createTriggerDb();
97-
if (nanoDb === null) {
98-
logger.error(tid, 'init', 'an error occurred creating database');
99-
} else {
100-
101-
logger.info(tid, 'init', 'trigger storage database details: ', nanoDb);
118+
createTriggerDb()
119+
.then(nanoDb => {
120+
logger.info(tid, 'init', 'trigger storage database details: ', nanoDb);
102121

103-
var providerUtils = new ProviderUtils (tid, logger, app, retriesBeforeDelete, nanoDb, routerHost);
104-
var providerRAS = new ProviderRAS (tid, logger, providerUtils);
105-
var providerHealth = new ProviderHealth (tid, logger, providerUtils);
106-
var providerCreate = new ProviderCreate (tid, logger, providerUtils);
107-
var providerDelete = new ProviderDelete (tid, logger, providerUtils);
122+
var providerUtils = new ProviderUtils (tid, logger, app, retriesBeforeDelete, nanoDb, routerHost);
123+
var providerRAS = new ProviderRAS (tid, logger, providerUtils);
124+
var providerHealth = new ProviderHealth (tid, logger, providerUtils);
125+
var providerCreate = new ProviderCreate (tid, logger, providerUtils);
126+
var providerDelete = new ProviderDelete (tid, logger, providerUtils);
108127

109-
// RAS Endpoint
110-
app.get(providerRAS.endPoint, providerRAS.ras);
128+
// RAS Endpoint
129+
app.get(providerRAS.endPoint, providerRAS.ras);
111130

112-
// Health Endpoint
113-
app.get(providerHealth.endPoint, providerHealth.health);
131+
// Health Endpoint
132+
app.get(providerHealth.endPoint, providerHealth.health);
114133

115-
// Endpoint for Creating a new Trigger
116-
app.post(providerCreate.endPoint, providerUtils.authorize, providerCreate.create);
134+
// Endpoint for Creating a new Trigger
135+
app.post(providerCreate.endPoint, providerUtils.authorize, providerCreate.create);
117136

118-
// Endpoint for Deleting an existing Trigger.
119-
app.delete(providerDelete.endPoint, providerUtils.authorize, providerDelete.delete);
137+
// Endpoint for Deleting an existing Trigger.
138+
app.delete(providerDelete.endPoint, providerUtils.authorize, providerDelete.delete);
120139

121-
providerUtils.initAllTriggers();
122-
123-
}
140+
providerUtils.initAllTriggers();
141+
}).catch(err => {
142+
logger.error(tid, 'init', 'an error occurred creating database:', err);
143+
});
124144

125145
}
126146

provider/lib/utils.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,15 @@ module.exports = function(
4747
// the trigger is not already in the list of identified triggers
4848
if (!(triggerIdentifier in that.triggers)) {
4949
cronHandle = new CronJob(newTrigger.cron,
50-
function onTick() {
51-
var triggerHandle = that.triggers[triggerIdentifier];
52-
if(triggerHandle && triggerHandle.triggersLeft > 0 && triggerHandle.retriesLeft > 0) {
53-
that.fireTrigger(newTrigger.namespace, newTrigger.name, newTrigger.payload, newTrigger.apikey);
54-
}
50+
function onTick() {
51+
var triggerHandle = that.triggers[triggerIdentifier];
52+
if (triggerHandle && triggerHandle.triggersLeft > 0 && triggerHandle.retriesLeft > 0) {
53+
that.fireTrigger(newTrigger.namespace, newTrigger.name, newTrigger.payload, newTrigger.apikey);
5554
}
56-
);
57-
cronHandle.start();
58-
logger.info(tid, method, triggerIdentifier, 'created successfully');
55+
}
56+
);
57+
cronHandle.start();
58+
logger.info(tid, method, triggerIdentifier, 'created successfully');
5959
}
6060

6161
that.triggers[triggerIdentifier] = {
@@ -187,7 +187,7 @@ module.exports = function(
187187
this.initAllTriggers = function () {
188188
var method = 'initAllTriggers';
189189
logger.info(tid, method, 'resetting system from last state');
190-
that.triggerDB.list({include_docs: true}, function(err, body) {
190+
that.triggerDB.view('filters', 'only_triggers', {include_docs: true}, function(err, body) {
191191
if (!err) {
192192
body.rows.forEach(function(trigger) {
193193
//check if trigger still exists in whisk db

0 commit comments

Comments
 (0)