Skip to content

Commit 0099034

Browse files
committedJul 16, 2019
ch07s02 add application for GE
1 parent 4463a8b commit 0099034

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed
 

‎probes/app.js

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
var express = require('express'),
2+
app = express();
3+
4+
var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080,
5+
ip = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0';
6+
7+
var route = express.Router();
8+
9+
// global var to track app health
10+
var healthy = true;
11+
12+
app.use('/', route);
13+
14+
// A route that says hello
15+
route.get('/', function(req, res) {
16+
res.send('Hello! This is the index page for the app.\n');
17+
});
18+
19+
// A route that returns readiness status
20+
// simulates readiness 30 seconds after start up
21+
route.get('/ready', function(req, res) {
22+
var now = Math.floor(Date.now() / 1000);
23+
var lapsed = now - started;
24+
if (lapsed > 30) {
25+
console.log('ping /ready => pong [ready]');
26+
res.send('Ready for service requests...\n');
27+
}
28+
else {
29+
console.log('ping /ready => pong [notready]');
30+
res.status(503);
31+
res.send('Error! Service not ready for requests...\n');
32+
}
33+
});
34+
35+
// A route that returns health status
36+
route.get('/healthz', function(req, res) {
37+
if (healthy) {
38+
console.log('ping /healthz => pong [healthy]');
39+
res.send('OK\n');
40+
}
41+
else {
42+
console.log('ping /healthz => pong [unhealthy]');
43+
res.status(503);
44+
res.send('Error!. App not healthy!\n');
45+
}
46+
});
47+
48+
// This route handles switching the state of the app
49+
route.route('/flip').get(function(req, res) {
50+
51+
var flag = req.query.op;
52+
if (flag == "kill") {
53+
console.log('Received kill request. Changing app state to unhealthy...');
54+
healthy = false;
55+
res.send('Switched app state to unhealthy...\n');
56+
}
57+
else if (flag == "awaken") {
58+
console.log('Received awaken request. Changing app state to healthy...');
59+
healthy = true;
60+
res.send('Switched app state to healthy...\n');
61+
}
62+
else {
63+
res.send('Error! unknown flag...\n');
64+
}
65+
});
66+
67+
app.listen(port, ip);
68+
console.log('nodejs server running on http://%s:%s', ip, port);
69+
var started = Math.floor(Date.now() / 1000);
70+
71+
module.exports = app;

‎probes/package.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "probes",
3+
"version": "1.0.0",
4+
"description": "A simple Node.js app to demonstrate readiness and liveness probes",
5+
"main": "app.js",
6+
"scripts": {
7+
"start": "node app.js"
8+
},
9+
"author": "Red Hat Training",
10+
"license": "ASL",
11+
"dependencies": {
12+
"express": "4.14.x"
13+
}
14+
}

0 commit comments

Comments
 (0)
Please sign in to comment.