Add keypairs to instance_extra

This adds a keypairs deferred-load column to instance_extra where we
can store the keypairs for a given instance instead of referring to
them by name. This is needed for the cell/api split.

Related to blueprint cells-keypairs-api-db

Change-Id: I5a3bf86e2fba21feacf6b59f6a96a0927f044e66
This commit is contained in:
Dan Smith 2016-05-04 11:03:47 -07:00
parent 5f394ade4e
commit 51a60d3084
3 changed files with 32 additions and 0 deletions

View File

@ -0,0 +1,28 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from sqlalchemy import Column
from sqlalchemy import MetaData
from sqlalchemy import Table
from sqlalchemy import Text
def upgrade(migrate_engine):
meta = MetaData()
meta.bind = migrate_engine
for prefix in ('', 'shadow_'):
table = Table(prefix + 'instance_extra', meta, autoload=True)
new_column = Column('keypairs', Text, nullable=True)
if not hasattr(table.c, 'keypairs'):
table.create_column(new_column)

View File

@ -376,6 +376,7 @@ class InstanceExtra(BASE, NovaBase, models.SoftDeleteMixin):
flavor = orm.deferred(Column(Text))
vcpu_model = orm.deferred(Column(Text))
migration_context = orm.deferred(Column(Text))
keypairs = orm.deferred(Column(Text))
instance = orm.relationship(Instance,
backref=orm.backref('extra',
uselist=False),

View File

@ -895,6 +895,9 @@ class NovaMigrationsCheckers(test_migrations.ModelsMigrationsSync,
self.assertColumnExists(engine, 'virtual_interfaces', 'tag')
self.assertColumnExists(engine, 'block_device_mapping', 'tag')
def _check_332(self, engine, data):
self.assertColumnExists(engine, 'instance_extra', 'keypairs')
class TestNovaMigrationsSQLite(NovaMigrationsCheckers,
test_base.DbTestCase,