Revert "add volume support"

This reverts commit b8bb69f730.

Revert this for now, we will try a simpler non-object volume first
This commit is contained in:
Girish Ramakrishnan
2020-04-27 22:55:43 -07:00
parent cc8509f8eb
commit 2cdf68379b
20 changed files with 38 additions and 864 deletions

View File

@@ -47,7 +47,7 @@ var addons = require('./addons.js'),
shell = require('./shell.js'),
safe = require('safetydance'),
util = require('util'),
volumes = require('./volumes.js');
_ = require('underscore');
const CLEARVOLUME_CMD = path.join(__dirname, 'scripts/clearvolume.sh'),
MKDIRVOLUME_CMD = path.join(__dirname, 'scripts/mkdirvolume.sh');
@@ -188,34 +188,11 @@ function downloadImage(manifest, callback) {
}, callback);
}
function getEnvAndMounts(app, callback) {
addons.getEnvironment(app, function (error, addonEnv) {
if (error) return callback(error);
let mounts = addons.getMountsSync(app, app.manifest.addons);
volumes.getAppMounts(app.id, function (error, volumes) {
if (error) return callback(error);
volumes.forEach(function (volume) {
mounts.push({
Target: `/media/${volume.name}`, // mnt is for temporary mounts. media is for removable mounts
Source: volume.id,
Type: 'volume',
ReadOnly: volume.readOnly
});
});
callback(null, addonEnv, mounts);
});
});
}
function createSubcontainer(app, name, cmd, callback) {
function createSubcontainer(app, name, cmd, options, callback) {
assert.strictEqual(typeof app, 'object');
assert.strictEqual(typeof name, 'string');
assert(!cmd || util.isArray(cmd));
assert.strictEqual(typeof options, 'object');
assert.strictEqual(typeof callback, 'function');
let isAppContainer = !cmd; // non app-containers are like scheduler and exec (terminal) containers
@@ -272,7 +249,7 @@ function createSubcontainer(app, name, cmd, callback) {
// if required, we can make this a manifest and runtime argument later
if (!isAppContainer) memoryLimit *= 2;
getEnvAndMounts(app, function (error, addonEnv, mounts) {
addons.getEnvironment(app, function (error, addonEnv) {
if (error) return callback(error);
// do no set hostname of containers to location as it might conflict with addons names. for example, an app installed in mail
@@ -299,7 +276,7 @@ function createSubcontainer(app, name, cmd, callback) {
'isCloudronManaged': String(true)
},
HostConfig: {
Mounts: mounts,
Mounts: addons.getMountsSync(app, app.manifest.addons),
LogConfig: {
Type: 'syslog',
Config: {
@@ -340,6 +317,8 @@ function createSubcontainer(app, name, cmd, callback) {
];
}
containerOptions = _.extend(containerOptions, options);
debugApp(app, 'Creating container for %s', app.manifest.dockerImage);
gConnection.createContainer(containerOptions, function (error, container) {
@@ -351,7 +330,7 @@ function createSubcontainer(app, name, cmd, callback) {
}
function createContainer(app, callback) {
createSubcontainer(app, app.id /* name */, null /* cmd */, callback);
createSubcontainer(app, app.id /* name */, null /* cmd */, { } /* options */, callback);
}
function startContainer(containerId, callback) {
@@ -594,10 +573,10 @@ function memoryUsage(containerId, callback) {
});
}
function createVolume(name, volumeDataDir, labels, callback) {
function createVolume(app, name, volumeDataDir, callback) {
assert.strictEqual(typeof app, 'object');
assert.strictEqual(typeof name, 'string');
assert.strictEqual(typeof volumeDataDir, 'string');
assert.strictEqual(typeof labels, 'object');
assert.strictEqual(typeof callback, 'function');
const volumeOptions = {
@@ -608,7 +587,10 @@ function createVolume(name, volumeDataDir, labels, callback) {
device: volumeDataDir,
o: 'bind'
},
Labels: labels
Labels: {
'fqdn': app.fqdn,
'appId': app.id
},
};
// requires sudo because the path can be outside appsdata
@@ -618,12 +600,13 @@ function createVolume(name, volumeDataDir, labels, callback) {
gConnection.createVolume(volumeOptions, function (error) {
if (error) return callback(new BoxError(BoxError.DOCKER_ERROR, error));
callback(null);
callback();
});
});
}
function clearVolume(name, options, callback) {
function clearVolume(app, name, options, callback) {
assert.strictEqual(typeof app, 'object');
assert.strictEqual(typeof name, 'string');
assert.strictEqual(typeof options, 'object');
assert.strictEqual(typeof callback, 'function');
@@ -643,13 +626,14 @@ function clearVolume(name, options, callback) {
}
// this only removes the volume and not the data
function removeVolume(name, callback) {
function removeVolume(app, name, callback) {
assert.strictEqual(typeof app, 'object');
assert.strictEqual(typeof name, 'string');
assert.strictEqual(typeof callback, 'function');
let volume = gConnection.getVolume(name);
volume.remove(function (error) {
if (error && error.statusCode !== 404) return callback(new BoxError(BoxError.DOCKER_ERROR, `Error removing volume: ${error.message}`));
if (error && error.statusCode !== 404) return callback(new BoxError(BoxError.DOCKER_ERROR, `removeVolume: Error removing volume of ${app.id} ${error.message}`));
callback();
});