Commit 9e8ef6d6 authored by priit's avatar priit

Dockeri alge

parent 722fed14
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
$ docker run --name kl_redis -d redis $ docker run --name kl_redis -d redis
* Lae alla keeleliin-server Dockerfile * Lae alla keeleliin-wrapper-service Dockerfile
* Loo dockeri Image fail * Loo dockeri Image fail
...@@ -12,6 +12,13 @@ $ docker build -t kl_wrapper_name . ...@@ -12,6 +12,13 @@ $ docker build -t kl_wrapper_name .
* Käivita loodud kl_wrapper_name * Käivita loodud kl_wrapper_name
$ docker run --name kl_wrapper_name -d --link kl_redis:redis -p 3000:3000 -v /wrapper/concat/:/config kl_wrapper_name $ docker run --name kl_wrapper_name -d --link kl_redis:redis -p 3000:3000 -v /wrapper/concat:/config kl_wrapper_name
* Muuda teenuse seadistusi /wrapper/concat/config.js
* Uuenda teenust
$ docker exec kl_wrapper_name /src/docker_update.sh
var config = require('./global_config/global'); var config = require('./global_config/global');
//config.serverUrl = 'http://localhost'; /*
* Teenuse url ilma pordita. Kasutatakse teenuse serverisse installeerimisel teenuse urli moodustamiseks: <url>:<port>/api/v1/
*/
config.serverUrl = 'http://localhost';
/*
* Redis serveri andmed. Kui kasutatakse vaikeseadeid, siis pole vaja muuta
*/
//config.redis = { //config.redis = {
// host: process.env.REDIS_PORT_6379_TCP_ADDR || "127.0.0.1", // host: process.env.REDIS_PORT_6379_TCP_ADDR || "127.0.0.1",
// port: process.env.REDIS_PORT_6379_TCP_PORT || 6379 // port: process.env.REDIS_PORT_6379_TCP_PORT || 6379
//}; //};
/*
* Nimekiri keeleliini serverirakendustest, kuhu teenuse käivitamisel see installeeritakse.
*/
//config.integration = [ //config.integration = [
// { // {
// installUrl: 'http://keeleliin.keeleressursid.ee:3000/api/v1/service/install', // installUrl: 'http://keeleliin.keeleressursid.ee:3000/api/v1/service/install',
...@@ -15,61 +23,68 @@ var config = require('./global_config/global'); ...@@ -15,61 +23,68 @@ var config = require('./global_config/global');
// } // }
//]; //];
/*
* Teenuse failide salvestamise asukohad
*/
//config.fs = { //config.fs = {
// storagePath: "/wrapper/files", // storagePath: '/wrapper/files',
// tmpPath: "/wrapper/tmp" // tmpPath: '/wrapper/tmp'
//}; //};
/*
/*config.log4js.appenders.push({ * Kui teenuse töös peaks tekkima vigu ja selle kohta soovitakse veadeadet emailile saada,
"type": "logLevelFilter", * siis tuleks see sisse kommenteerida ja *** väjad täita
"level": "ERROR", */
"appender": { /* config.log4js.appenders.push({
"type": "smtp", "type": "logLevelFilter",
"layout": { "level": "ERROR",
"appender": {
"type": "smtp",
"layout": {
type: 'pattern', type: 'pattern',
pattern: "[%d] [%x{port}-%x{pid}][%5.5p] %c - %m", pattern: "[%d] [%x{port}-%x{pid}][%5.5p] %c - %m",
tokens: { tokens: {
pid: process.pid, pid: process.pid,
port: config.port port: config.port
} }
}, },
"recipients": "***********", "recipients": "***@***.***", //komaga eraldatult eposti aadressid
"sendInterval": 10, //sec "sendInterval": 10, //sec
"transport": "SMTP", "transport": "SMTP",
"SMTP": { "SMTP": {
"host": "smtp.gmail.com", "host": "smtp.gmail.com",
"secureConnection": false, "secureConnection": false,
"port": 587, "port": 587,
"auth": { "auth": {
"user": "***********", "user": "***",
"pass": "***********" "pass": "***"
}, },
"debug": true "debug": true
} }
}
} }
});*/ );
*/
config.wrapper = { config.wrapper = { //teenuse seadistus
id: 'concat', // unikaalne lühinimi id: 'concat', // Unikaalne lühinimi
title: 'Lihtne konjateneerija', //Avalik nimi title: 'Lihtne konjateneerija', //Avalik nimi
description: 'Konkateneerib etteantud failid üheks suureks failiks', //Kirjeldus description: 'Konkateneerib etteantud failid üheks suureks failiks', //Kirjeldus
port: 3000, //port port: 3000, //port
class: 'simpleLocalCommand', //wrapperi failinimi wrapper kaustast, mida utiliidi käivitamiseks kasutatakse class: 'simpleLocalCommand', //wrapperi failinimi wrapper kaustast, mida utiliidi käivitamiseks kasutatakse
command: 'cat [data]', // utiliidi käsurea käsk command: 'cat [data]', // utiliidi käsurea käsk
requestConf: { //Päringu seadistus requestConf: { //Päringu seadistus
requestBodyParamsMappings: { requestBodyParamsMappings: { //Päringu post parameetrid
isAsync: { isAsync: { //parameeter isAsync
type: config.paramTypes.SELECT, type: config.paramTypes.SELECT, //Tüüp. Võimalikud väärtused: config.paramTypes.SELECT ja config.paramTypes.TEXT
options: ['0', '1'], options: ['0', '1'], //Võimalikud sobivad väärtused
value: '1', value: '1', //Soovituslik vaikeväärtus
usageType: config.paramUsageTypes.META, filter: function (value) { //parameerile rakendatav filter. Antud juhul viiaks väärtus boolean kujule
filter: function (value) {
return value == 1; return value == 1;
}, },
required: true, required: true, //kas mittetühi väärtus on nõutud
allowEmpty: false, allowEmpty: false, //kas parameeter peab olema saadetud
validator: function (value, request) { validator: function (value, request) { //filtreeritud väärtuse valideerimine
if( typeof value != 'boolean' ){ if( typeof value != 'boolean' ){
request.setMessage('isAsync', 'Peab olema boolean'); request.setMessage('isAsync', 'Peab olema boolean');
return false; return false;
...@@ -78,24 +93,22 @@ config.wrapper = { ...@@ -78,24 +93,22 @@ config.wrapper = {
} }
} }
}, },
requestFiles: { requestFiles: { //Päringuga saadetavad failid
content: { content: { //Faili võti
type: 'text', type: 'text', //Ressursi tüübi võti
sizeLimit: 0, sizeLimit: 0, //Suuruse piirang
sizeUnit: 'byte', sizeUnit: 'byte',//Suuruse piirangu ühik
isList: true isList: true //Kas tegemist võib olla ka failide listuga
} }
} }
}, },
outputTypes: [ //teenuse väljundressursside kirjldused outputTypes: [ //teenuse väljundressursside kirjldused
{ {
type: 'text', type: 'text', //ressursi tüüp
key: 'output' key: 'output' //väljundressursi võti
} }
], ],
sessionMaxLifetime: 600 // sessiooni maksimaalne kestvus sessionMaxLifetime: 600 // sessiooni maksimaalne kestvus
}; };
module.exports = config; module.exports = config;
\ No newline at end of file
...@@ -8,10 +8,10 @@ config.redis = { ...@@ -8,10 +8,10 @@ config.redis = {
config.serverUrl = 'http://localhost'; config.serverUrl = 'http://localhost';
config.integration = [ config.integration = [
{ /*{
installUrl: 'http://keeleliin.keeleressursid.ee:3000/api/v1/service/install', installUrl: 'http://keeleliin.keeleressursid.ee:3000/api/v1/service/install',
apiKey: 'server-wrapper-api-key' apiKey: 'server-wrapper-api-key'
} }*/
]; ];
config.fs = { config.fs = {
...@@ -24,12 +24,6 @@ config.paramTypes = { ...@@ -24,12 +24,6 @@ config.paramTypes = {
SELECT: 'select' SELECT: 'select'
}; };
config.paramUsageTypes = {
META: 'meta', //ei kasutata utiliidi parameetrina
STRING: 'string', //parameeter asendatakse väärtusega
FILE: 'file' //parameeteri väärtus salvestatakse faili ja faili pathi kasutatakse argumendina
};
config.log4js = { config.log4js = {
appenders: [ appenders: [
{ {
...@@ -74,7 +68,6 @@ config.isAsyncParamDescription = { ...@@ -74,7 +68,6 @@ config.isAsyncParamDescription = {
type: config.paramTypes.SELECT, type: config.paramTypes.SELECT,
options: ['0', '1'], options: ['0', '1'],
value: '1', value: '1',
usageType: config.paramUsageTypes.META,
filter: function (value) { filter: function (value) {
return value == 1; return value == 1;
}, },
...@@ -88,7 +81,6 @@ config.isAsyncParamDescription = { ...@@ -88,7 +81,6 @@ config.isAsyncParamDescription = {
config.stringKeyDescription = { config.stringKeyDescription = {
type: config.paramTypes.TEXT, type: config.paramTypes.TEXT,
value: undefined, value: undefined,
usageType: config.paramUsageTypes.STRING,
filter: null, filter: null,
required: false, required: false,
allowEmpty: true, allowEmpty: true,
...@@ -100,7 +92,6 @@ config.stringKeyDescription = { ...@@ -100,7 +92,6 @@ config.stringKeyDescription = {
config.fileKeyDescription = { config.fileKeyDescription = {
type: config.paramTypes.TEXT, type: config.paramTypes.TEXT,
value: undefined, value: undefined,
usageType: config.paramUsageTypes.FILE,
filter: null, filter: null,
required: false, required: false,
allowEmpty: true, allowEmpty: true,
......
...@@ -36,12 +36,12 @@ Session.prototype.getFile = function( key ){ ...@@ -36,12 +36,12 @@ Session.prototype.getFile = function( key ){
}; };
Session.prototype.getFiles = function( key ){ Session.prototype.getFiles = function( key ){
var fileValue = this.requestFiles[ key ]; var fileValues = this.requestFiles[ key ];
if(Array.isArray(fileValue)){ if(Array.isArray(fileValues)){
return fileValue; return fileValues;
} }
return [fileValue]; return [fileValues];
}; };
Session.messages = { Session.messages = {
......
var logger = require('log4js').getLogger('simple_local_command_wrapper');
var config = require('./../config');
var localExecutor = require('./../src/service/executor/localExecutor');
var Session = require('../src/model/session');
var CommandModel = require('../src/mapper/commandModel');
var fs = require('fs');
var mime = require('mime');
var path = require('path');
var FileUtil = require('./../src/util/file');
function LocalCommandTemplate(){
var self = this;
/*
* Funktsioon töö tegemiseks
*/
this.process = function ( session, callback) {
self._getCommandModel(session, function (err, model) {
logger.debug('GetCommandModel callback');
if(err){
logger.error(err);
return callback(err);
}
localExecutor.execute( model, session, function ( err, response ) {
if(err) return callback(err);
logger.debug('Program is finished');
if(response.isSuccess){
session.message = Session.messages.OK;
} else {
session.setErrors(response.errors);
}
session.addOutputFile('output', {
type: 'output',
fileName: config.wrapper.id + '_output.' + FileUtil.getExtension( response.stdOutPath ),
filePath: response.stdOutPath,
contentType: mime.lookup(response.stdOutPath)
});
return callback( err, session );
});
});
};
this._getCommandModel = function (session, callback) {
var model = new CommandModel();
model.serviceProperties.commandTemplate = config.wrapper.command.commandTemplate;
model.init( session );
model.setKeyValue('data', session.getFiles('content'));
//model.setStdOutExtension('txt'); //stdout faili laiend
//model.setFileValue(key, value);
//model.addOutputPath(key, options); // options: {extension: 'txt'}
model.render(function (err) {
logger.debug('Render callback');
callback(err, model);
});
};
/*
* Meetod töötava utiliidi peatamiseks
*/
this.kill = localExecutor.kill;
}
module.exports = LocalCommandTemplate;
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment