Fixing trading bot execution

This commit is contained in:
Matias committed 2019-07-01 16:35:49 -03:00
1 parent 60f54bf994
commit ca9dbdeb75
10 files changed
+126 -83

No files matched your search

+1 -7
View File
@@ -39,13 +39,7 @@
UI_COMMANDS = pUI_COMMANDS;
processConfig = pProcessConfig;
let filePath;
if (global.RUN_AS_TEAM) {
filePath = global.DEV_TEAM + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.name; // DevTeams bots only are run at the cloud.
} else {
filePath = global.DEV_TEAM + "/" + "members" + "/" + global.USER_LOGGED_IN + "/" + global.CURRENT_BOT_REPO + "/" + pProcessConfig.name; // DevTeam Members bots only are run at the browser.
}
let filePath = global.DEV_TEAM + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.name
filePath += "/User.Bot.js"
fileStorage.getTextFile(global.DEV_TEAM, filePath, onBotDownloaded);
+71
View File
@@ -0,0 +1,71 @@
const axios = require('axios')
exports.getEcosystem = async function () {
try {
if (!global.ECOSYSTEM) {
const ecosystemResponse = await axios({
url: process.env.GATEWAY_ENDPOINT_K8S,
method: 'post',
data: {
query: `
query {
web_GetEcosystem {
id
devTeams {
codeName
displayName
host {
url
storage
container
accessKey
}
bots {
codeName
displayName
type
profilePicture
repo
configFile
products{
codeName
displayName
description
dataSets{
codeName
type
validPeriods
filePath
fileName
dataRange{
filePath
fileName
}
}
exchangeList{
name
}
}
}
}
}
}
`
},
headers: {
authorization: process.env.AUTHORIZATION
}
})
//TODO Competition hosts not retrieved currently
if (ecosystemResponse.data.errors)
throw new Error(ecosystemResponse.data.errors[0].message)
global.ECOSYSTEM = ecosystemResponse.data.data.web_GetEcosystem;
}
return global.ECOSYSTEM
} catch (error) {
throw new Error('There has been an error getting the Ecosystem: ', error)
}
}
+20 -6
View File
@@ -1,4 +1,5 @@
const axios = require('axios')
const Ecosystem = require('./Ecosystem')
exports.newFileStorage = function newFileStorage() {
const INFO_LOG = true
@@ -11,12 +12,14 @@ exports.newFileStorage = function newFileStorage() {
return thisObject
function getTextFile(container, filePath, callBackFunction) {
async function getTextFile(container, filePath, callBackFunction) {
try {
if (INFO_LOG === true) { console.log('[INFO] getTextFile -> Entering function: '+ container.toLowerCase() + '/' + filePath) }
if (INFO_LOG === true) { console.log('[INFO] getTextFile -> Entering function: ' + container.toLowerCase() + '/' + filePath) }
let host = await getDevTeamHost(container)
axios({
url: process.env.GATEWAY_ENDPOINT_K8S,
url: host.url + 'graphql',
method: 'post',
data: {
query: `
@@ -28,8 +31,8 @@ exports.newFileStorage = function newFileStorage() {
file: {
container: container.toLowerCase(),
filePath,
storage: process.env.HOST_STORAGE,
accessKey: process.env.HOST_ACCESS_KEY
storage: host.storage,
accessKey: host.accessKey
}
}
}
@@ -61,7 +64,7 @@ exports.newFileStorage = function newFileStorage() {
async function createTextFile(container, filePath, fileContent, callBackFunction) {
try {
if (INFO_LOG === true) { console.log('[INFO] createTextFile -> Entering function: ' + filePath) }
if (INFO_LOG === true) { console.log('[INFO] createTextFile -> Entering function: ' + container.toLowerCase() + '/' + filePath) }
let response = await axios({
url: process.env.GATEWAY_ENDPOINT_K8S,
@@ -96,4 +99,15 @@ exports.newFileStorage = function newFileStorage() {
}
}
async function getDevTeamHost(devTeamName) {
let ecosystem = await Ecosystem.getEcosystem()
for (var i = 0; i < ecosystem.devTeams.length; i++) {
for (key in ecosystem.devTeams[i]) {
if (key ==='codeName' && ecosystem.devTeams[i][key].indexOf(devTeamName)!=-1) {
return ecosystem.devTeams[i].host
}
}
}
}
}
+4 -10
View File
@@ -2,20 +2,14 @@ const axios = require('axios')
exports.getStrategy = async function () {
try {
let strategyOnlyOnce = true
if (process.env.STRATEGY_ONLY_ONCE !== undefined)
strategyOnlyOnce = JSON.parse(process.env.STRATEGY_ONLY_ONCE)
if (!global.STRATEGY || !strategyOnlyOnce) {
if (!global.STRATEGY) {
let fbSlug = process.env.BOT
if (process.env.TEST_FB !== undefined) {
fbSlug = process.env.TEST_FB
}
const strategizerResponse = await axios({
url: process.env.STRATEGIZER_ENDPOINT || process.env.GATEWAY_ENDPOINT_K8S,
url: process.env.GATEWAY_ENDPOINT_K8S,
method: 'post',
data: {
query: `
@@ -30,7 +24,7 @@ exports.getStrategy = async function () {
},
},
headers: {
access_token: process.env.ACCESS_TOKEN_STRATEGY
authorization: process.env.AUTHORIZATION
}
})
@@ -42,6 +36,6 @@ exports.getStrategy = async function () {
return global.STRATEGY
} catch (error) {
throw new Error('There has been an error getting the strategy: ', error)
throw new Error('There has been an error getting the strategy: ', JSON.stringify(error))
}
}
-10
View File
@@ -2,7 +2,6 @@
global.SHALL_BOT_STOP = false;
global.AT_BREAKPOINT = false; // This is used only when running at the browser.
global.RUN_AS_TEAM = false;
global.FULL_LOG = process.env.FULL_LOG;
/* Default parameters can be changed by the execution configuration */
@@ -38,8 +37,6 @@ function readExecutionConfiguration() {
// General Financial Being Configuration
global.DEV_TEAM = process.env.DEV_TEAM
global.CURRENT_BOT_REPO = process.env.BOT + "-" + process.env.TYPE + "-Bot"
global.RUN_AS_TEAM = (process.env.RUN_AS_TEAM === "true")
global.USER_LOGGED_IN = process.env.USER_LOGGED_IN
if (process.env.TYPE === 'Trading') {
let live = {
@@ -116,13 +113,6 @@ function readExecutionConfiguration() {
dataSet: process.env.DATA_SET
};
// var cloneExecutorConfig = require('./package.json');
// global.CLONE_EXECUTOR = {
// codeName: 'clone-executor',
// codeName: 'clone-executor',
// version: cloneExecutorConfig.version
// }
global.CLONE_EXECUTOR = {
codeName: 'AACloud',
version: '1.1'
+1 -6
View File
@@ -37,12 +37,7 @@
UI_COMMANDS = pUI_COMMANDS;
processConfig = pProcessConfig;
let filePath;
if (global.RUN_AS_TEAM) {
filePath = global.DEV_TEAM + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.name; // DevTeams bots only are run at the cloud.
} else {
filePath = global.DEV_TEAM + "/" + "members" + "/" + global.USER_LOGGED_IN + "/" + global.CURRENT_BOT_REPO + "/" + pProcessConfig.name; // DevTeam Members bots only are run at the browser.
}
let filePath = global.DEV_TEAM + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.name;
filePath += "/User.Bot.js"
fileStorage.getTextFile(global.DEV_TEAM, filePath, onBotDownloaded);
+1 -6
View File
@@ -37,12 +37,7 @@
UI_COMMANDS = pUI_COMMANDS;
processConfig = pProcessConfig;
let filePath;
if (global.RUN_AS_TEAM) {
filePath = global.DEV_TEAM + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.name; // DevTeams bots only are run at the cloud.
} else {
filePath = global.DEV_TEAM + "/" + "members" + "/" + global.USER_LOGGED_IN + "/" + global.CURRENT_BOT_REPO + "/" + pProcessConfig.name; // DevTeam Members bots only are run at the browser.
}
let filePath = global.DEV_TEAM + "/" + "bots" + "/" + bot.repo + "/" + pProcessConfig.name
filePath += "/User.Bot.js"
fileStorage.getTextFile(global.DEV_TEAM, filePath, onBotDownloaded);
+1 -1
View File
@@ -1,7 +1,7 @@
version: '3'
services:
node:
image: superalgos/clone-executor:1.0.25
image: superalgos/clone-executor:1.0.30
build:
context: .
dockerfile: ./Dockerfile
+23 -33
View File
@@ -1,13 +1,13 @@
{
"name": "@superalgos/clone-executor",
"version": "1.0.12",
"version": "1.0.29",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@superalgos/exchange-gateway": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/@superalgos/exchange-gateway/-/exchange-gateway-0.0.4.tgz",
"integrity": "sha512-ebDiup8Op7zBNSoRv+wbfCgk9e8VOl9RCiYHFUq6p8AJ1Cu+zG2SOEXOT6eFG6ANq0HJASIl6oXi7CfdAekL6A==",
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/@superalgos/exchange-gateway/-/exchange-gateway-0.0.6.tgz",
"integrity": "sha512-dVKvqEfKoRj6G6xhxDsdKlaj5eeSa5jhx9QxtzN6wUHyWbYEK19mOTuL3Kzs16IG2beGeCL+Yhmd6LONHVMsJw==",
"requires": {
"axios": "0.19.0",
"dotenv": "8.0.0",
@@ -18,17 +18,6 @@
"retry": "^0.12.0",
"superagent": "^5.0.2",
"underscore": "^1.9.1"
},
"dependencies": {
"axios": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz",
"integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==",
"requires": {
"follow-redirects": "1.5.10",
"is-buffer": "^2.0.2"
}
}
}
},
"@superalgos/mqservice": {
@@ -846,9 +835,9 @@
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"mime": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz",
"integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw=="
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
"integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
},
"mime-db": {
"version": "1.40.0",
@@ -1098,9 +1087,9 @@
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
},
"psl": {
"version": "1.1.32",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz",
"integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g=="
"version": "1.1.33",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.1.33.tgz",
"integrity": "sha512-LTDP2uSrsc7XCb5lO7A8BI1qYxRe/8EqlRvMeEl6rsnYAqDOl8xHR+8lSAIVfrNaSAlTPTNOCgNjWcoUL3AZsw=="
},
"pump": {
"version": "3.0.0",
@@ -1196,9 +1185,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"semver": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz",
"integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ=="
"version": "6.1.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.1.3.tgz",
"integrity": "sha512-aymF+56WJJMyXQHcd4hlK4N75rwj5RQpfW8ePlQnJsTYOBLlLbcIErR/G1s9SkIvKBqOudR3KAx4wEqP+F1hNQ=="
},
"set-blocking": {
"version": "2.0.0",
@@ -1293,20 +1282,21 @@
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
"superagent": {
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-5.0.5.tgz",
"integrity": "sha512-5fnihpNqJfDJHxeIkqlXKFDOW5t4WUFV8Ba1erxdWT0RySqjgAW6Hska0xNYEpAfaoMzubn77GROm/XlkssOoQ==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-5.1.0.tgz",
"integrity": "sha512-7V6JVx5N+eTL1MMqRBX0v0bG04UjrjAvvZJTF/VDH/SH2GjSLqlrcYepFlpTrXpm37aSY6h3GGVWGxXl/98TKA==",
"requires": {
"component-emitter": "^1.3.0",
"cookiejar": "^2.1.2",
"debug": "^4.1.1",
"fast-safe-stringify": "^2.0.6",
"form-data": "^2.3.3",
"formidable": "^1.2.1",
"methods": "^1.1.2",
"mime": "^2.4.2",
"mime": "^2.4.4",
"qs": "^6.7.0",
"readable-stream": "^3.3.0",
"semver": "^6.0.0"
"readable-stream": "^3.4.0",
"semver": "^6.1.1"
},
"dependencies": {
"debug": {
@@ -1318,9 +1308,9 @@
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"qs": {
"version": "6.7.0",
+4 -4
View File
@@ -1,6 +1,6 @@
{
"name": "@superalgos/clone-executor",
"version": "1.0.25",
"version": "1.0.30",
"description": "Module responsible for executing the bots on the cloud.",
"author": "Superalgos, ltd.",
"license": "Apache-2.0",
@@ -13,10 +13,10 @@
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"@superalgos/exchange-gateway": "0.0.4",
"@superalgos/exchange-gateway": "0.0.6",
"@superalgos/mqservice": "^0.0.14",
"axios": "0.19.0",
"dotenv": "8.0.0",
"axios": "^0.19.0",
"dotenv": "^8.0.0",
"winston": "^3.2.1"
}
}