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

Installation fails due to conflicting junos-eznc version #457

Closed
NeolithEra opened this issue Dec 11, 2019 · 5 comments · Fixed by #468
Closed

Installation fails due to conflicting junos-eznc version #457

NeolithEra opened this issue Dec 11, 2019 · 5 comments · Fixed by #468

Comments

@NeolithEra
Copy link

Hi, users are unable to run nornir due to dependency conflict with junos-eznc package. As shown in the following full dependency graph of nornir, napalm requires junos-eznc ==2.2.1,while nornir requires junos-eznc >=2.2,<3.0.

According to pip’s “first found wins” installation strategy, junos-eznc 2.3.1 is the actually installed version. However, junos-eznc 2.3.1 does not satisfy ==2.2.1.

Dependency tree-----------

nornir - 2.3.0
| +- colorama(install version:0.4.3 version range:>=0.4.1,<0.5.0)
| +- jinja2(install version:2.10.3 version range:>=2,<3)
| | +- markupsafe(install version:1.1.1 version range:>=0.23)
| +- junos-eznc(install version:2.3.1 version range:>=2.2,<3.0)
| +- mypy_extensions(install version:0.4.3 version range:>=0.4.1,<0.5.0)
| +- napalm(install version:2.5.0 version range:>=2,<3)
| | +- cffi(install version:1.13.2 version range:>=1.11.3)
| | +- ciscoconfparse(install version:1.4.11 version range:*)
| | +- future(install version:0.18.2 version range:*)
| | +- jinja2(install version:2.10.3 version range:*)
| | | +- markupsafe(install version:1.1.1 version range:>=0.23)
| | +- junos-eznc(install version:2.2.1 version range:==2.2.1)
| | | +- jinja2(install version:2.10.3 version range:>=2.7.1)
| | | | +- markupsafe(install version:1.1.1 version range:>=0.23)
| | | +- lxml(install version:4.4.2 version range:>=3.2.4)
| | | +- ncclient(install version:0.6.6 version range:>=0.5.4)
| | | | +- lxml(install version:4.4.2 version range:>=3.3.0)
| | | | +- paramiko(install version:2.7.1 version range:>=1.15.0)
| | | | +- selectors2(install version:2.0.1 version range:>=2.0.1)
| | | | +- setuptools(install version:42.0.2 version range:>0.6)
| | | | +- six(install version:1.13.0 version range:*)
| | | +- netaddr(install version:0.7.19 version range:*)
| | | +- paramiko(install version:2.7.1 version range:>=1.15.2)
| | | +- pyserial(install version:3.4 version range:*)
| | | +- pyyaml(install version:5.2 version range:>=5.1)
| | | +- scp(install version:0.13.2 version range:>=0.7.0)
| | | | +- paramiko(install version:2.7.1 version range:*)
| | | +- six(install version:1.13.0 version range:*)
| | +- netaddr(install version:0.7.19 version range:*)
| | +- netmiko(install version:2.4.2 version range:==2.4.2)
| | | +- enum34(install version:1.1.6 version range:*)
| | | +- ipaddress(install version:1.0.23 version range:*)
| | | +- paramiko(install version:2.7.1 version range:>=2.4.3)
| | | +- pyserial(install version:3.4 version range:*)
| | | +- scp(install version:0.13.2 version range:>=0.13.2)
| | | | +- paramiko(install version:2.7.1 version range:*)
| | | +- setuptools(install version:42.0.2 version range:>=38.4.0)
| | | +- textfsm(install version:1.1.0 version range:*)
| | | | +- future(install version:0.18.2 version range:*)
| | | | +- six(install version:1.13.0 version range:*)
| | +- nxapi-plumbing(install version:0.5.2 version range:>=0.5.2)
| | | +- future(install version:0.18.2 version range:*)
| | | +- lxml(install version:4.4.2 version range:*)
| | | +- requests(install version:2.22.0 version range:>=2.7.0)
| | | | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | | | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | | | +- idna(install version:2.8 version range:>=2.5,<2.9)
| | | | +- urllib3(install version:1.25.7 version range:<1.26,>=1.21.1)
| | | +- scp(install version:0.13.2 version range:*)
| | | | +- paramiko(install version:2.7.1 version range:*)
| | | +- six(install version:1.13.0 version range:*)
| | +- paramiko(install version:2.7.1 version range:>=2.4.2)
| | +- pyeapi(install version:0.8.2 version range:>=0.8.2)
| | | +- netaddr(install version:0.7.19 version range:*)
| | +- pyIOSXR(install version:0.53 version range:>=0.53)
| | | +- lxml(install version:4.4.2 version range:>=3.2.4)
| | | +- netmiko(install version:2.4.2 version range:>=1.4.3)
| | | | +- enum34(install version:1.1.6 version range:*)
| | | | +- ipaddress(install version:1.0.23 version range:*)
| | | | +- paramiko(install version:2.7.1 version range:>=2.4.3)
| | | | +- pyserial(install version:3.4 version range:*)
| | | | +- scp(install version:0.13.2 version range:>=0.13.2)
| | | | +- setuptools(install version:42.0.2 version range:>=38.4.0)
| | | | +- textfsm(install version:1.1.0 version range:*)
| | +- pyYAML(install version:5.2 version range:*)
| | +- scp(install version:0.13.2 version range:*)
| | | +- paramiko(install version:2.7.1 version range:*)
| | +- setuptools(install version:42.0.2 version range:>=38.4.0)
| | +- textfsm(install version:1.1.0 version range:*)
| | | +- future(install version:0.18.2 version range:*)
| | | +- six(install version:1.13.0 version range:*)
| +- ncclient(install version:0.6.6 version range:>=0.6.6,<0.7.0)
| | +- lxml(install version:4.4.2 version range:>=3.3.0)
| | +- paramiko(install version:2.7.1 version range:>=1.15.0)
| | +- selectors2(install version:2.0.1 version range:>=2.0.1)
| | +- setuptools(install version:42.0.2 version range:>0.6)
| | +- six(install version:1.13.0 version range:*)
| +- netmiko(install version:2.4.2 version range:>=2.3.3,<3.0.0)
| | +- enum34(install version:1.1.6 version range:*)
| | +- ipaddress(install version:1.0.23 version range:*)
| | +- paramiko(install version:2.7.1 version range:>=2.4.3)
| | +- pyserial(install version:3.4 version range:*)
| | +- scp(install version:0.13.2 version range:>=0.13.2)
| | | +- paramiko(install version:2.7.1 version range:*)
| | +- setuptools(install version:42.0.2 version range:>=38.4.0)
| | +- textfsm(install version:1.1.0 version range:*)
| | | +- future(install version:0.18.2 version range:*)
| | | +- six(install version:1.13.0 version range:*)
| +- paramiko(install version:2.7.1 version range:>=2.1.1,<3.0.0)
| +- pydantic(install version:0.18.2 version range:>=0.18.2,<0.19.0)
| | +- dataclasses(install version:0.7 version range:>=0.6)
| +- requests(install version:2.22.0 version range:>=2,<3)
| | +- certifi(install version:2019.11.28 version range:>=2017.4.17)
| | +- chardet(install version:3.0.4 version range:<3.1.0,>=3.0.2)
| | +- idna(install version:2.8 version range:>=2.5,<2.9)
| | +- urllib3(install version:1.25.7 version range:<1.26,>=1.21.1)
| +- ruamel.yaml(install version:0.15.100 version range:>=0.15.85,<0.16.0)
| +- typing_extensions(install version:3.7.4.1 version range:>=3.7,<4.0)

