diff --git a/ironic/db/api.py b/ironic/db/api.py index c0fd52c5978..09f349a9217 100644 --- a/ironic/db/api.py +++ b/ironic/db/api.py @@ -143,6 +143,7 @@ class Connection(object): 'properties': { ... }, 'extra': { ... }, } + :raises: InvalidParameterValue if create a node with tags. :returns: A node. """ diff --git a/ironic/db/sqlalchemy/api.py b/ironic/db/sqlalchemy/api.py index 2c380fc359e..8f8d9aa6c1d 100644 --- a/ironic/db/sqlalchemy/api.py +++ b/ironic/db/sqlalchemy/api.py @@ -298,11 +298,8 @@ class Connection(api.Connection): # TODO(zhenguo): Support creating node with tags if 'tags' in values: - LOG.warning( - _LW('Ignore the specified tags %(tags)s when creating node: ' - '%(node)s.'), {'tags': values['tags'], - 'node': values['uuid']}) - del values['tags'] + msg = _("Cannot create node with tags.") + raise exception.InvalidParameterValue(err=msg) node = models.Node() node.update(values) diff --git a/ironic/tests/unit/db/test_nodes.py b/ironic/tests/unit/db/test_nodes.py index 3852f7bf6aa..ddac51db021 100644 --- a/ironic/tests/unit/db/test_nodes.py +++ b/ironic/tests/unit/db/test_nodes.py @@ -24,7 +24,6 @@ import six from ironic.common import exception from ironic.common import states -from ironic.db.sqlalchemy import api from ironic.tests.unit.db import base from ironic.tests.unit.db import utils @@ -34,10 +33,10 @@ class DbNodeTestCase(base.DbTestCase): def test_create_node(self): utils.create_test_node() - @mock.patch.object(api.LOG, 'warning', autospec=True) - def test_create_node_with_tags(self, mock_log): - utils.create_test_node(tags=['tag1', 'tag2']) - self.assertTrue(mock_log.called) + def test_create_node_with_tags(self): + self.assertRaises(exception.InvalidParameterValue, + utils.create_test_node, + tags=['tag1', 'tag2']) def test_create_node_already_exists(self): utils.create_test_node() diff --git a/ironic/tests/unit/db/utils.py b/ironic/tests/unit/db/utils.py index 5d57bf2c0ef..3f993a974c1 100644 --- a/ironic/tests/unit/db/utils.py +++ b/ironic/tests/unit/db/utils.py @@ -242,6 +242,10 @@ def create_test_node(**kw): # Let DB generate ID if it isn't specified explicitly if 'id' not in kw: del node['id'] + # Create node with tags will raise an exception. If tags are not + # specified explicitly just delete it. + if 'tags' not in kw: + del node['tags'] dbapi = db_api.get_instance() return dbapi.create_node(node)