migrate app dataDir to volumes
This commit is contained in:
+13
-11
@@ -160,7 +160,7 @@ async function deleteAppDir(app, options) {
|
||||
async function addCollectdProfile(app) {
|
||||
assert.strictEqual(typeof app, 'object');
|
||||
|
||||
const appDataDir = await apps.getDataDir(app, app.dataDir);
|
||||
const appDataDir = await apps.getStorageDir(app);
|
||||
const collectdConf = ejs.render(COLLECTD_CONFIG_EJS, { appId: app.id, containerId: app.containerId, appDataDir });
|
||||
await collectd.addProfile(app.id, collectdConf);
|
||||
}
|
||||
@@ -269,12 +269,13 @@ async function waitForDnsPropagation(app) {
|
||||
}
|
||||
}
|
||||
|
||||
async function moveDataDir(app, targetDir) {
|
||||
async function moveDataDir(app, targetVolumeId, targetVolumePrefix) {
|
||||
assert.strictEqual(typeof app, 'object');
|
||||
assert(targetDir === null || typeof targetDir === 'string');
|
||||
assert(targetVolumeId === null || typeof targetVolumeId === 'string');
|
||||
assert(targetVolumePrefix === null || typeof targetVolumePrefix === 'string');
|
||||
|
||||
const resolvedSourceDir = await apps.getDataDir(app, app.dataDir);
|
||||
const resolvedTargetDir = await apps.getDataDir(app, targetDir);
|
||||
const resolvedSourceDir = await apps.getStorageDir(app);
|
||||
const resolvedTargetDir = await apps.getStorageDir(_.extend({}, app, { storageVolumeId: targetVolumeId, storageVolumePrefix: targetVolumePrefix }));
|
||||
|
||||
debug(`moveDataDir: migrating data from ${resolvedSourceDir} to ${resolvedTargetDir}`);
|
||||
|
||||
@@ -521,8 +522,9 @@ async function migrateDataDir(app, args, progressCallback) {
|
||||
assert.strictEqual(typeof args, 'object');
|
||||
assert.strictEqual(typeof progressCallback, 'function');
|
||||
|
||||
const newDataDir = args.newDataDir;
|
||||
assert(newDataDir === null || typeof newDataDir === 'string');
|
||||
const { newStorageVolumeId, newStorageVolumePrefix } = args;
|
||||
assert(newStorageVolumeId === null || typeof newStorageVolumeId === 'string');
|
||||
assert(newStorageVolumePrefix === null || typeof newStorageVolumePrefix === 'string');
|
||||
|
||||
await progressCallback({ percent: 10, message: 'Cleaning up old install' });
|
||||
await deleteContainers(app, { managedOnly: true });
|
||||
@@ -530,12 +532,12 @@ async function migrateDataDir(app, args, progressCallback) {
|
||||
await progressCallback({ percent: 45, message: 'Ensuring app data directory' });
|
||||
await createAppDir(app);
|
||||
|
||||
// re-setup addons since this creates the localStorage volume
|
||||
// re-setup addons since this creates the localStorage destination
|
||||
await progressCallback({ percent: 50, message: 'Setting up addons' });
|
||||
await services.setupAddons(_.extend({}, app, { dataDir: newDataDir }), app.manifest.addons);
|
||||
await services.setupAddons(_.extend({}, app, { storageVolumeId: newStorageVolumeId, storageVolumePrefix: newStorageVolumePrefix }), app.manifest.addons);
|
||||
|
||||
await progressCallback({ percent: 60, message: 'Moving data dir' });
|
||||
await moveDataDir(app, newDataDir);
|
||||
await moveDataDir(app, newStorageVolumeId, newStorageVolumePrefix);
|
||||
|
||||
await progressCallback({ percent: 90, message: 'Creating container' });
|
||||
await createContainer(app);
|
||||
@@ -543,7 +545,7 @@ async function migrateDataDir(app, args, progressCallback) {
|
||||
await startApp(app);
|
||||
|
||||
await progressCallback({ percent: 100, message: 'Done' });
|
||||
await updateApp(app, { installationState: apps.ISTATE_INSTALLED, error: null, health: null, dataDir: newDataDir });
|
||||
await updateApp(app, { installationState: apps.ISTATE_INSTALLED, error: null, health: null, storageVolumeId: newStorageVolumeId, storageVolumePrefix: newStorageVolumePrefix });
|
||||
}
|
||||
|
||||
// configure is called for an infra update and repair to re-create container, reverseproxy config. it's all "local"
|
||||
|
||||
Reference in New Issue
Block a user