blob: cdaac3360f6288e97d0d7313d1a9770232599fc1 [file] [log] [blame]
// Engine generate command module
'use strict';
const {Docker} = require('node-docker-api');
const fs = require('fs');
const docker = new Docker({
socketPath: '/var/run/docker.sock',
cert: fs.readFileSync('cert.pem'),
key: fs.readFileSync('key.pem')
});
const repl = require('repl');
function notebookSDK() {
let _container;
// Log capture
const promisifyStream = stream => new Promise((resolve, reject) => {
stream.on('data', data => console.log(data.toString()))
stream.on('end', resolve)
stream.on('error', reject)
});
// Start container, run engine generate command and capture logs
docker.container.create({
Image: 'marvinaiplatform/marvin-automl:0.0.1',
Cmd: [ '/bin/bash', '-c', 'tail -f /var/log/dmesg' ],
name: 'docker-api-test'
})
.then(container => container.start())
.then(container => {
_container = container
return container.exec.create({
AttachStdout: true,
AttachStderr: true,
Cmd: [ '/bin/bash', '-c', 'source /usr/local/bin/virtualenvwrapper.sh ; workon marvin-engine-env ; cd /opt/marvin/engine/ ; marvin notebook --allow-root -p 9999 ' ]
})
})
.then(exec => {
return exec.start({ Detach: false })
})
.then(stream => promisifyStream(stream))
.catch(error => console.log(error));
}
// Engine-generate command here is mapped to a simple container start up.
function engineGenerateSDK() {
docker.container.create({
Image: 'marvinaiplatform/marvin-automl:0.0.1',
name: 'docker-api-test'
})
.then(container => container.start())
.then(container => container.logs({
follow: true,
stdout: true,
stderr: true
}))
.then(stream => {
stream.on('data', info => console.log(info))
stream.on('error', err => console.log(err))
})
.catch(error => console.log(error))
}
var replServer = repl.start({
prompt: "marvin > ",
});
replServer.context.notebook = notebookSDK
replServer.context.engine_generate = engineGenerateSDK