Thanks for your help.
Best,
Neolith

@NeolithEra
Copy link
Author

Suggested Solution

  1. Ask your upstream project napalmto loose the version range of junos-eznc.
  2. Remove your direct dependency junos-eznc, and use junos-eznc transitively introduced by napalm.

@dbarrosop Which solution do you prefer, 1 or 2?
Please let me know your choice. I can submit a PR to solve this issue.

@ktbyers
Copy link
Collaborator

ktbyers commented Dec 11, 2019

I think we should do 2 i.e. remove the direct dependency on junos-eznc and pull it in via NAPALM.

The other option is to pin the direct dependency to 2.2.1.

The cause was a change that PyEZ library made that broke napalm tests--it is only a testing issue and not a real issue (i.e. we mocked a PyEZ connection and are now missing a needed attribute in napalm).

The issue will be fixed in the next NAPALM release. Though we will have to roll Nornir pyproject.toml for that anyways as it will be NAPALM 3.X.X.

@dmfigol
Copy link
Collaborator

dmfigol commented Dec 11, 2019

if we don't directly use junos-eznc, then it should not be in our direct dependency list.
I agree with @ktbyers

@dbarrosop
Copy link
Contributor

dbarrosop commented Dec 11, 2019

Thanks a lot for reporting the issue and for the extensive analysis and proposed solutions. I concur with Kirk and Dimitri, I think removing the direct dependency is the best solution.

@NeolithEra
Copy link
Author

@dbarrosop @dmfigol @ktbyers, Thanks for your quick feedback. I will submit a PR to solve this problem. :-P

NeolithEra added a commit to NeolithEra/nornir that referenced this issue Dec 13, 2019
dmfigol added a commit to dmfigol/nornir that referenced this issue Jan 14, 2020
dmfigol added a commit to dmfigol/nornir that referenced this issue Jan 14, 2020
dbarrosop pushed a commit that referenced this issue Jan 14, 2020
Remove junos-eznc dependency, fix #457
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants