示例#1
0
文件: migration.py 项目: scpham/nova
def db_version():
    repository = _find_migrate_repo()
    try:
        return versioning_api.db_version(get_engine(), repository)
    except versioning_exceptions.DatabaseNotControlledError:
        # If we aren't version controlled we may already have the database
        # in the state from before we started version control, check for that
        # and set up version_control appropriately
        meta = sqlalchemy.MetaData()
        engine = get_engine()
        meta.reflect(bind=engine)
        try:
            for table in ('auth_tokens', 'zones', 'export_devices',
                          'fixed_ips', 'floating_ips', 'instances',
                          'key_pairs', 'networks', 'projects', 'quotas',
                          'security_group_instance_association',
                          'security_group_rules', 'security_groups',
                          'services', 'migrations', 'users',
                          'user_project_association',
                          'user_project_role_association',
                          'user_role_association', 'virtual_storage_arrays',
                          'volumes', 'volume_metadata', 'volume_types',
                          'volume_type_extra_specs'):
                assert table in meta.tables
            return db_version_control(1)
        except AssertionError:
            return db_version_control(0)
示例#2
0
文件: migration.py 项目: Cygnet/nova
def db_version():
    repository = _find_migrate_repo()
    try:
        return versioning_api.db_version(get_engine(), repository)
    except versioning_exceptions.DatabaseNotControlledError:
        # If we aren't version controlled we may already have the database
        # in the state from before we started version control, check for that
        # and set up version_control appropriately
        meta = sqlalchemy.MetaData()
        engine = get_engine()
        meta.reflect(bind=engine)
        try:
            for table in ('auth_tokens', 'zones', 'export_devices',
                          'fixed_ips', 'floating_ips', 'instances',
                          'key_pairs', 'networks', 'projects', 'quotas',
                          'security_group_instance_association',
                          'security_group_rules', 'security_groups',
                          'services', 'migrations',
                          'users', 'user_project_association',
                          'user_project_role_association',
                          'user_role_association',
                          'virtual_storage_arrays',
                          'volumes', 'volume_metadata',
                          'volume_types', 'volume_type_extra_specs'):
                assert table in meta.tables
            return db_version_control(1)
        except AssertionError:
            return db_version_control(0)
示例#3
0
def db_sync(version=None):
    if version is not None:
        try:
            version = int(version)
        except ValueError:
            raise exception.NovaException(_("version should be an integer"))

    current_version = db_version()
    repository = _find_migrate_repo()
    if version is None or version > current_version:
        return versioning_api.upgrade(get_engine(), repository, version)
    else:
        return versioning_api.downgrade(get_engine(), repository, version)
示例#4
0
文件: migration.py 项目: nitishb/nova
def db_sync(version=None):
    if version is not None:
        try:
            version = int(version)
        except ValueError:
            raise exception.NovaException(_("version should be an integer"))

    current_version = db_version()
    repository = _find_migrate_repo()
    if version is None or version > current_version:
        return versioning_api.upgrade(get_engine(), repository, version)
    else:
        return versioning_api.downgrade(get_engine(), repository, version)
示例#5
0
def db_version():
    repository = _find_migrate_repo()
    try:
        return versioning_api.db_version(get_engine(), repository)
    except versioning_exceptions.DatabaseNotControlledError:
        meta = sqlalchemy.MetaData()
        engine = get_engine()
        meta.reflect(bind=engine)
        tables = meta.tables
        if len(tables) == 0:
            db_version_control(migration.INIT_VERSION)
            return versioning_api.db_version(get_engine(), repository)
        else:
            # Some pre-Essex DB's may not be version controlled.
            # Require them to upgrade using Essex first.
            raise exception.Error(_("Upgrade DB using Essex release first."))
示例#6
0
 def __init__(self):
     self.pending={}
     LOG.info("Connecting to database @ %s"%(FLAGS.sql_connection))
     self.conn=get_engine()
     dnsmanager_class=utils.import_class(FLAGS.dns_manager);
     self.dnsmanager=dnsmanager_class()
     self.eventlet = eventlet.spawn(self._pollip)
示例#7
0
文件: __init__.py 项目: westmaas/nova
def reset_db():
    if FLAGS.sql_connection == "sqlite://":
        engine = get_engine()
        engine.dispose()
        conn = engine.connect()
        conn.connection.executescript(_DB)
    else:
        shutil.copyfile(os.path.join(FLAGS.state_path, FLAGS.sqlite_clean_db),
                        os.path.join(FLAGS.state_path, FLAGS.sqlite_db))
示例#8
0
文件: __init__.py 项目: scpham/nova
def reset_db():
    if FLAGS.sql_connection == "sqlite://":
        engine = get_engine()
        engine.dispose()
        conn = engine.connect()
        conn.connection.executescript(_DB)
    else:
        shutil.copyfile(os.path.join(FLAGS.state_path, FLAGS.sqlite_clean_db),
                        os.path.join(FLAGS.state_path, FLAGS.sqlite_db))
