mirror of https://gitee.com/bigwinds/arangodb
297 lines
8.1 KiB
JavaScript
297 lines
8.1 KiB
JavaScript
/* jshint strict: false */
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief foxx administration actions
|
|
// /
|
|
// / @file
|
|
// /
|
|
// / DISCLAIMER
|
|
// /
|
|
// / Copyright 2016 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-2016, ArangoDB GmbH, Cologne, Germany
|
|
// / @author Copyright 2012, triAGENS GmbH, Cologne, Germany
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
var actions = require('@arangodb/actions');
|
|
var foxxManager = require('@arangodb/foxx/manager');
|
|
|
|
var easyPostCallback = actions.easyPostCallback;
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief sets up a Foxx service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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 service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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 service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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;
|
|
return foxxManager.install(appInfo, mount, options).simpleJSON();
|
|
}
|
|
})
|
|
});
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief uninstalls a Foxx service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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).simpleJSON();
|
|
}
|
|
})
|
|
});
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief replaces a Foxx service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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).simpleJSON();
|
|
}
|
|
})
|
|
});
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief upgrades a Foxx service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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).simpleJSON();
|
|
}
|
|
})
|
|
});
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief configures a Foxx service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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;
|
|
}
|
|
foxxManager.setConfiguration(mount, {configuration: options || {}});
|
|
return foxxManager.lookupService(mount).simpleJSON();
|
|
}
|
|
})
|
|
});
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief Gets the configuration of a Foxx service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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 service'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;
|
|
|
|
foxxManager.setDependencies(mount, {dependencies: options || {}});
|
|
return foxxManager.lookupService(mount).simpleJSON();
|
|
}
|
|
})
|
|
});
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief Gets the dependencies of a Foxx service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
actions.defineHttp({
|
|
url: '_admin/foxx/dependencies',
|
|
prefix: false,
|
|
|
|
callback: easyPostCallback({
|
|
body: true,
|
|
callback: function (body) {
|
|
var mount = body.mount;
|
|
|
|
const deps = foxxManager.dependencies(mount);
|
|
for (const key of Object.keys(deps)) {
|
|
const dep = deps[key];
|
|
deps[key] = {
|
|
definition: dep,
|
|
title: dep.title,
|
|
current: dep.current
|
|
};
|
|
delete dep.title;
|
|
delete dep.current;
|
|
}
|
|
return deps;
|
|
}
|
|
})
|
|
});
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @brief Toggles the development mode of a foxx service
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
|
|
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).simpleJSON();
|
|
} else {
|
|
return foxxManager.production(mount).simpleJSON();
|
|
}
|
|
}
|
|
})
|
|
});
|
|
|
|
// //////////////////////////////////////////////////////////////////////////////
|
|
// / @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;
|
|
return foxxManager.runScript(name, mount, options);
|
|
}
|
|
})
|
|
});
|