Commit 9e8ef6d6 authored by priit's avatar priit

Dockeri alge

parent 722fed14
......@@ -4,7 +4,7 @@
$ docker run --name kl_redis -d redis
* Lae alla keeleliin-server Dockerfile
* Lae alla keeleliin-wrapper-service Dockerfile
* Loo dockeri Image fail
......@@ -12,6 +12,13 @@ $ docker build -t 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');
//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 = {
// host: process.env.REDIS_PORT_6379_TCP_ADDR || "127.0.0.1",
// port: process.env.REDIS_PORT_6379_TCP_PORT || 6379
//};
/*
* Nimekiri keeleliini serverirakendustest, kuhu teenuse käivitamisel see installeeritakse.
*/
//config.integration = [
// {
// installUrl: 'http://keeleliin.keeleressursid.ee:3000/api/v1/service/install',
......@@ -15,61 +23,68 @@ var config = require('./global_config/global');
// }
//];
/*
* Teenuse failide salvestamise asukohad
*/
//config.fs = {
// storagePath: "/wrapper/files",
// tmpPath: "/wrapper/tmp"
// storagePath: '/wrapper/files',
// tmpPath: '/wrapper/tmp'
//};
/*config.log4js.appenders.push({
"type": "logLevelFilter",
"level": "ERROR",
"appender": {
"type": "smtp",
"layout": {
/*
* Kui teenuse töös peaks tekkima vigu ja selle kohta soovitakse veadeadet emailile saada,
* siis tuleks see sisse kommenteerida ja *** väjad täita
*/
/* config.log4js.appenders.push({
"type": "logLevelFilter",
"level": "ERROR",
"appender": {
"type": "smtp",
"layout": {
type: 'pattern',
pattern: "[%d] [%x{port}-%x{pid}][%5.5p] %c - %m",
tokens: {
pid: process.pid,
port: config.port
}
pid: process.pid,
port: config.port
}
},
"recipients": "***********",
"sendInterval": 10, //sec
"transport": "SMTP",
"SMTP": {
"host": "smtp.gmail.com",
"secureConnection": false,
"port": 587,
"auth": {
"user": "***********",
"pass": "***********"
},
"debug": true
}
"recipients": "***@***.***", //komaga eraldatult eposti aadressid
"sendInterval": 10, //sec
"transport": "SMTP",
"SMTP": {
"host": "smtp.gmail.com",
"secureConnection": false,
"port": 587,
"auth": {
"user": "***",
"pass": "***"
},
"debug": true
}
}
}
});*/
);
*/
config.wrapper = {
id: 'concat', // unikaalne lühinimi
config.wrapper = { //teenuse seadistus
id: 'concat', // Unikaalne lühinimi
title: 'Lihtne konjateneerija', //Avalik nimi
description: 'Konkateneerib etteantud failid üheks suureks failiks', //Kirjeldus
port: 3000, //port
class: 'simpleLocalCommand', //wrapperi failinimi wrapper kaustast, mida utiliidi käivitamiseks kasutatakse
command: 'cat [data]', // utiliidi käsurea käsk
requestConf: { //Päringu seadistus
requestBodyParamsMappings: {
isAsync: {
type: config.paramTypes.SELECT,
options: ['0', '1'],
value: '1',
usageType: config.paramUsageTypes.META,
filter: function (value) {
requestBodyParamsMappings: { //Päringu post parameetrid
isAsync: { //parameeter isAsync
type: config.paramTypes.SELECT, //Tüüp. Võimalikud väärtused: config.paramTypes.SELECT ja config.paramTypes.TEXT
options: ['0', '1'], //Võimalikud sobivad väärtused
value: '1', //Soovituslik vaikeväärtus
filter: function (value) { //parameerile rakendatav filter. Antud juhul viiaks väärtus boolean kujule
return value == 1;
},
required: true,
allowEmpty: false,
validator: function (value, request) {
required: true, //kas mittetühi väärtus on nõutud
allowEmpty: false, //kas parameeter peab olema saadetud
validator: function (value, request) { //filtreeritud väärtuse valideerimine
if( typeof value != 'boolean' ){
request.setMessage('isAsync', 'Peab olema boolean');
return false;
......@@ -78,24 +93,22 @@ config.wrapper = {
}
}
},
requestFiles: {
content: {
type: 'text',
sizeLimit: 0,
sizeUnit: 'byte',
isList: true
requestFiles: { //Päringuga saadetavad failid
content: { //Faili võti
type: 'text', //Ressursi tüübi võti
sizeLimit: 0, //Suuruse piirang
sizeUnit: 'byte',//Suuruse piirangu ühik
isList: true //Kas tegemist võib olla ka failide listuga
}
}
},
outputTypes: [ //teenuse väljundressursside kirjldused
{
type: 'text',
key: 'output'
type: 'text', //ressursi tüüp
key: 'output' //väljundressursi võti
}
],
sessionMaxLifetime: 600 // sessiooni maksimaalne kestvus
};
module.exports = config;
\ No newline at end of file
......@@ -8,10 +8,10 @@ config.redis = {
config.serverUrl = 'http://localhost';
config.integration = [
{
/*{
installUrl: 'http://keeleliin.keeleressursid.ee:3000/api/v1/service/install',
apiKey: 'server-wrapper-api-key'
}
}*/
];
config.fs = {
......@@ -24,12 +24,6 @@ config.paramTypes = {
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 = {
appenders: [
{
......@@ -74,7 +68,6 @@ config.isAsyncParamDescription = {
type: config.paramTypes.SELECT,
options: ['0', '1'],
value: '1',
usageType: config.paramUsageTypes.META,
filter: function (value) {
return value == 1;
},
......@@ -88,7 +81,6 @@ config.isAsyncParamDescription = {
config.stringKeyDescription = {
type: config.paramTypes.TEXT,
value: undefined,
usageType: config.paramUsageTypes.STRING,
filter: null,
required: false,
allowEmpty: true,
......@@ -100,7 +92,6 @@ config.stringKeyDescription = {
config.fileKeyDescription = {
type: config.paramTypes.TEXT,
value: undefined,
usageType: config.paramUsageTypes.FILE,
filter: null,
required: false,
allowEmpty: true,
......
......@@ -36,12 +36,12 @@ Session.prototype.getFile = function( key ){
};
Session.prototype.getFiles = function( key ){
var fileValue = this.requestFiles[ key ];
var fileValues = this.requestFiles[ key ];
if(Array.isArray(fileValue)){
return fileValue;
if(Array.isArray(fileValues)){
return fileValues;
}
return [fileValue];
return [fileValues];
};
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