| package io.prediction.tools.softwaremanager |
| |
| import io.prediction.commons._ |
| |
| case class BackupConfig(backupDir: String = "") |
| |
| object Backup { |
| val config = new Config() |
| |
| val settingsMap = Map( |
| "algoInfos" -> config.getSettingsAlgoInfos, |
| "algos" -> config.getSettingsAlgos, |
| "apps" -> config.getSettingsApps, |
| "engineInfos" -> config.getSettingsEngineInfos, |
| "engines" -> config.getSettingsEngines, |
| "offlineEvalMetricInfos" -> config.getSettingsOfflineEvalMetricInfos, |
| "offlineEvalMetrics" -> config.getSettingsOfflineEvalMetrics, |
| "offlineEvalResults" -> config.getSettingsOfflineEvalResults, |
| "offlineEvals" -> config.getSettingsOfflineEvals, |
| "offlineEvalSplitterInfos" -> config.getSettingsOfflineEvalSplitterInfos, |
| "offlineEvalSplitters" -> config.getSettingsOfflineEvalSplitters, |
| "offlineTunes" -> config.getSettingsOfflineTunes, |
| "paramGenInfos" -> config.getSettingsParamGenInfos, |
| "paramGens" -> config.getSettingsParamGens, |
| "systemInfos" -> config.getSettingsSystemInfos, |
| "users" -> config.getSettingsUsers) |
| |
| def main(args: Array[String]) { |
| val parser = new scopt.OptionParser[BackupConfig]("backup") { |
| head("PredictionIO Backup Utility", "0.6.8") |
| help("help") text ("prints this usage text") |
| arg[String]("<backup directory>") action { (x, c) => |
| c.copy(backupDir = x) |
| } text ("directory containing backup files") |
| } |
| |
| parser.parse(args, BackupConfig()) map { backupConfig => |
| println("PredictionIO Backup Utility") |
| println() |
| |
| val backupDir = backupConfig.backupDir |
| |
| val backupDirFile = new java.io.File(backupDir) |
| if (!backupDirFile.exists && !backupDirFile.mkdirs) { |
| println(s"Unable to create directory ${backupDir}. Aborting...") |
| sys.exit(1) |
| } |
| |
| settingsMap map { s => |
| val fn = s"${backupDir}/${s._1}.json" |
| val fos = new java.io.FileOutputStream(fn) |
| try { |
| fos.write(s._2.backup()) |
| println(s"Backed up to ${fn}") |
| } finally { |
| fos.close() |
| } |
| } |
| |
| config.settingsDbType match { |
| case "mongodb" => { |
| val metadata = new settings.mongodb.MongoMetadata(config.settingsMongoDb.get) |
| val fn = s"${backupDir}/metadata.json" |
| val fos = new java.io.FileOutputStream(fn) |
| try { |
| fos.write(metadata.backup()) |
| println(s"Metadata backed up to ${fn}") |
| } finally { |
| fos.close() |
| } |
| } |
| case _ => println(s"Unknown settings database type ${config.settingsDbType}. Skipping metadata backup.") |
| } |
| |
| println() |
| println("Backup completed.") |
| } |
| } |
| } |