Repository: ignite Updated Branches: refs/heads/ignite-843-rc1 60d850009 -> 7d0cd45c4
IGNITE-1200 WIP on IGFS support. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7d0cd45c Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7d0cd45c Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7d0cd45c Branch: refs/heads/ignite-843-rc1 Commit: 7d0cd45c4078a5d024d108c0fce7a137d0c30537 Parents: 60d8500 Author: Alexey Kuznetsov <[email protected]> Authored: Wed Oct 21 10:22:13 2015 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Wed Oct 21 10:22:13 2015 +0700 ---------------------------------------------------------------------- .../main/js/controllers/clusters-controller.js | 6 + .../main/js/controllers/models/clusters.json | 4 +- .../src/main/js/controllers/models/igfs.json | 139 +++++++++++++------ modules/control-center-web/src/main/js/db.js | 13 +- .../src/main/js/routes/clusters.js | 37 +++-- .../main/js/routes/generator/generator-java.js | 9 ++ .../main/js/routes/generator/generator-xml.js | 9 ++ .../src/main/js/routes/igfs.js | 96 +++++-------- .../src/main/js/views/configuration/caches.jade | 2 +- .../src/main/js/views/configuration/igfs.jade | 8 +- 10 files changed, 194 insertions(+), 129 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/controllers/clusters-controller.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/controllers/clusters-controller.js b/modules/control-center-web/src/main/js/controllers/clusters-controller.js index dda0c13..a7c94d5 100644 --- a/modules/control-center-web/src/main/js/controllers/clusters-controller.js +++ b/modules/control-center-web/src/main/js/controllers/clusters-controller.js @@ -178,11 +178,17 @@ consoleModule.controller('clustersController', [ $http.post('clusters/list') .success(function (data) { $scope.spaces = data.spaces; + $scope.clusters = data.clusters; + $scope.caches = _.map(data.caches, function (cache) { return {value: cache._id, label: cache.name, cache: cache}; }); + $scope.igfss = _.map(data.igfss, function (igfs) { + return {value: igfs._id, label: igfs.name, igfs: igfs}; + }); + // Load page descriptor. $http.get('/models/clusters.json') .success(function (data) { http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/controllers/models/clusters.json ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/controllers/models/clusters.json b/modules/control-center-web/src/main/js/controllers/models/clusters.json index 59ca422..325c4c9 100644 --- a/modules/control-center-web/src/main/js/controllers/models/clusters.json +++ b/modules/control-center-web/src/main/js/controllers/models/clusters.json @@ -1041,10 +1041,10 @@ "label": "IGFS", "id": "igfs", "type": "dropdown-multiple", - "model": "igfs", + "model": "igfss", "placeholder": "Choose IGFS", "placeholderEmpty": "No IGFS configured", - "items": "igfs", + "items": "igfss", "tip": [ "Select IGFS to start in cluster or add a new IGFS" ], http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/controllers/models/igfs.json ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/controllers/models/igfs.json b/modules/control-center-web/src/main/js/controllers/models/igfs.json index 7891bff..23b07e0 100644 --- a/modules/control-center-web/src/main/js/controllers/models/igfs.json +++ b/modules/control-center-web/src/main/js/controllers/models/igfs.json @@ -36,50 +36,20 @@ "placeholder": "Input name" }, { - "label": "Block size", - "id": "BlockSize", - "type": "number", - "model": "blockSize", - "placeholder": "65536", + "label": "Clusters", + "id": "clusters", + "type": "dropdown-multiple", + "model": "clusters", + "placeholder": "Choose clusters", + "placeholderEmpty": "No clusters configured", + "items": "clusters", "tip": [ - "File's data block size (bytes)" - ] - }, - { - "label": "Stream buffer size", - "id": "streamBufferSize", - "type": "number", - "model": "streamBufferSize" - }, - { - "label": "DefaultMode" - }, - { - "label": "MaxSpaceSize" - }, - { - "label": "MaximumTaskRangeLength" - }, - { - "label": "ManagementPort" - }, - { - "label": "PathModes" - }, - { - "label": "PerNodeBatchSize" - }, - { - "label": "PerNodeParallelBatchCount" - }, - { - "label": "PrefetchBlocks" - }, - { - "label": "SequentialReadsBeforePrefetch" - }, - { - "label": "TrashPurgeTimeout" + "Associate clusters with the current IGFS" + ], + "addLink": { + "label": "Add cluster(s)", + "ref": "/configuration/clusters?new" + } } ] } @@ -89,7 +59,7 @@ "label": "IPC", "group": "ipc", "tip": [ - "TODO" + "IGFS Inter-process communication properties" ], "fields": [ { @@ -98,7 +68,34 @@ "model": "ipcEndpointEnabled" }, { - "label": "IpcEndpointConfiguration" + "label": "Type", + "type": "dropdown", + "path": "ipcEndpointConfiguration", + "model": "type" + }, + { + "label": "Host", + "type": "text", + "path": "ipcEndpointConfiguration", + "model": "host" + }, + { + "label": "Port", + "type": "number", + "path": "ipcEndpointConfiguration", + "model": "port" + }, + { + "label": "Memory size", + "type": "number", + "path": "ipcEndpointConfiguration", + "model": "memorySize" + }, + { + "label": "Token directory", + "type": "text", + "path": "ipcEndpointConfiguration", + "model": "tokenDirectoryPath" } ] }, @@ -148,7 +145,57 @@ ] }, { - "label": "Miscellaneous" + "label": "Miscellaneous", + "group": "misc", + "tip": [], + "fields": [ + { + "label": "Block size", + "id": "BlockSize", + "type": "number", + "model": "blockSize", + "placeholder": "65536", + "tip": [ + "File's data block size (bytes)" + ] + }, + { + "label": "Stream buffer size", + "id": "streamBufferSize", + "type": "number", + "model": "streamBufferSize" + }, + { + "label": "DefaultMode" + }, + { + "label": "MaxSpaceSize" + }, + { + "label": "MaximumTaskRangeLength" + }, + { + "label": "ManagementPort" + }, + { + "label": "PathModes" + }, + { + "label": "PerNodeBatchSize" + }, + { + "label": "PerNodeParallelBatchCount" + }, + { + "label": "PrefetchBlocks" + }, + { + "label": "SequentialReadsBeforePrefetch" + }, + { + "label": "TrashPurgeTimeout" + } + ] } ] } http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/db.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/db.js b/modules/control-center-web/src/main/js/db.js index c987da3..f9cacb4 100644 --- a/modules/control-center-web/src/main/js/db.js +++ b/modules/control-center-web/src/main/js/db.js @@ -222,19 +222,26 @@ exports.Cache = mongoose.model('Cache', CacheSchema); var IgfsSchema = new Schema({ space: {type: ObjectId, ref: 'Space'}, name: String, + clusters: [{type: ObjectId, ref: 'Cluster'}], blockSize: Number, streamBufferSize: Number, dataCacheName: String, metaCacheName: String, defaultMode: {type: String, enum: ['PRIMARY', 'PROXY', 'DUAL_SYNC', 'DUAL_ASYNC']}, dualModeMaxPendingPutsSize: Number, - //dualModePutExec = cfg.getDualModePutExecutorService(); + dualModePutExecutorService: String, dualModePutExecutorServiceShutdown: Boolean, fragmentizerConcurrentFiles: Number, fragmentizerEnabled: Boolean, fragmentizerThrottlingBlockLength: Number, fragmentizerThrottlingDelay: Number, - ipcEndpointConfiguration: {}, + ipcEndpointConfiguration: { + type: {type: String, enum: ['SHMEM', 'TCP']}, + host: String, + port: Number, + memorySize: Number, + tokenDirectoryPath: String + }, ipcEndpointEnabled: Boolean, maxSpaceSize: Number, maximumTaskRangeLength: Number, @@ -326,7 +333,7 @@ var ClusterSchema = new Schema({ deploymentMode: {type: String, enum: ['PRIVATE', 'ISOLATED', 'SHARED', 'CONTINUOUS']}, discoveryStartupDelay: Number, igfsThreadPoolSize: Number, - igfs: [{type: ObjectId, ref: 'Igfs'}], + igfss: [{type: ObjectId, ref: 'Igfs'}], includeEventTypes: [{ type: String, enum: ['EVTS_CHECKPOINT', 'EVTS_DEPLOYMENT', 'EVTS_ERROR', 'EVTS_DISCOVERY', 'EVTS_JOB_EXECUTION', 'EVTS_TASK_EXECUTION', 'EVTS_CACHE', 'EVTS_CACHE_REBALANCE', 'EVTS_CACHE_LIFECYCLE', http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/routes/clusters.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/clusters.js b/modules/control-center-web/src/main/js/routes/clusters.js index 6d2208c..77e5677 100644 --- a/modules/control-center-web/src/main/js/routes/clusters.js +++ b/modules/control-center-web/src/main/js/routes/clusters.js @@ -43,20 +43,31 @@ router.post('/list', function (req, res) { // Get all caches for spaces. db.Cache.find({space: {$in: space_ids}}).sort('name').deepPopulate('metadatas').exec(function (err, caches) { if (db.processed(err, res)) { - // Get all clusters for spaces. - db.Cluster.find({space: {$in: space_ids}}).sort('name').exec(function (err, clusters) { - if (db.processed(err, res)) { - // Remove deleted caches. - _.forEach(clusters, function (cluster) { - cluster.caches = _.filter(cluster.caches, function (cacheId) { - return _.findIndex(caches, function (cache) { - return cache._id.equals(cacheId); - }) >= 0; - }); + // Get all IGFSs for spaces. + db.Igfs.find({space: {$in: space_ids}}).sort('name').exec(function (err, igfss) { + if (db.processed(err, res)) + // Get all clusters for spaces. + db.Cluster.find({space: {$in: space_ids}}).sort('name').exec(function (err, clusters) { + if (db.processed(err, res)) { + _.forEach(clusters, function (cluster) { + // Remove deleted caches. + cluster.caches = _.filter(cluster.caches, function (cacheId) { + return _.findIndex(caches, function (cache) { + return cache._id.equals(cacheId); + }) >= 0; + }); + + // Remove deleted IGFS. + cluster.igfss = _.filter(cluster.igfss, function (igfsId) { + return _.findIndex(igfss, function (igfs) { + return igfs._id.equals(igfsId); + }) >= 0; + }); + }); + + res.json({spaces: spaces, caches: caches, igfss: igfss, clusters: clusters}); + } }); - - res.json({spaces: spaces, caches: caches, clusters: clusters}); - } }); } }); http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/routes/generator/generator-java.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-java.js b/modules/control-center-web/src/main/js/routes/generator/generator-java.js index 4c4ca38..d65f3e9 100644 --- a/modules/control-center-web/src/main/js/routes/generator/generator-java.js +++ b/modules/control-center-web/src/main/js/routes/generator/generator-java.js @@ -1517,6 +1517,15 @@ $generatorJava.clusterSsl = function(cluster, res) { return res; }; +$generatorJava.igfs = function(igfs, varName, res) { + if (!res) + res = $generatorCommon.builder(); + + res.line('TODO IGFS java code generation'); + + return res; +}; + /** * Function to generate java code for cluster configuration. * http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/routes/generator/generator-xml.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/generator/generator-xml.js b/modules/control-center-web/src/main/js/routes/generator/generator-xml.js index f806ba5..6dfd9cf 100644 --- a/modules/control-center-web/src/main/js/routes/generator/generator-xml.js +++ b/modules/control-center-web/src/main/js/routes/generator/generator-xml.js @@ -1088,6 +1088,15 @@ $generatorXml.clusterCaches = function(caches, res) { return res; }; +$generatorXml.igfs = function(igfs, res) { + if (!res) + res = $generatorCommon.builder(); + + res.line('TODO IGFS XML generation'); + + return res; +}; + // Generate cluster config. $generatorXml.cluster = function (cluster, clientNearCfg) { if (cluster) { http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/routes/igfs.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/routes/igfs.js b/modules/control-center-web/src/main/js/routes/igfs.js index bc5b282..caf99b1 100644 --- a/modules/control-center-web/src/main/js/routes/igfs.js +++ b/modules/control-center-web/src/main/js/routes/igfs.js @@ -19,7 +19,7 @@ var _ = require('lodash'); var router = require('express').Router(); var db = require('../db'); -/* GET caches page. */ +/* GET IGFS page. */ router.get('/', function (req, res) { res.render('configuration/igfs'); }); @@ -43,89 +43,65 @@ router.post('/list', function (req, res) { // Get all clusters for spaces. db.Cluster.find({space: {$in: space_ids}}, '_id name').sort('name').exec(function (err, clusters) { if (db.processed(err, res)) { - // Get all caches type metadata for spaces. - db.CacheTypeMetadata.find({space: {$in: space_ids}}).sort('name').exec(function (err, metadatas) { + // Get all IGFSs for spaces. + db.Igfs.find({space: {$in: space_ids}}).sort('name').exec(function (err, igfss) { if (db.processed(err, res)) { - // Get all caches for spaces. - db.Cache.find({space: {$in: space_ids}}).sort('name').exec(function (err, caches) { - if (db.processed(err, res)) { - _.forEach(caches, function (cache) { - // Remove deleted clusters. - cache.clusters = _.filter(cache.clusters, function (clusterId) { - return _.findIndex(clusters, function (cluster) { - return cluster._id.equals(clusterId); - }) >= 0; - }); - - // Remove deleted metadata. - cache.metadatas = _.filter(cache.metadatas, function (metaId) { - return _.findIndex(metadatas, function (meta) { - return meta._id.equals(metaId); - }) >= 0; - }); - }); - - res.json({ - spaces: spaces, - clusters: clusters.map(function (cluster) { - return {value: cluster._id, label: cluster.name}; - }), - metadatas: metadatas, - caches: caches - }); - } + _.forEach(igfss, function (igfs) { + // Remove deleted clusters. + igfs.clusters = _.filter(igfs.clusters, function (clusterId) { + return _.findIndex(clusters, function (cluster) { + return cluster._id.equals(clusterId); + }) >= 0; + }); + }); + + res.json({ + spaces: spaces, + clusters: clusters.map(function (cluster) { + return {value: cluster._id, label: cluster.name}; + }), + igfss: igfss }); } - }); - } + }); } }); } }); }); /** - * Save cache. + * Save IGFS. */ router.post('/save', function (req, res) { var params = req.body; - var cacheId = params._id; + var igfsId = params._id; var clusters = params.clusters; - var metadatas = params.metadatas; if (params._id) { - db.Cache.update({_id: cacheId}, params, {upsert: true}, function (err) { + db.Igfs.update({_id: igfsId}, params, {upsert: true}, function (err) { if (db.processed(err, res)) - db.Cluster.update({_id: {$in: clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, function (err) { + db.Cluster.update({_id: {$in: clusters}}, {$addToSet: {igfss: igfsId}}, {multi: true}, function (err) { if (db.processed(err, res)) - db.Cluster.update({_id: {$nin: clusters}}, {$pull: {caches: cacheId}}, {multi: true}, function (err) { + db.Cluster.update({_id: {$nin: clusters}}, {$pull: {igfss: igfsId}}, {multi: true}, function (err) { if (db.processed(err, res)) - db.CacheTypeMetadata.update({_id: {$in: metadatas}}, {$addToSet: {caches: cacheId}}, {multi: true}, function (err) { - if (db.processed(err, res)) - db.CacheTypeMetadata.update({_id: {$nin: metadatas}}, {$pull: {caches: cacheId}}, {multi: true}, function (err) { - if (db.processed(err, res)) - res.send(params._id); - }); - }); + res.send(params._id); }); }); }) } else - db.Cache.findOne({space: params.space, name: params.name}, function (err, cache) { + db.Igfs.findOne({space: params.space, name: params.name}, function (err, igfs) { if (db.processed(err, res)) { - if (cache) - return res.status(500).send('Cache with name: "' + cache.name + '" already exist.'); + if (igfs) + return res.status(500).send('IGFS with name: "' + igfs.name + '" already exist.'); - (new db.Cache(params)).save(function (err, cache) { + (new db.Igfs(params)).save(function (err, igfs) { if (db.processed(err, res)) { - cacheId = cache._id; + igfsId = igfs._id; - db.Cluster.update({_id: {$in: clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, function (err) { + db.Cluster.update({_id: {$in: clusters}}, {$addToSet: {igfss: igfsId}}, {multi: true}, function (err) { if (db.processed(err, res)) - db.CacheTypeMetadata.update({_id: {$in: metadatas}}, {$addToSet: {caches: cacheId}}, {multi: true}, function (err) { - if (db.processed(err, res)) - res.send(cacheId); - }); + res.send(igfsId); }); } }); @@ -134,17 +110,17 @@ router.post('/save', function (req, res) { }); /** - * Remove cache by ._id. + * Remove IGFS by ._id. */ router.post('/remove', function (req, res) { - db.Cache.remove(req.body, function (err) { + db.Igfs.remove(req.body, function (err) { if (db.processed(err, res)) res.sendStatus(200); }) }); /** - * Remove all caches. + * Remove all IGFSs. */ router.post('/remove/all', function (req, res) { var user_id = req.currentUserId(); @@ -156,7 +132,7 @@ router.post('/remove/all', function (req, res) { return value._id; }); - db.Cache.remove({space: {$in: space_ids}}, function (err) { + db.Igfs.remove({space: {$in: space_ids}}, function (err) { if (err) return res.status(500).send(err.message); http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/views/configuration/caches.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/configuration/caches.jade b/modules/control-center-web/src/main/js/views/configuration/caches.jade index 93751ed..f2ebed6 100644 --- a/modules/control-center-web/src/main/js/views/configuration/caches.jade +++ b/modules/control-center-web/src/main/js/views/configuration/caches.jade @@ -31,7 +31,7 @@ block content hr +main-table('Caches:', 'caches', 'cacheName', 'selectItem(row)', '{{$index + 1}}) {{row.name}}, {{row.cacheMode | displayValue:cacheModes:"Cache mode not set"}}, {{row.atomicityMode | displayValue:atomicities:"Cache atomicity not set"}}') .padding-top-dflt(bs-affix) - .panel-tip-container(data-placement='bottom' bs-tooltip data-title='Create new caches') + .panel-tip-container(data-placement='bottom' bs-tooltip data-title='Create new cache') button.btn.btn-primary(id='new-item' ng-click='createItem()') Add cache +save-remove-buttons('cache') hr http://git-wip-us.apache.org/repos/asf/ignite/blob/7d0cd45c/modules/control-center-web/src/main/js/views/configuration/igfs.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/configuration/igfs.jade b/modules/control-center-web/src/main/js/views/configuration/igfs.jade index 28c4384..2a99d71 100644 --- a/modules/control-center-web/src/main/js/views/configuration/igfs.jade +++ b/modules/control-center-web/src/main/js/views/configuration/igfs.jade @@ -29,11 +29,11 @@ block content div(ng-show='ui.ready') +block-callout('{{screenTip.workflowTitle}}', 'screenTip.workflowContent', '{{screenTip.whatsNextTitle}}', 'screenTip.whatsNextContent') hr - +main-table('IGFS:', 'igfs', 'igfsName', 'selectItem(row)', '{{$index + 1}}) {{row.name}}') + +main-table('IGFS:', 'igfss', 'igfsName', 'selectItem(row)', '{{$index + 1}}) {{row.name}}') .padding-top-dflt(bs-affix) - .panel-tip-container(data-placement='bottom' bs-tooltip data-title='Create new caches') + .panel-tip-container(data-placement='bottom' bs-tooltip data-title='Create new IGFS') button.btn.btn-primary(id='new-item' ng-click='createItem()') Add IGFS - +save-remove-buttons('igfs') + +save-remove-buttons('IGFS') hr form.form-horizontal(name='ui.inputForm' ng-show='backupItem && tableVisibleRow(displayedRows, selectedItem)' novalidate unsaved-warning-form) .panel-group(bs-collapse ng-model='panels.activePanels' data-allow-multiple='true' ng-click='triggerDigest = true') @@ -43,4 +43,4 @@ block content +groups('advanced', 'backupItem') +advanced-options .section(ng-show='ui.expanded') - +save-remove-buttons('igfs') + +save-remove-buttons('IGFS')
