You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2014/09/12 12:29:26 UTC

[12/28] git commit: [#7527] Replaced the migration with a raw mongo migration

[#7527] Replaced the migration with a raw mongo migration


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

Branch: refs/heads/je/42cc_4905
Commit: e3eaaa04584c7de514ec3cb6030d5c0e00fd25ad
Parents: d307dca
Author: Alexander Luberg <al...@slashdotmedia.com>
Authored: Tue Jul 29 21:52:39 2014 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Thu Aug 28 20:27:01 2014 +0000

----------------------------------------------------------------------
 .../030-email-address-_id-to-email.js           | 20 ++++++++++
 .../030-email-address-_id-to-email.py           | 39 --------------------
 2 files changed, 20 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/e3eaaa04/scripts/migrations/030-email-address-_id-to-email.js
----------------------------------------------------------------------
diff --git a/scripts/migrations/030-email-address-_id-to-email.js b/scripts/migrations/030-email-address-_id-to-email.js
new file mode 100644
index 0000000..f831623
--- /dev/null
+++ b/scripts/migrations/030-email-address-_id-to-email.js
@@ -0,0 +1,20 @@
+//1) Copy to the new collection with data updates
+db.email_address.find().snapshot().forEach(function(e){
+    e.email = e._id;
+    e._id = new ObjectId();
+    db.email_address_new.insert(e);
+    db.email_address.update({'_id': e._id}, {'migrated': true})
+});
+//2) Updated code on production(git pull)
+//3) Rename collections
+db.email_address.renameCollection("email_address_old", {dropTarget: true})
+db.email_address_new.renameCollection("email_address", {dropTarget: true})
+//4) Post Migration - copy/update all the object which were created between 1)&2)
+db.email_address_old.find({'migrated': {'$not': false}}).snapshot().forEach(function(e){
+    e.email = e._id;
+    e._id = new ObjectId();
+    db.email_address.insert(e);
+    db.email_address_old.update({'_id': e._id}, {'migrated': true})
+});
+
+db.email_address_old.drop()

http://git-wip-us.apache.org/repos/asf/allura/blob/e3eaaa04/scripts/migrations/030-email-address-_id-to-email.py
----------------------------------------------------------------------
diff --git a/scripts/migrations/030-email-address-_id-to-email.py b/scripts/migrations/030-email-address-_id-to-email.py
deleted file mode 100644
index e70af50..0000000
--- a/scripts/migrations/030-email-address-_id-to-email.py
+++ /dev/null
@@ -1,39 +0,0 @@
-#       Licensed to the Apache Software Foundation (ASF) under one
-#       or more contributor license agreements.  See the NOTICE file
-#       distributed with this work for additional information
-#       regarding copyright ownership.  The ASF licenses this file
-#       to you 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.
-
-from bson import ObjectId
-
-import logging
-
-from ming.odm import ThreadLocalORMSession
-
-from allura import model as M
-
-log = logging.getLogger(__name__)
-
-
-def main():
-    email_addresses = M.EmailAddress.query.find(dict(email=None)).all()
-    for email in email_addresses:
-        email.email = email._id
-        email._id = ObjectId()
-        ThreadLocalORMSession.flush_all()
-    ThreadLocalORMSession.close_all()
-
-
-if __name__ == '__main__':
-    main()