Added endpoint for app logs

This commit is contained in:
Kasra Bigdeli
2019-01-26 09:02:25 -08:00
parent c79e335b1a
commit b0eb6b5da9
7 changed files with 68 additions and 25 deletions
Submodule captain-sample-apps/react-via-caprover added at 10014e0bd7
+10 -24
View File
@@ -86,9 +86,9 @@
}
},
"@types/dockerode": {
"version": "2.5.10",
"resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-2.5.10.tgz",
"integrity": "sha512-Aiy0iYuWudPOHNc69LYHCfvjzvJ0KaRIkM9o6unMQSOh7rp7/KydUVb5KRGRSoRk9V7uWv9IssEi/ahF4yaOkA==",
"version": "2.5.11",
"resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-2.5.11.tgz",
"integrity": "sha512-9FY53BDPLc5Kof3vV4IF1PTCslnlJR+kn/1HNJsYlAdSntUU5PU59aKBH1I9vTAFqcUcRsNGvaZo/7VhQLfwew==",
"requires": {
"@types/node": "*"
}
@@ -2535,14 +2535,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -2557,20 +2555,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -2687,8 +2682,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"ini": {
"version": "1.3.5",
@@ -2700,7 +2694,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -2715,7 +2708,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -2723,14 +2715,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"minipass": {
"version": "2.2.4",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
@@ -2749,7 +2739,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -2830,8 +2819,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"optional": true
"dev": true
},
"object-assign": {
"version": "4.1.1",
@@ -2843,7 +2831,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"wrappy": "1"
}
@@ -2965,7 +2952,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
+1 -1
View File
@@ -14,7 +14,7 @@
"@types/bcryptjs": "^2.4.2",
"@types/configstore": "^4.0.0",
"@types/cookie-parser": "^1.4.1",
"@types/dockerode": "^2.5.10",
"@types/dockerode": "^2.5.11",
"@types/ejs": "^2.6.1",
"@types/express": "^4.16.0",
"@types/fs-extra": "^5.0.4",
+16
View File
@@ -1471,6 +1471,22 @@ class DockerApi {
})
}
getLogForService(serviceName: string, tailCount: number) {
const self = this
return Promise.resolve() //
.then(function() {
// TODO REMOVE any once dockerode definition is fixed.
// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/32508
return (self.dockerode.getService(serviceName) as any) //
.logs({
tail: tailCount,
timestamps: true,
stdout: true,
stderr: true,
})
})
}
getDockerVersion() {
const self = this
+20
View File
@@ -14,6 +14,26 @@ const upload = multer({
dest: TEMP_UPLOAD,
})
router.get('/:appName/logs', function(req, res, next) {
let appName = req.params.appName
const serviceManager = InjectionExtractor.extractUserFromInjected(res).user
.serviceManager
return Promise.resolve()
.then(function() {
return serviceManager.getAppLogs(appName)
})
.then(function(logs) {
let baseApi = new BaseApi(
ApiStatusCodes.STATUS_OK,
'App build status retrieved'
)
baseApi.data = {logs}
res.send(baseApi)
})
.catch(ApiStatusCodes.createCatcher(res))
})
router.get('/:appName/', function(req, res, next) {
let appName = req.params.appName
const serviceManager = InjectionExtractor.extractUserFromInjected(res).user
+18
View File
@@ -570,6 +570,24 @@ class ServiceManager {
this.buildLogs[appName].onBuildFailed(error)
}
getAppLogs(appName: string) {
const self = this
const serviceName = this.dataStore
.getAppsDataStore()
.getServiceName(appName)
const dockerApi = this.dockerApi
return Promise.resolve() //
.then(function() {
return dockerApi.getLogForService(
serviceName,
CaptainConstants.configs.appLogSize
)
})
}
ensureServiceInitedAndUpdated(appName: string) {
Logger.d('Ensure service inited and Updated for: ' + appName)
const self = this
+2
View File
@@ -23,6 +23,8 @@ const configs = {
buildLogSize: 50,
appLogSize: 500,
preCheckForWildCard: true,
registrySubDomainPort: 996,