** Also affects: nova Importance: Undecided Status: New ** Changed in: nova Status: New => Invalid
** Also affects: nova/juno Importance: Undecided Status: New ** Changed in: nova/juno Status: New => Fix Committed ** Changed in: nova/juno Importance: Undecided => High ** Changed in: nova/juno Assignee: (unassigned) => Adam Gandelman (gandelman-a) -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1423427 Title: tempest baremetal client is creating node with wrong property keys Status in OpenStack Compute (nova): Invalid Status in OpenStack Compute (nova) juno series: Fix Committed Status in tempest: Fix Released Bug description: A new test has been added to tempest to stress the os-baremetal-nodes API extension. The test periodically fails in the gate with traceback in n-api log: [req-01dcd35b-55f4-4688-ba18-7fe0c6defd52 BaremetalNodesAdminTestJSON-1864409967 BaremetalNodesAdminTestJSON-1481542636] Caught error: 'cpus' 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack Traceback (most recent call last): 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/opt/stack/new/nova/nova/api/openstack/__init__.py", line 125, in __call__ 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack return req.get_response(self.application) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1320, in send 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack application, catch_exc_info=False) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack app_iter = application(self.environ, start_response) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack return resp(environ, start_response) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token.py", line 977, in __call__ 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack return self._call_app(env, start_response) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token.py", line 902, in _call_app 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack return self._app(env, _fake_start_response) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 136, in __call__ 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack response = self.app(environ, start_response) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__ 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack resp = self.call_func(req, *args, **self.kwargs) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack return self.func(req, *args, **kwargs) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 749, in __call__ 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack content_type, body, accept) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 814, in _process_stack 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/opt/stack/new/nova/nova/api/openstack/wsgi.py", line 904, in dispatch 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack return method(req=request, **action_args) 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack File "/opt/stack/new/nova/nova/api/openstack/compute/contrib/baremetal_nodes.py", line 123, in index 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack 'cpus': inode.properties['cpus'], 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack KeyError: 'cpus' 2015-02-19 01:37:41.910 2521 TRACE nova.api.openstack This hits only periodically and only when another tempest baremetal test is running in parallel to the new test. The other tests (tempest.api.baremetal.*) create some nodes in Ironic with node properties that are not the standard resource properties the nova->ironic proxy expects (from nova/api/openstack/compute/contrib/baremetal_nodes.py:201): for inode in ironic_nodes: node = {'id': inode.uuid, 'interfaces': [], 'host': 'IRONIC MANAGED', 'task_state': inode.provision_state, 'cpus': inode.properties['cpus'], 'memory_mb': inode.properties['memory_mb'], 'disk_gb': inode.properties['local_gb']} nodes.append(node) The other tempest test is creating nodes with a different set of properties: {u'cpu_arch': u'x86', u'cpu_num': 8, u'memory': 4096, u'storage': 1024} Ironic node properties are meant to be an arbitrary json dict, so the nova code needs to account for this in one way or another. To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1423427/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp