Repository: incubator-ignite Updated Branches: refs/heads/ignite-843 7743f0cab -> 2e8a3d1a3
IGNITE-843 Get drivers and metadata from web-agent. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/b6941c99 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/b6941c99 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/b6941c99 Branch: refs/heads/ignite-843 Commit: b6941c995ba24e8b8035d7bcef46238cc7e501cc Parents: b7fc32b Author: AKuznetsov <akuznet...@gridgain.com> Authored: Thu Aug 13 23:52:02 2015 +0700 Committer: AKuznetsov <akuznet...@gridgain.com> Committed: Thu Aug 13 23:52:02 2015 +0700 ---------------------------------------------------------------------- .../main/js/controllers/metadata-controller.js | 4 +- .../src/main/js/routes/agent.js | 127 ++++++++++--------- 2 files changed, 68 insertions(+), 63 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b6941c99/modules/control-center-web/src/main/js/controllers/metadata-controller.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/controllers/metadata-controller.js b/modules/control-center-web/src/main/js/controllers/metadata-controller.js index a6b0e7a..7f79808 100644 --- a/modules/control-center-web/src/main/js/controllers/metadata-controller.js +++ b/modules/control-center-web/src/main/js/controllers/metadata-controller.js @@ -195,7 +195,9 @@ controlCenterModule.controller('metadataController', [ $scope.loadMetadataFromDb = function () { $http.post('/agent/metadata') .success(function (tables) { - $scope.loadMeta.tables = tables; + $scope.loadMeta.tables = _.map(tables, function (tbl) { + return {schemaName: tbl.schema, tableName: tbl.tbl}; + }); $scope.loadMeta.action = 'tables'; }) .error(function (errMsg) { http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/b6941c99/modules/control-center-web/src/main/js/routes/agent.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/agent.js b/modules/control-center-web/src/main/js/routes/agent.js index ddc0280..9886e86 100644 --- a/modules/control-center-web/src/main/js/routes/agent.js +++ b/modules/control-center-web/src/main/js/routes/agent.js @@ -21,98 +21,101 @@ var agentManager = require('../agents/agent-manager'); var apacheIgnite = require('apache-ignite'); var SqlFieldsQuery = apacheIgnite.SqlFieldsQuery; -/* Get grid topology. */ -router.post('/topology', function (req, res) { +function _client(req, res) { var client = agentManager.getAgentManager().findClient(req.currentUserId()); - if (!client) - return res.status(500).send("Client not found"); + if (!client) { + res.status(500).send("Client not found"); - client.ignite().cluster().then(function (clusters) { - res.json(clusters.map(function (cluster) { - var caches = Object.keys(cluster._caches).map(function (key) { - return {"name": key, "mode": cluster._caches[key]} - }); + return null; + } - return {nodeId: cluster._nodeId, caches: caches}; - })); - }, function (err) { - res.status(500).send(err); - }); + return client; +} + +/* Get grid topology. */ +router.post('/topology', function (req, res) { + var client = _client(req, res); + + if (client) { + client.ignite().cluster().then(function (clusters) { + res.json(clusters.map(function (cluster) { + var caches = Object.keys(cluster._caches).map(function (key) { + return {"name": key, "mode": cluster._caches[key]} + }); + + return {nodeId: cluster._nodeId, caches: caches}; + })); + }, function (err) { + res.status(500).send(err); + }); + } }); /* Execute query. */ router.post('/query', function (req, res) { - var client = agentManager.getAgentManager().findClient(req.currentUserId()); - - if (!client) - return res.status(500).send("Client not found"); + var client = _client(req, res); - // Create sql query. - var qry = new SqlFieldsQuery(req.body.query); + if (client) { + // Create sql query. + var qry = new SqlFieldsQuery(req.body.query); - // Set page size for query. - qry.setPageSize(req.body.pageSize); + // Set page size for query. + qry.setPageSize(req.body.pageSize); - // Get query cursor. - client.ignite().cache(req.body.cacheName).query(qry).nextPage().then(function (cursor) { - res.json({meta: cursor.fieldsMetadata(), rows: cursor.page(), queryId: cursor.queryId()}); - }, function (err) { - res.status(500).send(err); - }); + // Get query cursor. + client.ignite().cache(req.body.cacheName).query(qry).nextPage().then(function (cursor) { + res.json({meta: cursor.fieldsMetadata(), rows: cursor.page(), queryId: cursor.queryId()}); + }, function (err) { + res.status(500).send(err); + }); + } }); /* Get next query page. */ router.post('/next_page', function (req, res) { - var client = agentManager.getAgentManager().findClient(req.currentUserId()); + var client = _client(req, res); - if (!client) - return res.status(500).send("Client not found"); + if (client) { + var cache = client.ignite().cache(req.body.cacheName); - var cache = client.ignite().cache(req.body.cacheName); + var cmd = cache._createCommand("qryfetch").addParam("qryId", req.body.queryId). + addParam("pageSize", req.body.pageSize); - var cmd = cache._createCommand("qryfetch").addParam("qryId", req.body.queryId). - addParam("pageSize", req.body.pageSize); - - cache.__createPromise(cmd).then(function (page) { - res.json({rows: page["items"], last: page === null || page["last"]}); - }, function (err) { - res.status(500).send(err); - }); + cache.__createPromise(cmd).then(function (page) { + res.json({rows: page["items"], last: page === null || page["last"]}); + }, function (err) { + res.status(500).send(err); + }); + } }); /* Get JDBC drivers list. */ router.post('/drivers', function (req, res) { - res.json(['ojdbc6.jar', 'db2jcc4.jar', 'h2.jar']); + var client = _client(req, res); - //var client = agentManager.getAgentManager().findClient(req.currentUserId()); - // - //if (!client) - // return res.status(500).send("Client not found"); + if (client) { + client.availableDrivers(function (err, drivers) { + if (err) + return res.status(500).send(err); + res.json(drivers); + }); + } }); /** Get database metadata. */ router.post('/metadata', function (req, res) { - var tables = []; - - for (var i = 1; i < 17; i++) { - tables.push({ - schemaName: 'Schema' + ((i / 5) + 1), - use: true, - tableName: 'Table' + i, - keyClass: 'KeyClass' + i, - valueClass: 'ValueClass' + i - }) - } + var client = _client(req, res); - res.json(tables); - - //var client = agentManager.getAgentManager().findClient(req.currentUserId()); - // - //if (!client) - // return res.status(500).send("Client not found"); + if (client) { + client.extractMetadata('h2-1.4.188.jar', 'org.h2.Driver', 'jdbc:h2:tcp://localhost/c:/temp/agent', {user: 'sa'}, true, function (err, meta) { + if (err) + return res.status(500).send(err); + res.json(meta); + }); + } }); module.exports = router;