support installing with existing volumes and droplets

This commit is contained in:
Josh Harvey 2017-07-12 15:34:00 +03:00
parent ab6f23351d
commit 10b635185d
6 changed files with 23 additions and 12 deletions

View file

@ -1,4 +1,3 @@
const fs = require('fs')
const path = require('path')
const coinUtils = require('../coin-utils')
@ -12,7 +11,7 @@ const coinRec = coinUtils.getCryptoCurrency('BTC')
function setup (dataDir) {
common.firewall([coinRec.defaultPort])
const config = buildConfig()
fs.writeFileSync(path.resolve(dataDir, coinRec.configFile), config)
common.writeFile(path.resolve(dataDir, coinRec.configFile), config)
const cmd = `/usr/local/bin/${coinRec.daemon} -datadir=${dataDir}`
common.writeSupervisorConfig(coinRec, cmd)
}

View file

@ -12,7 +12,8 @@ module.exports = {
randomPass,
fetchAndInstall,
logger,
isInstalledSoftware
isInstalledSoftware,
writeFile
}
const BINARIES = {
@ -70,7 +71,7 @@ stdout_logfile=/var/log/supervisor/${blockchain}.out.log
environment=HOME="/root"
`
fs.writeFileSync(`/etc/supervisor/conf.d/${coinRec.code}.conf`, supervisorConfig)
writeFile(`/etc/supervisor/conf.d/${coinRec.code}.conf`, supervisorConfig)
}
function isInstalledSoftware (coinRec) {
@ -80,7 +81,7 @@ function isInstalledSoftware (coinRec) {
function fetchAndInstall (coinRec) {
if (isInstalledSoftware(coinRec)) return
const binaries = BINARIES[coinRec.coinRecCode]
const binaries = BINARIES[coinRec.cryptoCode]
if (!binaries) throw new Error(`No such coin: ${coinRec.code}`)
const url = binaries.url
@ -91,3 +92,15 @@ function fetchAndInstall (coinRec) {
es(`tar -xzf ${downloadFile}`)
es(`sudo cp ${binDir}/* /usr/local/bin`)
}
function writeFile (path, content) {
try {
fs.writeFileSync(path, content)
} catch (err) {
if (err.code === 'EEXIST') {
logger.info(`${path} exists, skipping.`)
}
throw err
}
}

View file

@ -1,4 +1,3 @@
const fs = require('fs')
const path = require('path')
const coinUtils = require('../coin-utils')
@ -12,7 +11,7 @@ const coinRec = coinUtils.getCryptoCurrency('DASH')
function setup (dataDir) {
common.firewall([coinRec.defaultPort])
const config = buildConfig()
fs.writeFileSync(path.resolve(dataDir, coinRec.configFile), config)
common.writeFile(path.resolve(dataDir, coinRec.configFile), config)
const cmd = `/usr/local/bin/${coinRec.daemon} -datadir=${dataDir}`
common.writeSupervisorConfig(coinRec, cmd)
}

View file

@ -70,8 +70,10 @@ function setupCrypto (crypto) {
process.chdir(tmpDir)
common.es('rm -rf *')
common.fetchAndInstall(crypto)
cryptoPlugin.setup(cryptoDir)
fs.writeFileSync(installedVolumeFilePath(crypto), '')
common.writeFile(installedVolumeFilePath(crypto), '')
process.chdir(oldDir)
}

View file

@ -1,4 +1,3 @@
const fs = require('fs')
const path = require('path')
const coinUtils = require('../coin-utils')
@ -12,7 +11,7 @@ const coinRec = coinUtils.getCryptoCurrency('LTC')
function setup (dataDir) {
common.firewall([coinRec.defaultPort])
const config = buildConfig()
fs.writeFileSync(path.resolve(dataDir, coinRec.configFile), config)
common.writeFile(path.resolve(dataDir, coinRec.configFile), config)
const cmd = `/usr/local/bin/${coinRec.daemon} -datadir=${dataDir}`
common.writeSupervisorConfig(coinRec, cmd)
}

View file

@ -1,4 +1,3 @@
const fs = require('fs')
const path = require('path')
const coinUtils = require('../coin-utils')
@ -20,7 +19,7 @@ function setup (dataDir) {
es('zcash-fetch-params 2>&1')
logger.info('Finished fetching proofs.')
const config = buildConfig()
fs.writeFileSync(path.resolve(dataDir, 'zcash.conf'), config)
common.writeFile(path.resolve(dataDir, coinRec.configFile), config)
const cmd = `/usr/local/bin/${coinRec.daemon} -datadir=${dataDir}`
common.writeSupervisorConfig(coinRec, cmd)
}