From c7e938cd57ac53ba2aa578c76e1f5d67c071a9b4 Mon Sep 17 00:00:00 2001 From: Zenghui Shi Date: Wed, 13 Dec 2017 17:21:47 +0800 Subject: [PATCH] BIOS Settings: Add bios_interface db field Add bios_interface DB field, database migration, and object entry for node bios functionality. Co-Authored-By: Yolanda Robla Mota Depends-On: I48c96d5da0cb747b3ca3fceea9b4ffa85a9ebe22 Change-Id: I3a4f92fa880deef6e7882819afbadde2aff06161 Partial-Bug: #1712032 --- ...3bc3d6bba_add_bios_config_and_interface.py | 31 +++++++++++++++++++ ironic/db/sqlalchemy/models.py | 1 + .../unit/db/sqlalchemy/test_migrations.py | 7 +++++ 3 files changed, 39 insertions(+) create mode 100644 ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py diff --git a/ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py b/ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py new file mode 100644 index 0000000000..dc1fb731c6 --- /dev/null +++ b/ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py @@ -0,0 +1,31 @@ +# 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. + +"""add bios interface + +Revision ID: 2d13bc3d6bba +Revises: 82c315d60161 +Create Date: 2017-09-27 14:42:42.107321 + +""" + +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = '2d13bc3d6bba' +down_revision = '82c315d60161' + + +def upgrade(): + op.add_column('nodes', sa.Column('bios_interface', + sa.String(length=255), nullable=True)) diff --git a/ironic/db/sqlalchemy/models.py b/ironic/db/sqlalchemy/models.py index fce6ad4eff..a42181c228 100644 --- a/ironic/db/sqlalchemy/models.py +++ b/ironic/db/sqlalchemy/models.py @@ -170,6 +170,7 @@ class Node(Base): inspection_started_at = Column(DateTime, nullable=True) extra = Column(db_types.JsonEncodedDict) + bios_interface = Column(String(255), nullable=True) boot_interface = Column(String(255), nullable=True) console_interface = Column(String(255), nullable=True) deploy_interface = Column(String(255), nullable=True) diff --git a/ironic/tests/unit/db/sqlalchemy/test_migrations.py b/ironic/tests/unit/db/sqlalchemy/test_migrations.py index 6cd4ffb1ea..e7c6be4a00 100644 --- a/ironic/tests/unit/db/sqlalchemy/test_migrations.py +++ b/ironic/tests/unit/db/sqlalchemy/test_migrations.py @@ -705,6 +705,13 @@ class MigrationCheckersMixin(object): bios_settings.c.name == setting['name'])).execute().first() self.assertEqual('on', setting['value']) + def _check_2d13bc3d6bba(self, engine, data): + nodes = db_utils.get_table(engine, 'nodes') + col_names = [column.name for column in nodes.c] + self.assertIn('bios_interface', col_names) + self.assertIsInstance(nodes.c.bios_interface.type, + sqlalchemy.types.String) + def test_upgrade_and_version(self): with patch_with_engine(self.engine): self.migration_api.upgrade('head')