Bug 1399604 - ironic port-udate replace MAC adfress return error
Summary: ironic port-udate replace MAC adfress return error
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: openstack-ironic
Version: 8.0 (Liberty)
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
: ---
Assignee: Lucas Alvares Gomes
QA Contact: Raviv Bar-Tal
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-11-29 11:53 UTC by Eduard Barrera
Modified: 2020-02-14 18:13 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-11-30 10:05:41 UTC
Target Upstream Version:


Attachments (Terms of Use)

Description Eduard Barrera 2016-11-29 11:53:05 UTC
Description of problem:

after replacing a malfunctioning ethernet interface, need to update the port in ironic. The following command is used:

$ ironic port-update d6542373-79d1-4b7e-aaf5-1f529fefc2bb replace address=00:24:30:1b:81:c7

but it returns the following error:


2016-11-29 06:20:45.872 25989 DEBUG ironic.conductor.manager [req-5c597837-892a-42a1-93d5-5f7283ac1b37 - - - - -] RPC update_port called for port d6542373-79d1-4b7e-aaf5-1f529fefc2bb. update_port /usr/lib/python2.7/site-packages/ironic/conductor/manager.py:1713
2016-11-29 06:20:45.873 25989 DEBUG ironic.conductor.task_manager [req-5c597837-892a-42a1-93d5-5f7283ac1b37 - - - - -] Attempting to get exclusive lock on node 1 (for port update) __init__ /usr/lib/python2.7/site-packages/ironic/conductor/task_manager.py:224
2016-11-29 06:20:45.884 25989 DEBUG ironic.conductor.task_manager [req-5c597837-892a-42a1-93d5-5f7283ac1b37 - - - - -] Node 8e7ffc15-5c0c-40bb-b0c8-80619a9f7fe3 successfully reserved for port update (took 0.01 seconds) reserve_node /usr/lib/python2.7/site-packages/ironic/conductor/task_manager.py:266
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron [req-5c597837-892a-42a1-93d5-5f7283ac1b37 - - - - -] Failed to update MAC address on Neutron port 0e0c035f-667a-4360-95e0-474549cc0127.
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron Traceback (most recent call last):
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron   File "/usr/lib/python2.7/site-packages/ironic/dhcp/neutron.py", line 135, in update_port_address
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron     _build_client(token).update_port(port_id, port_req_body)
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron   File "/usr/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 97, in with_params
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron     ret = self.function(instance, *args, **kwargs)
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron   File "/usr/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 659, in update_port
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron     return self.put(self.port_path % (port), body=body)
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron   File "/usr/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 367, in put
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron     headers=headers, params=params)
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron   File "/usr/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 335, in retry_request
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron     headers=headers, params=params)
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron   File "/usr/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 298, in do_request
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron     self._handle_fault_response(status_code, replybody, resp)
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron   File "/usr/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 273, in _handle_fault_response
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron     exception_handler_v20(status_code, error_body)
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron   File "/usr/lib/python2.7/site-packages/neutronclient/v2_0/client.py", line 84, in exception_handler_v20
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron     request_ids=request_ids)
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron Conflict: Unable to complete operation on port 0e0c035f-667a-4360-95e0-474549cc0127, port is already bound, port type: ovs, old_mac 00:24:30:1b:81:c8, new_mac 00:24:30:1b:81:c7.
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron Neutron server returns request_ids: ['req-ada11c66-e845-4625-8e62-c6252ead7c25']
2016-11-29 06:20:46.033 25989 ERROR ironic.dhcp.neutron 
2016-11-29 06:20:46.039 25989 DEBUG ironic.conductor.task_manager [req-5c597837-892a-42a1-93d5-5f7283ac1b37 - - - - -] Successfully released exclusive lock for port update on node 8e7ffc15-5c0c-40bb-b0c8-80619a9f7fe3 (lock was held 0.15 sec) release_resources /usr/lib/python2.7/site-packages/ironic/conductor/task_manager.py:338
Update MAC address on port: 0e0c035f-667a-4360-95e0-474549cc0127 failed. (HTTP 500)


on the other hand if we type the current mac address it success:

 ironic port-update d6542373-79d1-4b7e-aaf5-1f529fefc2bb replace address=00:24:30:1b:81:c8


2016-11-29 06:20:42.007 25989 DEBUG ironic.conductor.manager [req-39db630c-b818-4fd8-a145-725ab315b821 - - - - -] RPC update_port called for port d6542373-79d1-4b7e-aaf5-1f529fefc2bb. update_port /usr/lib/python2.7/site-packages/ironic/conductor/manager.py:1713
2016-11-29 06:20:42.008 25989 DEBUG ironic.conductor.task_manager [req-39db630c-b818-4fd8-a145-725ab315b821 - - - - -] Attempting to get exclusive lock on node 1 (for port update) __init__ /usr/lib/python2.7/site-packages/ironic/conductor/task_manager.py:224
2016-11-29 06:20:42.021 25989 DEBUG ironic.conductor.task_manager [req-39db630c-b818-4fd8-a145-725ab315b821 - - - - -] Node 8e7ffc15-5c0c-40bb-b0c8-80619a9f7fe3 successfully reserved for port update (took 0.01 seconds) reserve_node /usr/lib/python2.7/site-packages/ironic/conductor/task_manager.py:266
2016-11-29 06:20:42.044 25989 DEBUG ironic.conductor.task_manager [req-39db630c-b818-4fd8-a145-725ab315b821 - - - - -] Successfully released exclusive lock for port update on node 8e7ffc15-5c0c-40bb-b0c8-80619a9f7fe3 (lock was held 0.02 sec) release_resources /usr/lib/python2.7/site-packages/ironic/conductor/task_manager.py:338
+------------+-----------------------------------------------------------+
| Property   | Value                                                     |
+------------+-----------------------------------------------------------+
| address    | 00:24:30:1b:81:c8                                         |
| created_at | 2016-09-21T11:40:27+00:00                                 |
| extra      | {u'vif_port_id': u'0e0c035f-667a-4360-95e0-474549cc0127'} |
| node_uuid  | 8e7ffc15-5c0c-40bb-b0c8-80619a9f7fe3                      |
| updated_at | 2016-11-10T13:09:33+00:00                                 |
| uuid       | d6542373-79d1-4b7e-aaf5-1f529fefc2bb                      |
+------------+-----------------------------------------------------------+


The following error appears on neutron server.log:

2016-11-29 06:28:47.040 3927 INFO neutron.api.v2.resource [req-4770384b-544b-49f8-a630-8a0a60bf7559 6b071ed5d00747d08d9a7ebf843d1e35 1cc0ddff5ee64174b9424572ed533eaf - - -] update failed (client error): Unable to complete operation on port 0e0c035f-667a-4360-95e0-474549cc0127, port is already bound, port type: ovs, old_mac 00:24:30:1b:81:c8, new_mac 00:24:30:1b:81:c7.



Version-Release number of selected component (if applicable):
reported for OSP 8 and reproducible on OSP9

How reproducible:

always


Steps to Reproduce:

# ironic port-list
+--------------------------------------+-------------------+
| UUID                                 | Address           |
+--------------------------------------+-------------------+
| d6542373-79d1-4b7e-aaf5-1f529fefc2bb | 00:24:30:1b:81:c8 |
| ac1fc5e8-a376-46b7-ab41-c5f09142c308 | 00:24:30:1b:81:cc |
| 2b2f925e-6975-419b-89bd-387011ab09ca | 00:24:30:1b:81:d0 |
| 96bd15b9-51c9-4937-a47a-1874773a0fe5 | 00:24:30:1b:81:d4 |
+--------------------------------------+-------------------+

$ ironic port-update d6542373-79d1-4b7e-aaf5-1f529fefc2bb replace address=00:24:30:1b:81:c7
Update MAC address on port: 0e0c035f-667a-4360-95e0-474549cc0127 failed. (HTTP 500)



Actual results:
The error reported

Expected results:
MAC address changed

Additional info:

Comment 2 Lucas Alvares Gomes 2016-11-30 10:05:41 UTC
Hi Eduard,

Thanks for the BZ. I understand this error can be annoying and the change have been backported to Mitaka (OSP-9) already [0]. Unfortunately we won't be backporting it to Liberty (OSP-8). The code for ports have changed quite a lot in the Mitaka release and on with the introduction of port groups, pxe_enabled attribute, etc... Making the backport quite trick, we probably would need to rewrite a good part of the patch.

I'm closing this as WONTFIX for OSP-8. Feel free to re-open the bug if you think it's a must to have it in this version of OSP. Then we can think about a solution for the problem.

[0] https://review.openstack.org/#/c/354735/


Note You need to log in before you can comment on or make changes to this bug.