glance-manage wont take version into consideration

A glance-manage db upgrade/db downgrade will do either an 'upgrade to
latest' or 'downgrade to None' even though a version argument is
provided. The version being passed isn't being picked up and None is
passed across.

Fixes bug 1258068
Change-Id: Iaab4cf5eeb6d7c9c94fc741841a6b0797a058d40
This commit is contained in:
AmalaBasha 2013-12-09 18:38:14 +05:30
parent fd99958b33
commit 55b0e5f50b
1 changed files with 48 additions and 7 deletions

View File

@ -44,7 +44,7 @@ from glance.common import config
from glance.common import exception
from glance.db import migration as db_migration
from glance.openstack.common.db.sqlalchemy import migration
from glance.openstack.common import log
from glance.openstack.common import log, strutils
CONF = cfg.CONF
CONF.import_group("database", "glance.openstack.common.db.sqlalchemy.session")
@ -98,27 +98,57 @@ class DbCommands(object):
migration.db_sync(db_migration.MIGRATE_REPO_PATH, version)
class DbLegacyCommands(object):
"""Class for managing the db using legacy commands"""
def __init__(self, command_object):
self.command_object = command_object
def version(self):
self.command_object.version()
def upgrade(self, version=None):
self.command_object.upgrade(CONF.command.version)
def downgrade(self, version=None):
self.command_object.downgrade(CONF.command.version)
def version_control(self, version=None):
self.command_object.version_control(CONF.command.version)
def sync(self, version=None, current_version=None):
self.command_object.sync(CONF.command.version,
CONF.command.current_version)
def add_legacy_command_parsers(command_object, subparsers):
legacy_command_object = DbLegacyCommands(command_object)
parser = subparsers.add_parser('db_version')
parser.set_defaults(action_fn=command_object.version)
parser.set_defaults(action_fn=legacy_command_object.version)
parser.set_defaults(action='db_version')
parser = subparsers.add_parser('db_upgrade')
parser.set_defaults(action_fn=command_object.upgrade)
parser.set_defaults(action_fn=legacy_command_object.upgrade)
parser.add_argument('version', nargs='?')
parser.set_defaults(action='db_upgrade')
parser = subparsers.add_parser('db_downgrade')
parser.set_defaults(action_fn=command_object.downgrade)
parser.set_defaults(action_fn=legacy_command_object.downgrade)
parser.add_argument('version')
parser.set_defaults(action='db_downgrade')
parser = subparsers.add_parser('db_version_control')
parser.set_defaults(action_fn=command_object.version_control)
parser.set_defaults(action_fn=legacy_command_object.version_control)
parser.add_argument('version', nargs='?')
parser.set_defaults(action='db_version_control')
parser = subparsers.add_parser('db_sync')
parser.set_defaults(action_fn=command_object.sync)
parser.set_defaults(action_fn=legacy_command_object.sync)
parser.add_argument('version', nargs='?')
parser.add_argument('current_version', nargs='?')
parser.set_defaults(action='db_sync')
def add_command_parsers(subparsers):
@ -186,8 +216,19 @@ def main():
sys.exit("ERROR: %s" % e)
try:
if CONF.command.action.startswith('db'):
return CONF.command.action_fn()
else:
func_kwargs = {}
for k in CONF.command.action_kwargs:
v = getattr(CONF.command, 'action_kwarg_' + k)
if v is None:
continue
func_kwargs[k] = strutils.safe_decode(v)
CONF.command.action_fn()
func_args = [strutils.safe_decode(arg)
for arg in CONF.command.action_args]
return CONF.command.action_fn(*func_args, **func_kwargs)
except exception.GlanceException as e:
sys.exit("ERROR: %s" % e)