RIP out mongo

Since sqlalchemy is providing our database abstraction and we have
moved away from Mongo as the underlying database, it is now time to
simplify things and rip out mongo. This provides the bulk of the
changes, and can stand on its own. There are some followup tasks
that can be done, such as removing now unneeded abstraction layers,
e.g. db.sql.fake.py
This commit is contained in:
Sebastian Spaeth
2012-11-29 17:23:28 +01:00
parent 351fd95fff
commit bc142abc55
25 changed files with 18 additions and 1536 deletions

View File

@@ -25,11 +25,6 @@ SUBCOMMAND_MAP = {
'setup': 'mediagoblin.gmg_commands.shell:shell_parser_setup',
'func': 'mediagoblin.gmg_commands.shell:shell',
'help': 'Run a shell with some tools pre-setup'},
'migrate': {
'setup': 'mediagoblin.gmg_commands.migrate:migrate_parser_setup',
'func': 'mediagoblin.gmg_commands.migrate:migrate',
'help': ('Migrate your Mongo database. '
'[DEPRECATED!] use convert_mongo_to_sql and dbupdate.')},
'adduser': {
'setup': 'mediagoblin.gmg_commands.users:adduser_parser_setup',
'func': 'mediagoblin.gmg_commands.users:adduser',
@@ -46,10 +41,6 @@ SUBCOMMAND_MAP = {
'setup': 'mediagoblin.gmg_commands.dbupdate:dbupdate_parse_setup',
'func': 'mediagoblin.gmg_commands.dbupdate:dbupdate',
'help': 'Set up or update the SQL database'},
'convert_mongo_to_sql': {
'setup': 'mediagoblin.gmg_commands.mongosql:mongosql_parser_setup',
'func': 'mediagoblin.gmg_commands.mongosql:mongosql',
'help': 'Convert Mongo DB data to SQL DB data'},
'theme': {
'setup': 'mediagoblin.gmg_commands.theme:theme_parser_setup',
'func': 'mediagoblin.gmg_commands.theme:theme',

View File

@@ -114,7 +114,7 @@ def run_dbupdate(app_config, global_config):
global_config.get('plugins', {}).keys())
# Set up the database
connection, db = setup_connection_and_db_from_config(app_config)
db = setup_connection_and_db_from_config(app_config)
Session = sessionmaker(bind=db.engine)

View File

@@ -105,7 +105,7 @@ def env_import(args):
setup_storage()
global_config, app_config = setup_global_and_app_config(args.conf_file)
connection, db = setup_connection_and_db_from_config(
db = setup_connection_and_db_from_config(
app_config)
tf = tarfile.open(
@@ -243,8 +243,7 @@ def env_export(args):
setup_storage()
connection, db = setup_connection_and_db_from_config(
app_config)
db = setup_connection_and_db_from_config(app_config)
_export_database(db, args)

View File

@@ -1,75 +0,0 @@
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import sys
from mediagoblin.init import setup_global_and_app_config
def migrate_parser_setup(subparser):
pass
def _print_started_migration(migration_number, migration_func):
sys.stdout.write(
"Running migration %s, '%s'... " % (
migration_number, migration_func.func_name))
sys.stdout.flush()
def _print_finished_migration(migration_number, migration_func):
sys.stdout.write("done.\n")
sys.stdout.flush()
def migrate(args):
run_migrate(args.conf_file)
def run_migrate(conf_file):
# This MUST be imported so as to set up the appropriate migrations!
from mediagoblin.db.mongo import migrations
from mediagoblin.db.mongo import util as db_util
from mediagoblin.db.mongo.open import setup_connection_and_db_from_config
global_config, app_config = setup_global_and_app_config(conf_file)
connection, db = setup_connection_and_db_from_config(
app_config, use_pymongo=True)
migration_manager = db_util.MigrationManager(db)
# Clear old indexes
print "== Clearing old indexes... =="
removed_indexes = db_util.remove_deprecated_indexes(db)
for collection, index_name in removed_indexes:
print "Removed index '%s' in collection '%s'" % (
index_name, collection)
# Migrate
print "\n== Applying migrations... =="
migration_manager.migrate_new(
pre_callback=_print_started_migration,
post_callback=_print_finished_migration)
# Add new indexes
print "\n== Adding new indexes... =="
new_indexes = db_util.add_new_indexes(db)
for collection, index_name in new_indexes:
print "Added index '%s' to collection '%s'" % (
index_name, collection)

View File

@@ -1,28 +0,0 @@
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2012 MediaGoblin contributors. See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
def mongosql_parser_setup(subparser):
pass
def mongosql(args):
# First, make sure our mongo migrations are up to date...
from mediagoblin.gmg_commands.migrate import run_migrate
run_migrate(args.conf_file)
from mediagoblin.db.sql.convert import run_conversion
run_conversion(args.conf_file)