Bug 1652579 - juniper: cannot update two ports concurrently
Summary: juniper: cannot update two ports concurrently
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: python-networking-ansible
Version: 14.0 (Rocky)
Hardware: Unspecified
OS: Unspecified
Target Milestone: rc
: 14.0 (Rocky)
Assignee: Jakub Libosvar
QA Contact: Arkady Shtempler
Depends On:
TreeView+ depends on / blocked
Reported: 2018-11-22 12:20 UTC by Jakub Libosvar
Modified: 2019-02-01 10:40 UTC (History)
5 users (show)

Fixed In Version: python-networking-ansible-1.0.4-5.el7ost
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2019-01-11 11:55:00 UTC
Target Upstream Version:

Attachments (Terms of Use)

System ID Private Priority Status Summary Last Updated
OpenStack Storyboard 619588 0 None None None 2018-11-22 16:33:24 UTC
OpenStack gerrit 619618 0 None None None 2018-11-24 18:16:42 UTC
Red Hat Product Errata RHEA-2019:0045 0 None None None 2019-01-11 11:55:11 UTC
Storyboard 2004409 0 None None None 2018-11-22 13:34:11 UTC

Description Jakub Libosvar 2018-11-22 12:20:28 UTC
Description of problem:
When updating two ports on a switch concurrently, one fails because the other one holds lock. We get traceback.

2018-11-22 00:10:37.222 26 ERROR networking_ansible.ansible_networking [req-7435b1fa-dabb-42e3-82da-131d694dfd05 61467bdcf96a4e2b84bffd08b769f11d 7c5ad5bd6d9d4369a0a8a981b51695e1 - default default] Failed to plug in port 5b52a594-c654-4e60-b3f7-9a5a341d53eb on device: junos from network dd73584d-56e8-4d92-b7cd-1be30cb56e56 reason: ^M
 PLAY [Openstack networking-ansible playbook] ***********************************
 TASK [openstack-ml2 : check for required fact: port_name] **********************
 skipping: [junos]
 TASK [openstack-ml2 : include and run device provider specific tasks] **********
 included: /usr/share/ansible/roles/openstack-ml2/tasks/run.yaml for junos
 TASK [openstack-ml2 : include device role specific tasks] **********************
 included: /usr/share/ansible/roles/openstack-ml2/providers/junos/delete_port.yaml for junos
 TASK [openstack-ml2 : junos: run delete_port using netconf] ********************
 included: /usr/share/ansible/roles/openstack-ml2/providers/junos/netconf.yaml for junos
 TASK [openstack-ml2 : junos: enable netconf if not already enabled] ************
 ok: [junos]
 TASK [openstack-ml2 : junos: set netconf template] *****************************
 ok: [junos]
 TASK [openstack-ml2 : junos: send configuration to device] *********************
 An exception occurred during task execution. To see the full traceback, use -vvv. The error was:       exclusive^M
 fatal: [junos]: FAILED! => {"changed": false, "msg": "error editing configuration: \nconfiguration database locked by:\n  root terminal  (pid 3853) on since 2018-11-22 00:10:35 UTC\n      exclusive \n"}
 PLAY RECAP *********************************************************************^M
 junos                      : ok=5    changed=0    unreachable=0    failed=1   ^M

: AnsibleRunnerException: ^M

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Create or delete two or more baremetal nodes at once

Actual results:
One port creation/deletion fails

Expected results:
Both actions succeed 

Additional info:
The worse scenario is when deleting a node because then vlan configuration is left on the switch port. Next attempt to change the vlan configuration hits the bug 1641963 which leaves the node completely unusable.

Comment 7 errata-xmlrpc 2019-01-11 11:55:00 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


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