Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Register
Sign in
Toggle navigation
Menu
UPSMF
knowledge-mw-service
Commits
bf53b2e6
Commit
bf53b2e6
authored
7 years ago
by
anuj
Browse files
Options
Download
Patches
Plain Diff
Issue #SB-1905 fix: health check api
parent
21c1b606
master
dependabot/npm_and_yarn/src/async-2.6.4
dependabot/npm_and_yarn/src/decode-uri-component-0.2.2
dependabot/npm_and_yarn/src/flat-and-mocha-5.0.2
dependabot/npm_and_yarn/src/handlebars-4.7.7
dependabot/npm_and_yarn/src/jsonwebtoken-9.0.0
dependabot/npm_and_yarn/src/lodash-4.17.21
dependabot/npm_and_yarn/src/minimist-and-project-sunbird/telemetry-sdk-and-handlebars-and-mkdirp-1.2.8
release-3.6.0
release-4.3.0
release-4.8.0
release-5.2.0
release-5.3.0
release-5.6.0
release-6.0.0
v1.13.3
v1.13
v1.12
v1.11.1
v1.11
v1.10.1
v1.10
v1.9
v1.8.2
v1.8
v1.7.1
v1.7
v1.6
v1.5.1
v1.5
tmp-testPR
tmp-sunbird-bootcamp
tmp-rjshrjndrn-patch-1
tmp-revert-118-testPR
tmp-revert-110-logs
tmp-revert-99-revert-98-revert-97-revert-96-rjshrjndrn-patch-1
tmp-revert-98-revert-97-revert-96-rjshrjndrn-patch-1
tmp-revert-97-revert-96-rjshrjndrn-patch-1
tmp-revert-96-rjshrjndrn-patch-1
tmp-release-sonarcloud
tmp-release-2.6.0
tmp-release-2.3.0
tmp-release-2.1.1
tmp-release-2.1.0
tmp-release-2.1.0_pluginSearch
tmp-release-2.0.0
tmp-release-1.15
tmp-release-1.14.3
tmp-release-1.14
tmp-release-1.14-sp3
tmp-release-1.8.3
tmp-refactored-dev-deploy
tmp-master
tmp-loadtest
tmp-load-testing
tmp-jenkins-test
tmp-jenkins-pipeline
tmp-final-variable-refac
tmp-dial-assemble-api
tmp-content-update-read
tmp-circleci
release-5.6.0_RC1
release-5.2.0_RC1
release-4.8.5_RC1
release-4.8.0_RC2
release-4.8.0_RC1
release-4.3.0_RC1
release-3.8.0_RC3
release-3.8.0_RC2
release-3.8.0_RC1
release-3.7.0_RC2
release-3.7.0_RC1
release-3.6.0_RC1
release-3.2.0_RC2
release-3.2.0_RC1
release-3.1.0
release-3.1.0_RC2
release-3.1.0_RC1
release-3.0.1_RC1
release-3.0.0
release-3.0.0_RC1
release-2.10.0
release-2.10.0_RC2
release-2.10.0_RC1
release-2.9.0_RC3
release-2.9.0_RC2
release-2.9.0_RC1
release-2.8.0
release-2.8.0_RC4
release-2.8.0_RC3
release-2.8.0_RC2
release-2.8.0_RC1
release-2.7.0
release-2.7.0_RC2
release-2.7.0_RC1
release-2.6.0
release-2.6.0_RC4
release-2.6.0_RC3
release-2.6.0_RC2
release-2.6.0_RC1
release-2.3.0
release-2.3.0_RC2
release-2.3.0_RC1
release-2.1.1_RC1
release-2.1.0_RC2
release-2.1.0_RC1
release-2.0.0
release-2.0.0_RC5
release-2.0.0_RC4
release-2.0.0_RC3
release-2.0.0_RC2
release-2.0.0_RC1
release-1.15.0
release-1.15_RC7
release-1.15_RC6
release-1.15_RC5
release-1.15_RC4
release-1.15_RC3
release-1.15_RC2
release-1.15_RC1
release-1.14.0
No related merge requests found
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
src/app.js
+5
-0
src/app.js
src/libs
+1
-1
src/libs
src/service/contentService.js
+81
-64
src/service/contentService.js
src/service/messageUtil.js
+7
-2
src/service/messageUtil.js
src/service/utilsService.js
+6
-1
src/service/utilsService.js
src/utils/cassandraUtil.js
+9
-0
src/utils/cassandraUtil.js
with
109 additions
and
68 deletions
+109
-68
src/app.js
+
5
−
0
View file @
bf53b2e6
...
...
@@ -25,10 +25,15 @@ const contentProviderApiKey = process.env.sunbird_content_provider_api_key
const
learnerServiceApiKey
=
process
.
env
.
sunbird_learner_service_api_key
const
learnerServiceBaseUrl
=
process
.
env
.
sunbird_learner_service_base_url
?
process
.
env
.
sunbird_learner_service_base_url
:
'
https://dev.open-sunbird.org/api
'
const
learnerServiceLocalBaseUrl
=
process
.
env
.
sunbird_learner_service_local_base_url
?
process
.
env
.
sunbird_learner_service_local_base_url
:
'
http://learner-service:9000
'
configUtil
.
setContentProviderApi
(
contentProviderApiConfig
.
API
)
configUtil
.
setConfig
(
'
BASE_URL
'
,
contentProviderBaseUrl
)
configUtil
.
setConfig
(
'
Authorization_TOKEN
'
,
'
Bearer
'
+
contentProviderApiKey
)
configUtil
.
setConfig
(
'
LEARNER_SERVICE_BASE_URL
'
,
learnerServiceBaseUrl
)
configUtil
.
setConfig
(
'
LEARNER_SERVICE_LOCAL_BASE_URL
'
,
learnerServiceLocalBaseUrl
)
configUtil
.
setConfig
(
'
LEARNER_SERVICE_AUTHORIZATION_TOKEN
'
,
'
Bearer
'
+
learnerServiceApiKey
)
configUtil
.
setConfig
(
'
DIALCODE_GENERATE_MAX_COUNT
'
,
20000
)
configUtil
.
setConfig
(
'
CONTENT_UPLOAD_REQ_LIMIT
'
,
reqDataLimitOfContentUpload
)
...
...
This diff is collapsed.
Click to expand it.
libs
@
3552f541
Compare
558c7d68
...
3552f541
Subproject commit 55
8c7d68d3839eea2058ee7423af7f00d3aa6b34
Subproject commit
3
55
2f5411e6b5984a66efcc43e84d988d7ef6126
This diff is collapsed.
Click to expand it.
src/service/contentService.js
+
81
−
64
View file @
bf53b2e6
...
...
@@ -19,12 +19,13 @@ var contentModel = require('../models/contentModel').CONTENT
var
messageUtils
=
require
(
'
./messageUtil
'
)
var
utilsService
=
require
(
'
../service/utilsService
'
)
var
emailService
=
require
(
'
./emailService
'
)
var
cassandraUtils
=
require
(
'
../utils/cassandraUtil
'
)
var
filename
=
path
.
basename
(
__filename
)
var
contentMessage
=
messageUtils
.
CONTENT
var
compositeMessage
=
messageUtils
.
COMPOSITE
var
responseCode
=
messageUtils
.
RESPONSE_CODE
//
var hcMessages = messageUtils.HEALTH_CHECK
var
hcMessages
=
messageUtils
.
HEALTH_CHECK
var
reqMsg
=
messageUtils
.
REQUEST
/**
...
...
@@ -52,71 +53,87 @@ function getContentTypeForContent () {
}
// Function help to check health api
//
function getChecksObj (name, healthy, err, errMsg) {
//
return {
//
name: name,
//
healthy: healthy,
//
err: err,
//
errmsg: errMsg
//
}
//
};
function
getChecksObj
(
name
,
healthy
,
err
,
errMsg
)
{
return
{
name
:
name
,
healthy
:
healthy
,
err
:
err
,
errmsg
:
errMsg
}
};
// Function help to check health api
//
function getHealthCheckResp (rsp, healthy, checksArrayObj) {
//
delete rsp.responseCode
//
rsp.result = {}
//
rsp.result.name = messageUtils.SERVICE.NAME
//
rsp.result.version = messageUtils.API_VERSION.V1
//
rsp.result.healthy = healthy
//
rsp.result.check = checksArrayObj
//
return rsp
//
}
function
getHealthCheckResp
(
rsp
,
healthy
,
checksArrayObj
)
{
delete
rsp
.
responseCode
rsp
.
result
=
{}
rsp
.
result
.
name
=
messageUtils
.
SERVICE
.
NAME
rsp
.
result
.
version
=
messageUtils
.
API_VERSION
.
V1
rsp
.
result
.
healthy
=
healthy
rsp
.
result
.
check
=
checksArrayObj
return
rsp
}
function
checkHealth
(
req
,
response
)
{
return
response
.
status
(
200
).
send
(
'
ok
'
)
// var rspObj = req.rspObj;
// var checksArrayObj = [];
// var isEkStepHealthy, isLSHealthy, isDbConnected;
// var csApiStart = Date.now();
// async.parallel([
// function(CB) {
// var apiCallStart = Date.now();
// contentProvider.ekStepHealthCheck(function(err, res) {
// if(res && res.result && res.result.healthy) {
// isEkStepHealthy = true;
// checksArrayObj.push(getChecksObj(hcMessages.EK_STEP.NAME, isEkStepHealthy, "", ""));
// } else {
// isEkStepHealthy = false;
// checksArrayObj.push(getChecksObj(hcMessages.EK_STEP.NAME, isEkStepHealthy,
// hcMessages.EK_STEP.FAILED_CODE, hcMessages.EK_STEP.FAILED_MESSAGE));
// }
// CB();
// })
// },
// function(CB) {
// var apiCallStart = Date.now();
// contentProvider.learnerServiceHealthCheck(function(err, res) {
// if(res && res.result && res.result.healthy) {
// isLSHealthy = true;
// checksArrayObj.push(getChecksObj(hcMessages.LEARNER_SERVICE.NAME, isLSHealthy, "", ""));
// } else {
// isLSHealthy = false;
// checksArrayObj.push(getChecksObj(hcMessages.LEARNER_SERVICE.NAME,
// isLSHealthy, hcMessages.LEARNER_SERVICE.FAILED_CODE,
// hcMessages.LEARNER_SERVICE.FAILED_MESSAGE));
// }
// CB();
// })
// }
// ], function() {
// if(isEkStepHealthy && isLSHealthy && isDbConnected) {
// var rsp = respUtil.successResponse(rspObj);
// return response.status(200).send(getHealthCheckResp(rsp, true, checksArrayObj));
// } else {
// var rsp = respUtil.successResponse(rspObj);
// return response.status(500).send(getHealthCheckResp(rsp, false, checksArrayObj));
// }
// });
var
rspObj
=
req
.
rspObj
var
checksArrayObj
=
[]
var
isEkStepHealthy
var
isLSHealthy
var
isDbConnected
async
.
parallel
([
function
(
CB
)
{
var
cassandraStatus
=
cassandraUtils
.
getCassandraStatus
()
if
(
cassandraStatus
)
{
isDbConnected
=
true
checksArrayObj
.
push
(
getChecksObj
(
hcMessages
.
CASSANDRA_DB
.
NAME
,
isDbConnected
,
''
,
''
))
}
else
{
isDbConnected
=
false
checksArrayObj
.
push
(
getChecksObj
(
hcMessages
.
CASSANDRA_DB
.
NAME
,
isDbConnected
,
hcMessages
.
CASSANDRA_DB
.
FAILED_CODE
,
hcMessages
.
CASSANDRA_DB
.
FAILED_MESSAGE
))
}
CB
()
},
function
(
CB
)
{
contentProvider
.
ekStepHealthCheck
(
function
(
err
,
res
)
{
if
(
err
)
{
isEkStepHealthy
=
false
checksArrayObj
.
push
(
getChecksObj
(
hcMessages
.
EK_STEP
.
NAME
,
isEkStepHealthy
,
hcMessages
.
EK_STEP
.
FAILED_CODE
,
hcMessages
.
EK_STEP
.
FAILED_MESSAGE
))
}
else
if
(
res
&&
res
.
result
&&
res
.
result
.
healthy
)
{
isEkStepHealthy
=
true
checksArrayObj
.
push
(
getChecksObj
(
hcMessages
.
EK_STEP
.
NAME
,
isEkStepHealthy
,
''
,
''
))
}
else
{
isEkStepHealthy
=
false
checksArrayObj
.
push
(
getChecksObj
(
hcMessages
.
EK_STEP
.
NAME
,
isEkStepHealthy
,
hcMessages
.
EK_STEP
.
FAILED_CODE
,
hcMessages
.
EK_STEP
.
FAILED_MESSAGE
))
}
CB
()
})
},
function
(
CB
)
{
contentProvider
.
learnerServiceHealthCheck
(
function
(
err
,
res
)
{
if
(
err
)
{
isLSHealthy
=
false
checksArrayObj
.
push
(
getChecksObj
(
hcMessages
.
LEARNER_SERVICE
.
NAME
,
isLSHealthy
,
hcMessages
.
LEARNER_SERVICE
.
FAILED_CODE
,
hcMessages
.
LEARNER_SERVICE
.
FAILED_MESSAGE
))
}
else
if
(
res
&&
res
.
result
&&
res
.
result
.
response
&&
res
.
result
.
response
.
healthy
)
{
isLSHealthy
=
true
checksArrayObj
.
push
(
getChecksObj
(
hcMessages
.
LEARNER_SERVICE
.
NAME
,
isLSHealthy
,
''
,
''
))
}
else
{
isLSHealthy
=
false
checksArrayObj
.
push
(
getChecksObj
(
hcMessages
.
LEARNER_SERVICE
.
NAME
,
isLSHealthy
,
hcMessages
.
LEARNER_SERVICE
.
FAILED_CODE
,
hcMessages
.
LEARNER_SERVICE
.
FAILED_MESSAGE
))
}
CB
()
})
}
],
function
()
{
var
rsp
=
respUtil
.
successResponse
(
rspObj
)
if
(
isEkStepHealthy
&&
isLSHealthy
&&
isDbConnected
)
{
return
response
.
status
(
200
).
send
(
getHealthCheckResp
(
rsp
,
true
,
checksArrayObj
))
}
else
{
return
response
.
status
(
500
).
send
(
getHealthCheckResp
(
rsp
,
false
,
checksArrayObj
))
}
})
}
function
searchAPI
(
req
,
response
)
{
...
...
@@ -410,7 +427,7 @@ function uploadContentAPI (req, response) {
])
})
}
else
{
var
queryString
=
{
fileUrl
:
data
.
queryParams
.
fileUrl
}
var
queryString
=
{
fileUrl
:
data
.
queryParams
.
fileUrl
}
async
.
waterfall
([
function
(
CBW
)
{
...
...
@@ -726,7 +743,7 @@ function retireContentAPI (req, response) {
errMsg
=
res
&&
res
.
params
?
res
.
params
.
errmsg
:
contentMessage
.
GET_MY
.
FAILED_MESSAGE
respCode
=
res
&&
res
.
responseCode
?
res
.
responseCode
:
responseCode
.
SERVER_ERROR
httpStatus
=
res
&&
res
.
statusCode
>=
100
&&
res
.
statusCode
<
600
?
res
.
statusCode
:
500
failedContent
.
push
({
contentId
:
contentId
,
errCode
:
errCode
,
errMsg
:
errMsg
})
failedContent
.
push
({
contentId
:
contentId
,
errCode
:
errCode
,
errMsg
:
errMsg
})
}
CBE
(
null
,
null
)
})
...
...
This diff is collapsed.
Click to expand it.
src/service/messageUtil.js
+
7
−
2
View file @
bf53b2e6
...
...
@@ -406,13 +406,18 @@ exports.EMAIL = {
exports
.
HEALTH_CHECK
=
{
EK_STEP
:
{
NAME
:
'
ekstep.api
'
,
FAILED_CODE
:
'
EK_STEP
_HEALTH_FAILED
'
,
FAILED_MESSAGE
:
'
Ekstep
service is not healthy
'
FAILED_CODE
:
'
CONTENT_PROVIDER
_HEALTH_FAILED
'
,
FAILED_MESSAGE
:
'
Content provider
service is not healthy
'
},
LEARNER_SERVICE
:
{
NAME
:
'
learnerservice.api
'
,
FAILED_CODE
:
'
LEARNER_SERVICE_HEALTH_FAILED
'
,
FAILED_MESSAGE
:
'
Learner service is not healthy
'
},
CASSANDRA_DB
:
{
NAME
:
'
cassandra.db
'
,
FAILED_CODE
:
'
CASSANDRA_HEALTH_FAILED
'
,
FAILED_MESSAGE
:
'
Cassandra db is not connected
'
}
}
...
...
This diff is collapsed.
Click to expand it.
src/service/utilsService.js
+
6
−
1
View file @
bf53b2e6
...
...
@@ -15,7 +15,12 @@ function getAppIDForRESP (path) {
var
arr
=
path
.
split
(
'
:
'
)[
0
].
split
(
'
/
'
).
filter
(
function
(
n
)
{
return
n
!==
''
})
var
appId
=
'
api.
'
+
arr
[
arr
.
length
-
2
]
+
'
.
'
+
arr
[
arr
.
length
-
1
]
var
appId
if
(
arr
.
length
===
1
)
{
appId
=
'
api.
'
+
arr
[
arr
.
length
-
1
]
}
else
{
appId
=
'
api.
'
+
arr
[
arr
.
length
-
2
]
+
'
.
'
+
arr
[
arr
.
length
-
1
]
}
return
appId
}
...
...
This diff is collapsed.
Click to expand it.
src/utils/cassandraUtil.js
+
9
−
0
View file @
bf53b2e6
...
...
@@ -3,6 +3,8 @@ var LOG = require('sb_logger_util')
var
path
=
require
(
'
path
'
)
var
filename
=
path
.
basename
(
__filename
)
var
contactPoints
=
process
.
env
.
sunbird_cassandra_ips
.
split
(
'
,
'
)
var
isCassandraConnected
=
false
models
.
setDirectory
(
path
.
join
(
__dirname
,
'
.
'
,
'
..
'
,
'
models
'
,
'
cassandra
'
)).
bind
(
{
clientOptions
:
{
...
...
@@ -21,12 +23,19 @@ models.setDirectory(path.join(__dirname, '.', '..', 'models', 'cassandra')).bind
},
function
(
err
)
{
if
(
err
)
{
isCassandraConnected
=
false
LOG
.
error
({
filename
,
'
Error connecting to the database:
'
:
err
})
throw
err
}
else
{
isCassandraConnected
=
true
LOG
.
info
({
filename
,
'
connecting to database
'
:
'
success
'
})
}
}
)
function
getCassandraStatus
()
{
return
isCassandraConnected
}
module
.
exports
=
models
module
.
exports
.
getCassandraStatus
=
getCassandraStatus
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets