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)
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)
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."))
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)
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))
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()
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)
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'
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()
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)
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)
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)
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)
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()
def db_version_control(version=None): repository = _find_migrate_repo() versioning_api.version_control(get_engine(), repository, version) return version