You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2016/02/16 16:14:45 UTC

[28/50] ignite git commit: IGNITE-843 WIP Rework server side to Promises.

IGNITE-843 WIP Rework server side to Promises.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/63bd2c0a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/63bd2c0a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/63bd2c0a

Branch: refs/heads/ignite-843-rc3
Commit: 63bd2c0a34581faa36c5e2b12e89ce9026a399b5
Parents: 3fc013a
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Tue Feb 16 10:39:41 2016 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Tue Feb 16 10:39:41 2016 +0700

----------------------------------------------------------------------
 .../main/js/controllers/caches-controller.js    |   8 +-
 .../main/js/controllers/domains-controller.js   |  14 +-
 .../src/main/js/serve/routes/clusters.js        |  11 +
 .../src/main/js/serve/routes/domains.js         | 203 +++++++++----------
 4 files changed, 127 insertions(+), 109 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/63bd2c0a/modules/control-center-web/src/main/js/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/caches-controller.js b/modules/control-center-web/src/main/js/controllers/caches-controller.js
index c1837c8..4a8ee53 100644
--- a/modules/control-center-web/src/main/js/controllers/caches-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/caches-controller.js
@@ -296,7 +296,13 @@ consoleModule.controller('cachesController', [
                 });
 
                 $scope.caches = data.caches;