示例#9
0
def connect_db():
    keystone.manage.parse_args(None)

    from nova import flags
    from nova import utils
    FLAGS = flags.FLAGS
    utils.default_flagfile()
    flags.FLAGS(sys.argv)
    global nova_engine
    nova_engine = get_engine()
示例#10
0
def connect_db():
    keystone.manage.parse_args(None)

    from nova import flags
    from nova import utils
    FLAGS = flags.FLAGS
    utils.default_flagfile()
    flags.FLAGS(sys.argv)
    global nova_engine
    nova_engine = get_engine()
示例#11
0
文件: __init__.py 项目: haluomao/nova
def setup():
    import mox  # Fail fast if you don't have mox. Workaround for bug 810424

    from nova import rpc  # Register rpc_backend before fake_flags sets it

    FLAGS.register_opts(rpc.rpc_opts)

    from nova import context
    from nova import db
    from nova.db import migration
    from nova.network import manager as network_manager
    from nova.tests import fake_flags

    fake_flags.set_defaults(FLAGS)
    rpc.register_opts(FLAGS)

    if FLAGS.sql_connection == "sqlite://":
        if migration.db_version() > migration.INIT_VERSION:
            return
    else:
        testdb = os.path.join(FLAGS.state_path, FLAGS.sqlite_db)
        if os.path.exists(testdb):
            return
    migration.db_sync()
    ctxt = context.get_admin_context()
    network = network_manager.VlanManager()
    bridge_interface = FLAGS.flat_interface or FLAGS.vlan_interface
    network.create_networks(
        ctxt,
        label="test",
        cidr=FLAGS.fixed_range,
        multi_host=FLAGS.multi_host,
        num_networks=FLAGS.num_networks,
        network_size=FLAGS.network_size,
        cidr_v6=FLAGS.fixed_range_v6,
        gateway=FLAGS.gateway,
        gateway_v6=FLAGS.gateway_v6,
        bridge=FLAGS.flat_network_bridge,
        bridge_interface=bridge_interface,
        vpn_start=FLAGS.vpn_start,
        vlan_start=FLAGS.vlan_start,
        dns1=FLAGS.flat_network_dns,
    )
    for net in db.network_get_all(ctxt):
        network.set_network_host(ctxt, net)

    if FLAGS.sql_connection == "sqlite://":
        global _DB
        engine = get_engine()
        conn = engine.connect()
        _DB = "".join(line for line in conn.connection.iterdump())
    else:
        cleandb = os.path.join(FLAGS.state_path, FLAGS.sqlite_clean_db)
        shutil.copyfile(testdb, cleandb)
示例#12
0
 def setUp(self):
     super(DBApiTestCase, self).setUp()
     engine = get_engine()
     self.connection = engine.connect()
     self.tenant_id = 'atenant'
     self.context = dough_context.get_context(tenant_id=self.tenant_id)
     self.resource_uuid = 'a-fake-uuid-0'
     self.resource_name = 'a_fake_name_0'
     self.region_name = 'default'
     self.item_name = 'instance'
     self.item_type_name = 'm1.tiny'
     self.payment_type_name = 'hourly'
示例#13
0
 def setUp(self):
     super(DBApiTestCase, self).setUp()
     engine = get_engine()
     self.connection = engine.connect()
     self.tenant_id = 'atenant'
     self.context = dough_context.get_context(tenant_id=self.tenant_id)
     self.resource_uuid = 'a-fake-uuid-0'
     self.resource_name = 'a_fake_name_0'
     self.region_name = 'default'
     self.item_name = 'instance'
     self.item_type_name = 'm1.tiny'
     self.payment_type_name = 'hourly'
示例#14
0
 def setUp(self):
     super(SessionErrorWrapperTestCase, self).setUp()
     meta = MetaData()
     meta.bind = session.get_engine()
     test_table = Table(_TABLE_NAME, meta,
                        Column('id', Integer, primary_key=True,
                               nullable=False),
                        Column('deleted', Integer, default=0),
                        Column('deleted_at', DateTime),
                        Column('updated_at', DateTime),
                        Column('created_at', DateTime),
                        Column('foo', Integer),
                        UniqueConstraint('foo', name='uniq_foo'))
     test_table.create()
示例#15
0
def setup():
    import mox  # Fail fast if you don't have mox. Workaround for bug 810424

    from nova import rpc  # Register rpc_backend before fake_flags sets it
    FLAGS.register_opts(rpc.rpc_opts)

    from nova import context
    from nova import db
    from nova.db import migration
    from nova.network import manager as network_manager
    from nova.tests import fake_flags
    rpc.register_opts(FLAGS)

    if FLAGS.sql_connection == "sqlite://":
        if migration.db_version() > migration.INIT_VERSION:
            return
    else:
        testdb = os.path.join(FLAGS.state_path, FLAGS.sqlite_db)
        if os.path.exists(testdb):
            return
    migration.db_sync()
    ctxt = context.get_admin_context()
    network = network_manager.VlanManager()
    bridge_interface = FLAGS.flat_interface or FLAGS.vlan_interface
    network.create_networks(ctxt,
                            label='test',
                            cidr=FLAGS.fixed_range,
                            multi_host=FLAGS.multi_host,
                            num_networks=FLAGS.num_networks,
                            network_size=FLAGS.network_size,
                            cidr_v6=FLAGS.fixed_range_v6,
                            gateway=FLAGS.gateway,
                            gateway_v6=FLAGS.gateway_v6,
                            bridge=FLAGS.flat_network_bridge,
                            bridge_interface=bridge_interface,
                            vpn_start=FLAGS.vpn_start,
                            vlan_start=FLAGS.vlan_start,
                            dns1=FLAGS.flat_network_dns)
    for net in db.network_get_all(ctxt):
        network.set_network_host(ctxt, net)

    if FLAGS.sql_connection == "sqlite://":
        global _DB
        engine = get_engine()
        conn = engine.connect()
        _DB = "".join(line for line in conn.connection.iterdump())
    else:
        cleandb = os.path.join(FLAGS.state_path, FLAGS.sqlite_clean_db)
        shutil.copyfile(testdb, cleandb)
