mirror of https://gitee.com/bigwinds/arangodb
304 lines
8.4 KiB
JavaScript
304 lines
8.4 KiB
JavaScript
/*jshint strict: false */
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief foxx administration actions
|
|
///
|
|
/// @file
|
|
///
|
|
/// DISCLAIMER
|
|
///
|
|
/// Copyright 2014 ArangoDB GmbH, Cologne, Germany
|
|
///
|
|
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|
/// you may not use this file except in compliance with the License.
|
|
/// You may obtain a copy of the License at
|
|
///
|
|
/// http://www.apache.org/licenses/LICENSE-2.0
|
|
///
|
|
/// Unless required by applicable law or agreed to in writing, software
|
|
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
/// See the License for the specific language governing permissions and
|
|
/// limitations under the License.
|
|
///
|
|
/// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
|
///
|
|
/// @author Dr. Frank Celler
|
|
/// @author Copyright 2014, ArangoDB GmbH, Cologne, Germany
|
|
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
var actions = require("org/arangodb/actions");
|
|
var foxxManager = require("org/arangodb/foxx/manager");
|
|
|
|
var easyPostCallback = actions.easyPostCallback;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// --SECTION-- public functions
|
|
// -----------------------------------------------------------------------------
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief sets up a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/setup",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
|
|
return foxxManager.setup(mount);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief tears down a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/teardown",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
|
|
return foxxManager.teardown(mount);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief installs a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/install",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var appInfo = body.appInfo;
|
|
var mount = body.mount;
|
|
var options = body.options;
|
|
foxxManager.update();
|
|
return foxxManager.install(appInfo, mount, options);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief uninstalls a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/uninstall",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
var options = body.options || {};
|
|
|
|
return foxxManager.uninstall(mount, options);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief replaces a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/replace",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var appInfo = body.appInfo;
|
|
var mount = body.mount;
|
|
var options = body.options;
|
|
|
|
return foxxManager.replace(appInfo, mount, options);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief upgrades a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/upgrade",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var appInfo = body.appInfo;
|
|
var mount = body.mount;
|
|
var options = body.options;
|
|
|
|
return foxxManager.upgrade(appInfo, mount, options);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief configures a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/configure",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
var options = body.options;
|
|
if (options && options.configuration) {
|
|
options = options.configuration;
|
|
}
|
|
|
|
return foxxManager.configure(mount, {configuration: options || {}});
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Gets the configuration of a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/configuration",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
|
|
return foxxManager.configuration(mount);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief configures a Foxx application's dependencies
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/set-dependencies",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
var options = body.options;
|
|
|
|
return foxxManager.updateDeps(mount, {dependencies: options || {}});
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Gets the dependencies of a Foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/dependencies",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
|
|
return foxxManager.dependencies(mount);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Toggles the development mode of a foxx application
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/development",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
var activate = body.activate;
|
|
if (activate) {
|
|
return foxxManager.development(mount);
|
|
} else {
|
|
return foxxManager.production(mount);
|
|
}
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Run tests for an app
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/tests",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
var options = body.options;
|
|
return foxxManager.runTests(mount, options);
|
|
}
|
|
})
|
|
});
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
/// @brief Run script for an app
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url : "_admin/foxx/script",
|
|
prefix : false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var name = body.name;
|
|
var mount = body.mount;
|
|
var options = body.options;
|
|
try {
|
|
var result = foxxManager.runScript(name, mount, options);
|
|
return result;
|
|
} catch (e) {
|
|
throw e.cause || e;
|
|
}
|
|
}
|
|
})
|
|
});
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// --SECTION-- END-OF-FILE
|
|
// -----------------------------------------------------------------------------
|
|
|
|
// Local Variables:
|
|
// mode: outline-minor
|
|
// outline-regexp: "/// @brief\\|/// {@inheritDoc}\\|/// @page\\|/// @startDocuBlock\\|// --SECTION--\\|/// @\\}"
|
|
// End:
|