-                $scope.clusters = data.clusters;
+                $scope.clusters = _.map(data.clusters, function (cluster) {
+                    return {
+                        value: cluster._id,
+                        label: cluster.name,
+                        caches: cluster.caches
+                    };
+                });
                 $scope.domains = _.sortBy(_.map(validFilter(data.domains, true, false), function (domain) {
                     return {
                         value: domain._id,

http://git-wip-us.apache.org/repos/asf/ignite/blob/63bd2c0a/modules/control-center-web/src/main/js/controllers/domains-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/domains-controller.js b/modules/control-center-web/src/main/js/controllers/domains-controller.js
index 03ebd97..142e76c 100644
--- a/modules/control-center-web/src/main/js/controllers/domains-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/domains-controller.js
@@ -83,7 +83,12 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
                             $http.post('/api/v1/configuration/domains/list')
                                 .success(function (data) {
                                     $scope.spaces = data.spaces;
-                                    $scope.clusters = data.clusters;
+                                    $scope.clusters = _.map(data.clusters, function (cluster) {
+                                        return {
+                                            value: cluster._id,
+                                            label: cluster.name
+                                        };
+                                    });
                                     $scope.caches = _mapCaches(data.caches);
                                     $scope.domains = data.domains;
 
@@ -1137,7 +1142,12 @@ consoleModule.controller('domainsController', function ($filter, $http, $timeout
         $http.post('/api/v1/configuration/domains/list')
             .success(function (data) {
                 $scope.spaces = data.spaces;
-                $scope.clusters = data.clusters;
+                $scope.clusters = _.map(data.clusters, function (cluster) {
+                    return {
+                        value: cluster._id,
+                        label: cluster.name
+                    };
+                });
                 $scope.caches = _mapCaches(data.caches);
                 $scope.domains = data.domains;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/63bd2c0a/modules/control-center-web/src/main/js/serve/routes/clusters.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/clusters.js b/modules/control-center-web/src/main/js/serve/routes/clusters.js
index c4260db..a04844a 100644
--- a/modules/control-center-web/src/main/js/serve/routes/clusters.js
+++ b/modules/control-center-web/src/main/js/serve/routes/clusters.js
@@ -43,9 +43,20 @@ module.exports.factory = function(_, express, mongo) {
                     result.spaces = spaces;
                     spacesIds = mongo.spacesIds(spaces);
 
+                    return mongo.DomainModel.find({space: {$in: spacesIds}}).sort('valueType').exec();
+                })
+                .then((domains) => {
+                    result.domains = domains;
+
                     return mongo.Cache.find({space: {$in: spacesIds}}).sort('name').exec();
                 })
                 .then((caches) => {
+                    _.forEach(caches, (cache) => {
+                        cache.domains = _.map(cache.domains, (domainId) => {
+                            return _.find(result.domains, {_id: domainId});
+                        });
+                    });
+
                     result.caches = caches;
 
                     return mongo.Igfs.find({space: {$in: spacesIds}}).sort('name').exec();

http://git-wip-us.apache.org/repos/asf/ignite/blob/63bd2c0a/modules/control-center-web/src/main/js/serve/routes/domains.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/domains.js b/modules/control-center-web/src/main/js/serve/routes/domains.js
index 3dc2116..f757910 100644
--- a/modules/control-center-web/src/main/js/serve/routes/domains.js
+++ b/modules/control-center-web/src/main/js/serve/routes/domains.js
@@ -24,7 +24,7 @@ module.exports = {
     inject: ['require(lodash)', 'require(express)', 'mongo']
 };
 
-module.exports.factory = function(_, express, async, mongo) {
+module.exports.factory = function(_, express, mongo) {
     return new Promise((factoryResolve) => {
         const router = new express.Router();
 
@@ -63,122 +63,113 @@ module.exports.factory = function(_, express, async, mongo) {
                 .catch((err) => mongo.handleError(res, err));
         });
 
-        // function _saveDomainModel(domain, savedDomains, callback) {
-        //    const caches = domain.caches;
-        //    const cacheStoreChanges = domain.cacheStoreChanges;
-        //    let domainId = domain._id;
-        //
-        //    if (domainId) {
-        //        Promise.all([
-        //            mongo.DomainModel.update({_id: domain._id}, domain, {upsert: true}).exec(),
-        //            mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: domainId}}, {multi: true}).exec(),
-        //            mongo.Cache.update({_id: {$nin: caches}}, {$pull: {domains: domainId}}, {multi: true}).exec()
-        //        ]).then(() => {
-        //                savedDomains.push(domain);
-        //
-        //                _updateCacheStore(cacheStoreChanges, callback);
-        //        });
-        //    }
-        //    else {
-        //        mongo.DomainModel.findOne({space: domain.space, valueType: domain.valueType}).exec()
-        //            .then((found) => {
-        //                if (found)
-        //                    reject(new Error('Domain model with value type: "' + found.valueType + '" already exist.'));
-        //
-        //                return (new mongo.DomainModel(domain)).save();
-        //            })
-        //            .then((domainSaved) => {
-        //                savedDomains.push(domainSaved);
-        //
-        //                return mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: domainSaved._id}}, {multi: true}).exec();
-        //            }).then(() => _updateCacheStore(cacheStoreChanges));
-        //    }
-        // }
-
-        // function _updateCacheStore(cacheStoreChanges, callback) {
-        //    if (cacheStoreChanges && cacheStoreChanges.length > 0) {
-        //        async.forEachOf(cacheStoreChanges, (change, idx, cb) => {
-        //            mongo.Cache.update({_id: {$eq: change.cacheId}}, change.change, {}, (err) => {
-        //                if (err)
-        //                    cb(err);
-        //                else
-        //                    cb();
-        //            });
-        //        }, callback);
-        //    }
-        //    else
-        //        callback();
-        // }
-
-        // function _save(domains, res) {
-        //    if (domains && domains.length > 0) {
-        //        const savedDomains = [];
-        //        const generatedCaches = [];
-        //        const promises = [];
-        //
-        //        _.forEach(domains, (domain) => {
-        //            promises.push();
-        //        });
-        //
-        //        Promise.all(promises)
-        //            .then(() => res.send({savedDomains, generatedCaches}))
-        //            .catch((err) => mongo.handleError(res, err));
-        //
-        //        //async.forEachOf(domains, (domain, idx, callback) => {
-        //        //    if (domain.newCache) {
-        //        //        mongo.Cache.findOne({space: domain.space, name: domain.newCache.name}, (errCacheFind, cacheFound) => {
-        //        //            if (mongo.processed(errCacheFind, res)) {
-        //        //                if (cacheFound) {
-        //        //                    // Cache already exists, just save domain model.
-        //        //                    domain.caches = [cacheFound._id];
-        //        //
-        //        //                    _saveDomainModel(domain, savedDomains, callback);
-        //        //                }
-        //        //                else {
-        //        //                    // If cache not found, then create it and associate with domain model.
-        //        //                    const newCache = domain.newCache;
-        //        //                    newCache.space = domain.space;
-        //        //
-        //        //                    (new mongo.Cache(newCache)).save((errCache, cache) => {
-        //        //                        const cacheId = cache._id;
-        //        //
-        //        //                        if (mongo.processed(errCache, res)) {
-        //        //                            mongo.Cluster.update({_id: {$in: cache.clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, (errCluster) => {
-        //        //                                if (mongo.processed(errCluster, res)) {
-        //        //                                    domain.caches = [cacheId];
-        //        //                                    generatedCaches.push(cache);
-        //        //
-        //        //                                    _saveDomainModel(domain, savedDomains, callback);
-        //        //                                }
-        //        //                            });
-        //        //                        }
-        //        //                    });
-        //        //                }
-        //        //            }
-        //        //        });
-        //        //    }
-        //        //    else
-        //        //        _saveDomainModel(domain, savedDomains, callback);
-        //        //}
-        //    }
-        //    else
-        //        res.status(500).send('Nothing to save!');
-        // }
+        function _updateCacheStore(cacheStoreChanges) {
+            const promises = [];
+
+            _.forEach(cacheStoreChanges, (change) =>
+                promises.push(mongo.Cache.update({_id: {$eq: change.cacheId}}, change.change, {}).exec())
+            );
+
+            return Promise.all(promises);
+        }
+
+        function _saveDomainModel(domain, savedDomains) {
+            return new Promise((resolve) => {
+                const caches = domain.caches;
+                const cacheStoreChanges = domain.cacheStoreChanges;
+                const domainId = domain._id;
+
+                if (domainId) {
+                    mongo.DomainModel.update({_id: domain._id}, domain, {upsert: true}).exec()
+                        .then(() => mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: domainId}}, {multi: true}).exec())
+                        .then(() => mongo.Cache.update({_id: {$nin: caches}}, {$pull: {domains: domainId}}, {multi: true}).exec())
+                        .then(() => {
+                            savedDomains.push(domain);
+
+                            _updateCacheStore(cacheStoreChanges);
+                        })
+                        .then(() => resolve());
+                }
+                else {
+                    mongo.DomainModel.findOne({space: domain.space, valueType: domain.valueType}).exec()
+                        .then((found) => {
+                            if (found)
+                                throw new Error('Domain model with value type: "' + found.valueType + '" already exist.');
+
+                            return (new mongo.DomainModel(domain)).save();
+                        })
+                        .then((savedDomain) => {
+                            savedDomains.push(savedDomain);
+
+                            return mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: savedDomain._id}}, {multi: true}).exec();
+                        })
+                        .then(() => _updateCacheStore(cacheStoreChanges))
+                        .then(() => resolve());
+                }
+            });
+        }
+
+        function _save(domains, res) {
+            if (domains && domains.length > 0) {
+                const savedDomains = [];
+                const generatedCaches = [];
+                const promises = [];
+
+                _.forEach(domains, (domain) => {
+                    promises.push(new Promise((resolve) => {
+                        if (domain.newCache) {
+                            mongo.Cache.findOne({space: domain.space, name: domain.newCache.name}).exec()
+                                .then((cache) => {
+                                    if (cache) {
+                                        // Cache already exists, just save domain model.
+                                        domain.caches = [cache._id];
+
+                                        _saveDomainModel(domain, savedDomains).then(() => resolve());
+                                    }
+                                    else {
+                                        // If cache not found, then create it and associate with domain model.
+                                        const newCache = domain.newCache;
+                                        newCache.space = domain.space;
+
+                                        (new mongo.Cache(newCache)).save()
+                                            .then((generatedCache) => {
+                                                const cacheId = generatedCache._id;
+
+                                                generatedCaches.push(generatedCache);
+
+                                                domain.caches = [cacheId];
+
+                                                return mongo.Cluster.update({_id: {$in: generatedCache.clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}).exec();
+                                            })
+                                            .then(() => _saveDomainModel(domain, savedDomains).then(() => resolve()));
+                                    }
+                                });
+                        }
+                        else
+                            _saveDomainModel(domain, savedDomains).then(() => resolve());
+                    }));
+                });
+
+                Promise.all(promises)
+                    .then(() => res.send({savedDomains, generatedCaches}))
+                    .catch((err) => mongo.handleError(res, err));
+            }
+            else
+                res.status(500).send('Nothing to save!');
+        }
 
         /**
          * Save domain model.
          */
         router.post('/save', (req, res) => {
-            res.status(500).send('Not ready!');
-            // _save([req.body], res);
+            _save([req.body], res);
         });
 
         /**
          * Batch save domain models.
          */
         router.post('/save/batch', (req, res) => {
-            res.status(500).send('Not ready!');
-            // _save(req.body, res);
+            _save(req.body, res);
         });
 
         /**