示例#16
0
文件: migration.py 项目: altai/nova
def db_sync(version=None):
    if version is not None:
        try:
            version = int(version)
        except ValueError:
            raise exception.Error(_("version should be an integer"))

    current_version = db_version()
    repo_path = _find_migrate_repo()
    if version is None or version > current_version:
        versioning_api.upgrade(FLAGS.sql_connection, repo_path, version)
        return fix_dns_domains.run(get_engine())
    else:
        return versioning_api.downgrade(FLAGS.sql_connection, repo_path,
                                        version)
示例#17
0
文件: test.py 项目: EE-NovRain/nova
def setup():

    fake_flags.set_defaults(CONF)

    if CONF.sql_connection == "sqlite://":
        if migration.db_version() > migration.INIT_VERSION:
            return
    else:
        testdb = os.path.join(CONF.state_path, CONF.sqlite_db)
        if os.path.exists(testdb):
            return
    migration.db_sync()
    ctxt = context.get_admin_context()
    network = network_manager.VlanManager()
    bridge_interface = CONF.flat_interface or CONF.vlan_interface
    network.create_networks(
        ctxt,
        label="test",
        cidr=CONF.fixed_range,
        multi_host=CONF.multi_host,
        num_networks=CONF.num_networks,
        network_size=CONF.network_size,
        cidr_v6=CONF.fixed_range_v6,
        gateway=CONF.gateway,
        gateway_v6=CONF.gateway_v6,
        bridge=CONF.flat_network_bridge,
        bridge_interface=bridge_interface,
        vpn_start=CONF.vpn_start,
        vlan_start=CONF.vlan_start,
        dns1=CONF.flat_network_dns,
    )
    for net in db.network_get_all(ctxt):
        network.set_network_host(ctxt, net)

    if CONF.sql_connection == "sqlite://":
        global _DB
        engine = get_engine()
        conn = engine.connect()
        _DB = "".join(line for line in conn.connection.iterdump())
    else:
        cleandb = os.path.join(CONF.state_path, CONF.sqlite_clean_db)
        shutil.copyfile(testdb, cleandb)
示例#18
0
文件: test.py 项目: whitekid/nova
def setup():

    fake_flags.set_defaults(CONF)

    if CONF.sql_connection == "sqlite://":
        if migration.db_version() > migration.INIT_VERSION:
            return
    else:
        testdb = os.path.join(CONF.state_path, CONF.sqlite_db)
        if os.path.exists(testdb):
            return
    migration.db_sync()
    ctxt = context.get_admin_context()
    network = network_manager.VlanManager()
    bridge_interface = CONF.flat_interface or CONF.vlan_interface
    network.create_networks(ctxt,
                            label='test',
                            cidr=CONF.fixed_range,
                            multi_host=CONF.multi_host,
                            num_networks=CONF.num_networks,
                            network_size=CONF.network_size,
                            cidr_v6=CONF.fixed_range_v6,
                            gateway=CONF.gateway,
                            gateway_v6=CONF.gateway_v6,
                            bridge=CONF.flat_network_bridge,
                            bridge_interface=bridge_interface,
                            vpn_start=CONF.vpn_start,
                            vlan_start=CONF.vlan_start,
                            dns1=CONF.flat_network_dns)
    for net in db.network_get_all(ctxt):
        network.set_network_host(ctxt, net)

    if CONF.sql_connection == "sqlite://":
        global _DB
        engine = get_engine()
        conn = engine.connect()
        _DB = "".join(line for line in conn.connection.iterdump())
    else:
        cleandb = os.path.join(CONF.state_path, CONF.sqlite_clean_db)
        shutil.copyfile(testdb, cleandb)
示例#19
0
 def tearDown(self):
     super(SessionErrorWrapperTestCase, self).tearDown()
     meta = MetaData()
     meta.bind = session.get_engine()
     test_table = Table(_TABLE_NAME, meta, autoload=True)
     test_table.drop()
示例#20
0
def db_version_control(version=None):
    repository = _find_migrate_repo()
    versioning_api.version_control(get_engine(), repository, version)
    return version
示例#21
0
def db_version_control(version=None):
    repository = _find_migrate_repo()
    versioning_api.version_control(get_engine(), repository, version)
    return version