Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lock prevent to load new candidate config #1041

Closed
1 of 2 tasks
blahu opened this issue Aug 30, 2019 · 3 comments
Closed
1 of 2 tasks

lock prevent to load new candidate config #1041

blahu opened this issue Aug 30, 2019 · 3 comments
Milestone

Comments

@blahu
Copy link
Contributor

blahu commented Aug 30, 2019

Description of Issue/Question

It's a question rather than an fault description.
We are writing a script that checks if running-config matches the file provided by configuration automation.
To do that we are uploading a new configuration (load_replace_candidate()) and executing compare_config().
Unfortunately sometimes there is already an open session on the box in pending state.
When load_replace_candidate() is executed it runs _lock() function that in case of a pending state will raise an exception SessionLockedException("Session is already in use").

We would like to argue that _lock() should be involved from within commit_config() - this is where it makes more sense to have such check?

Alternatively one could pass a lock/no_lock flag to both or either of the functions

Did you follow the steps from https://github.com/napalm-automation/napalm#faq

(Place an x between the square brackets where applicable)

  • Yes
  • No

Setup

napalm version

(Paste verbatim output from pip freeze | grep napalm between quotes below)

napalm==2.4.0

Network operating system version

(Paste verbatim output from show version - or equivalent - between quotes below)
I can't do verbatim

Arista EOS 4.21.7M

Steps to Reproduce the Issue

Error Traceback

(Paste the complete traceback of the exception between quotes below)


@ktbyers
Copy link
Contributor

ktbyers commented Aug 30, 2019

We have a lock_disable argument in Juniper. I think it would be fine to add this to EOS (if someone wants to implement the PR on it):

https://github.com/napalm-automation/napalm/blob/develop/napalm/junos/junos.py#L94

blahu added a commit to blahu/napalm that referenced this issue Aug 31, 2019
To fix(?) issue napalm-automation#1041 - napalm-automation#1041
On branch eos-lock-disable-flag
Changes to be committed:
    modified:   napalm/eos/eos.py
@blahu
Copy link
Contributor Author

blahu commented Aug 31, 2019

#1042

mirceaulinic pushed a commit that referenced this issue Sep 17, 2019
To fix(?) issue #1041 - #1041
On branch eos-lock-disable-flag
Changes to be committed:
    modified:   napalm/eos/eos.py
