asch-redeploy
Version:
A hassle-free local asch environment
86 lines (80 loc) • 2.77 kB
JavaScript
const Promise = require('bluebird')
const logger = require('../logger')
const DI = require('../DI')
let workflow = (service, config) => {
this.service = service
this.config = config
this._registered = []
logger.info('check balance...', { meta: 'green' })
return Promise.delay(11000)
.then(function (result) {
let money = DI.container.get(DI.FILETYPES.SendMoney)
return money.sendMoney()
})
.then(function () {
let uia = DI.container.get(DI.FILETYPES.UIA)
return uia.start()
})
.then(function wait () {
logger.info('starting to register Dapp...', { meta: 'green' })
return Promise.delay(100)
})
.then(() => {
let registerDapp = DI.container.get(DI.FILETYPES.RegisterDapp)
return registerDapp.register()
})
.then ((registeredTrans) => {
this._registered[registeredTrans.trs] = registeredTrans.name
return registeredTrans.trs
})
.then((transactionId) => {
return Promise.delay(1000)
.then(function serializeNewDappId () {
let serializeNewDapp = DI.container.get(DI.FILETYPES.SerializedNewDappId)
let result = serializeNewDapp.serializeSync(transactionId)
if (result === true) {
logger.info(`wrote dappId to: ${result}`)
}
return transactionId
})
.then((transactionId) => {
let deploy = DI.container.get(DI.FILETYPES.Deploy)
return deploy.deploy(transactionId, this._registered[transactionId])
})
.then(function wait (result) {
let ms = 10000
logger.verbose(`wait for: ${ms}`)
return Promise.delay(ms)
})
.then((result) => {
logger.verbose('stopping asch-Server for restart', { meta: 'green.inverse' })
return this.service.stop()
})
.then((result) => {
logger.verbose('stopping asch-server', { meta: 'green.inverse' })
return Promise.delay(5000)
})
.then(() => {
logger.info('starting asch node', { meta: 'green.inverse' })
return this.service.start()
})
.then(() => {
// TODO: Check if blockchain is ready
return Promise.delay(20000)
})
.then(() => {
logger.info('blockchain started', { meta: 'blue.inverse' })
let refuelDapp = DI.container.get(DI.FILETYPES.RefuelDapp)
return refuelDapp.refuel(this._registered[transactionId])
})
.then(() => {
return Promise.delay(8000)
})
})
.catch(function errorOccured (error) {
logger.verbose('error in worklflow.js occured')
logger.error('ERROR OCCURED')
throw error
})
}
module.exports = workflow