1
0
Fork 0

Allow passing config & deps on install/upgrade/replace

This commit is contained in:
Alan Plum 2016-10-31 16:10:27 +01:00
parent 4ff5dbef84
commit 41c0f6928d
No known key found for this signature in database
GPG Key ID: 8ED72A9A323B6EFD
2 changed files with 36 additions and 16 deletions

View File

@ -67,11 +67,17 @@ router.post((req, res) => {
if (source instanceof Buffer) {
source = writeUploadToTempFile(source);
}
const service = fm.install(
source,
req.queryParams.mount,
_.omit(req.queryParams, ['mount'])
);
const dependencies = req.body.dependencies && JSON.parse(req.body.dependencies);
const configuration = req.body.configuration && JSON.parse(req.body.configuration);
const mount = req.queryParams.mount;
fm.install(source, mount, _.omit(req.queryParams, ['mount']));
if (configuration) {
fm.setConfiguration(mount, {configuration, replace: true});
}
if (dependencies) {
fm.setDependencies(mount, {dependencies, replace: true});
}
const service = fm.lookupService(mount);
res.json(serviceToJson(service));
})
.body(schemas.service, ['multipart/form-data', 'application/json'], `Service to be installed.`)
@ -121,11 +127,17 @@ serviceRouter.patch((req, res) => {
if (source instanceof Buffer) {
source = writeUploadToTempFile(source);
}
const service = fm.upgrade(
source,
req.queryParams.mount,
_.omit(req.queryParams, ['mount'])
);
const dependencies = req.body.dependencies && JSON.parse(req.body.dependencies);
const configuration = req.body.configuration && JSON.parse(req.body.configuration);
const mount = req.queryParams.mount;
fm.upgrade(source, mount, _.omit(req.queryParams, ['mount']));
if (configuration) {
fm.setConfiguration(mount, {configuration, replace: false});
}
if (dependencies) {
fm.setDependencies(mount, {dependencies, replace: false});
}
const service = fm.lookupService(mount);
res.json(serviceToJson(service));
})
.body(schemas.service, ['multipart/form-data', 'application/json'], `Service to be installed.`)
@ -149,11 +161,17 @@ serviceRouter.put((req, res) => {
if (source instanceof Buffer) {
source = writeUploadToTempFile(source);
}
const service = fm.replace(
source,
req.queryParams.mount,
_.omit(req.queryParams, ['mount'])
);
const dependencies = req.body.dependencies && JSON.parse(req.body.dependencies);
const configuration = req.body.configuration && JSON.parse(req.body.configuration);
const mount = req.queryParams.mount;
fm.replace(source, mount, _.omit(req.queryParams, ['mount']));
if (configuration) {
fm.setConfiguration(mount, {configuration, replace: true});
}
if (dependencies) {
fm.setDependencies(mount, {dependencies, replace: true});
}
const service = fm.lookupService(mount);
res.json(serviceToJson(service));
})
.body(schemas.service, ['multipart/form-data', 'application/json'], `Service to be installed.`)

View File

@ -42,5 +42,7 @@ exports.service = joi.object({
source: joi.alternatives(
joi.string().description(`Local file path or URL of the service to be installed`),
joi.object().type(Buffer).description(`Zip bundle of the service to be installed`)
).required().description(`Local file path, URL or zip bundle of the service to be installed`)
).required().description(`Local file path, URL or zip bundle of the service to be installed`),
configuration: joi.string().optional().description(`Configuration to use for the service (JSON)`),
dependencies: joi.string().optional().description(`Dependency options to use for the service (JSON)`)
}).required();