@mirceaulinic mirceaulinic added this to the APPROVED milestone Sep 17, 2019
mirceaulinic added a commit that referenced this issue Oct 10, 2019
* namespace fix for napalm cli (#950)

* Fix broken get_bgp_neighbors when 6PE configured on eos (#945)

* fix _RE_BGP_PREFIX and NEIGHBOR_FILTER for 6PE into eos

* add testcase for 6PE version

* Renamed testcase mocked file for regexp syntax change

* If parent_table None call exception (#939)

Hi, i have this situation when ipv6 is turned off:
$ napalm --user oxi --password gdfw23 --vendor nxos  10.143.36.8 call get_interfaces_ip
2019-03-07 15:08:10,226 - napalm - ERROR - method - Failed: 'NoneType' object has no attribute 'get'

================= Traceback =================

Traceback (most recent call last):
  File "/opt/py3.6/bin/napalm", line 10, in <module>
    sys.exit(main())
  File "/opt/py3.6/lib/python3.6/site-packages/napalm/base/clitools/cl_napalm.py", line 309, in main
    run_tests(args)
  File "/opt/py3.6/lib/python3.6/site-packages/napalm/base/clitools/cl_napalm.py", line 292, in run_tests
    call_getter(device, args.method, **method_kwargs)
  File "/opt/py3.6/lib/python3.6/site-packages/napalm/base/clitools/cl_napalm.py", line 31, in wrapper
    r = func(*args, **kwargs)
  File "/opt/py3.6/lib/python3.6/site-packages/napalm/base/clitools/cl_napalm.py", line 256, in call_getter
    r = func(**kwargs)
  File "/opt/py3.6/lib/python3.6/site-packages/napalm/nxos/nxos.py", line 1091, in get_interfaces_ip
    ipv6_command, "TABLE_intf", "ROW_intf"
  File "/opt/py3.6/lib/python3.6/site-packages/napalm/nxos/nxos.py", line 721, in _get_command_table
    return self._get_reply_table(json_output, table_name, row_name)
  File "/opt/py3.6/lib/python3.6/site-packages/napalm/nxos/nxos.py", line 717, in _get_reply_table
    return self._get_table_rows(result, table_name, row_name)
  File "/opt/py3.6/lib/python3.6/site-packages/napalm/nxos/nxos.py", line 706, in _get_table_rows
    _table = parent_table.get(table_name)
AttributeError: 'NoneType' object has no attribute 'get'

* Remove extensive argument from junos_iface_table (#929)

Fixes #928

* Add GitHub issue template, as we used to have before (#961)

When we used to maintain separare NAPALM drivers, we had an issue template
looking like this:
napalm-automation/napalm-junos@110fec4#diff-faa36bc26a21ed93c8de974753b71507.

I was looking today through the issues we currently have open, and
I found some of them a bit chaotic, and hard to understand the context
/ environment the user runs. Additionally, some, e.g., #960, is really
hard to follow, and I've included a note to invite the user to check the
HitGub markdown manual.

* NXOS_SSH get_route_to (updated) (#914)

* Add MTU support to get_interface (#940)

* Feature/ios get bgp config (#897)

* support n9k ipv6 ints for interfaces_ip getter (#969)

* support catalyst vss for mac_address getter (#968)

* support getting auto-negotiated speed on junos (#967)

* [IOS] Raise exception if BGP neighbor info requested and BGP not running (#970)

* Implement nxos_ssh get_environment (#973)

* Switch Docker image to Python 3 and reduce the number of layers and size (#980)

* Better handling of connection closing upon exceptions in __enter__ (#994)

* Fix incorrect get_interfaces_ip parsing on n9k with IPv6 addresses (#997)

* Modernize docs for FreeBSD installation (#993)

* Fix nxos and nxos_ssh hostname change handling (#999)

* Update link location in the docs (#1002)

* Hostname fixes for NXOS and IOS (#1007)

* Clean up the documentation contribution section (#1004)

* <exception>.message is no longer a thing in Python3 (#1016)

* Added option to show run all (#1029)

* Update ISSUE_TEMPLATE

Removing the space between the brackets, as it seems like it's confusing the users.

* junos add optional arg for DB config selection (#1035)

* fix junos issue #1028 (#1032)

* fix junos issue #1028

* junos add test case for get_network_instances

* Incorrectly taken serial number in NXOS. (#1025)

* The serial number is taken incorrectly, in particular,
the "Processor Board ID" is displayed,
and you need a Chassis -> serialnum:

* Additional safety net for the lack of a serial number in the output.

* black test

* mov function _get_table_rows, _get_reply_table and _get_command_table
from class  NXOSDriver to NXOSDriverBase, because used in NXOSSSHDriver.

* Added verification and conversion from string to json

* Implemented  lock_disable for EOS based on Junos. (#1042)

To fix(?) issue #1041 - #1041
On branch eos-lock-disable-flag
Changes to be committed:
    modified:   napalm/eos/eos.py

* #1025 Work around NXAPI double quoting (#1048)

* #1025 Work around NXAPI double quoting

The NXAPI on the Nexus 9000 platform seems to be double-quoting the name of inventory items.

Amend the check for the inventory item name to take this into account.

* the output of the N9000 has extra quotes:

show inventory | json
{"TABLE_inv": {"ROW_inv": [{"name": "\"Chassis\"",
"desc": "\"Nexus9000 C92160YC-X chassis\"",.......

* #1046 Use new dictionary key to fetch OS version (#1047)

Some Cisco Nexus equipment doesn’t have `sys_ver_str`, but has `rr_sys_ver` instead. Use this as a backup.

* Add get_environment support for NXOS driver (#1054)

* napalm.nxos.traceroute - VRF traces and handle AS in hops (#989)

* Adding traceroute from a specific VRF

* Combination of source and vrf command

* On some devices running BGP, an AS number will appear after the IP address of the hop

* E261 at least two spaces before inline comment [pep8]

* Fix extra line in show ip int brief on IOS (#986)

* keep nxos consistent with ios for rollback of failed merge (#860)

* IOS: add support for VRF for get_arp_table func (#937)

Simply takes into account the vrf function arg and exec
the expected ios command.

* ios get_bgp_neighbors vrf and safi aware (#768)

* get_bgp_neighbors vrf support

* afi string contains afi modifier

* mocked data, minor changes

* afi string with afi modifier

* supported afis

* mocked data

* comments

* typo

* show arp vrf ios test

* black reformated

* Check if temperature sensor on Cisco device is not supported (#1055)

* Check if temperature sensor on Cisco device is not supported

Some older Cisco devices like models from the 2960 platform have no temperature sensor built-in. In that case the get_environment function will throw on exception. That case will now be handeled.

* Correct if check

* Fixes get_environment memory collection on ios-xe devices (#1053)

* fixes issue #1052
* add tests for get_environment on ios-xe devices

* Pin PyEZ to 2.2.1 (#1061)

* get_route_to implementation for IOS (#750)

* 1st functional config

* bgp protocol attributes added

* linting, minor changes

* test_get_route_to mocked_data

* linting errors fix

* comments, minor changes in bgp procesing

* bgp processing separated

* bgp support 7200 old

* new bgp processing

* mocked data global routing table

* comments, _get_vrfs update

* mocked data c7200

* bug in regex

* connected, next-hop regex changed,..

* community + ext.community, comments

* linting

* RE_RDB1 regex fixed

* asr_pe test

* typo

* typo

* typo in mocked data - vrf Test -> TEST

* longer parameter added (PR735)

* rollback to pass test_method_signatures ...

* bgp_time_conversion duplicity fixed

* community regex fixed

* code optimization

* module constant, variables renaming

* black reformated

* sh arp vrf test

* When asPathType is Internal (IBGP), as_path is empty and the remote-as is the local_as (#1064)

* Pin Netmiko to version 2.4.2 (#1066)

* Release 2.5.0 (#1063)
ExaneServerTeam pushed a commit to ExaneServerTeam/napalm that referenced this issue Mar 6, 2020
)

To fix(?) issue napalm-automation#1041 - napalm-automation#1041
On branch eos-lock-disable-flag
Changes to be committed:
    modified:   napalm/eos/eos.py
neelimapp pushed a commit to neelimapp/napalm that referenced this issue Mar 20, 2020
)

To fix(?) issue napalm-automation#1041 - napalm-automation#1041
On branch eos-lock-disable-flag
Changes to be committed:
    modified:   napalm/eos/eos.py
bharath-ravindranath pushed a commit to bharath-ravindranath/napalm that referenced this issue Apr 19, 2020
)

To fix(?) issue napalm-automation#1041 - napalm-automation#1041
On branch eos-lock-disable-flag
Changes to be committed:
    modified:   napalm/eos/eos.py
@mirceaulinic
Copy link
Member

Implemented via #1042.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants