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:
@@ -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',
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user