networktocode / network-importer

The network importer is a tool/library to analyze and/or synchronize an existing network with a Network Source of Truth (SOT), it's designed to be idempotent and by default it's only showing the difference between the running network and the remote SOT.
Other
170 stars 41 forks source link

Remove Genie #276

Open jvanderaa opened 2 years ago

jvanderaa commented 2 years ago

Environment

Steps to Reproduce

  1. Try to install via pip, fails

Expected Behavior

Installation happens just fine

Observed Behavior

root@d690792a4fb4:/# pip install network-importer
Collecting network-importer
  Downloading network_importer-3.0.5-py3-none-any.whl (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.1/81.1 KB 1.5 MB/s eta 0:00:00
Collecting pybatfish==2021.2.26.830
  Downloading pybatfish-2021.2.26.830-py2.py3-none-any.whl (128 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 128.2/128.2 KB 2.5 MB/s eta 0:00:00
Collecting pynautobot<2.0.0,>=1.0.2
  Downloading pynautobot-1.1.2-py3-none-any.whl (31 kB)
Collecting toml<0.11,>=0.10
  Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting nornir-utils<0.2.0,>=0.1.2
  Downloading nornir_utils-0.1.2-py3-none-any.whl (13 kB)
Collecting ntc-templates<3.0,>=2.0
  Downloading ntc_templates-2.3.2-py3-none-any.whl (297 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 297.7/297.7 KB 2.5 MB/s eta 0:00:00
Collecting pydantic<2.0,>=1.6
  Downloading pydantic-1.9.1-py3-none-any.whl (142 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 142.9/142.9 KB 3.0 MB/s eta 0:00:00
Collecting pynetbox<6.0,>=5.0
  Downloading pynetbox-5.3.1-py3-none-any.whl (28 kB)
Collecting netmiko<4.0,>=3.3
  Downloading netmiko-3.4.0-py3-none-any.whl (178 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 178.9/178.9 KB 3.4 MB/s eta 0:00:00
Collecting network-importer
  Downloading network_importer-3.0.4-py3-none-any.whl (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.1/81.1 KB 3.7 MB/s eta 0:00:00
  Downloading network_importer-3.0.3-py3-none-any.whl (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.2/81.2 KB 4.0 MB/s eta 0:00:00
Collecting click<8.0,>=7.1
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 82.8/82.8 KB 3.9 MB/s eta 0:00:00
Collecting network-importer
  Downloading network_importer-3.0.2-py3-none-any.whl (83 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 83.0/83.0 KB 4.3 MB/s eta 0:00:00
  Downloading network_importer-3.0.1-py3-none-any.whl (82 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 83.0/83.0 KB 4.4 MB/s eta 0:00:00
  Downloading network_importer-3.0.0-py3-none-any.whl (82 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 83.0/83.0 KB 4.1 MB/s eta 0:00:00
  Downloading network_importer-2.0.0-py3-none-any.whl (67 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 68.0/68.0 KB 4.1 MB/s eta 0:00:00
Collecting ntc-templates<2.0.0,>=1.6.0
  Downloading ntc_templates-1.7.0-py3-none-any.whl (285 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 285.6/285.6 KB 3.3 MB/s eta 0:00:00
ERROR: Cannot install network-importer==2.0.0, network-importer==3.0.0, network-importer==3.0.1, network-importer==3.0.2, network-importer==3.0.3, network-importer==3.0.4 and network-importer==3.0.5 because these package versions have conflicting dependencies.

The conflict is caused by:
    network-importer 3.0.5 depends on pyats<21.5.0 and >=21.4.0
    network-importer 3.0.4 depends on pyats<21.5.0 and >=21.4.0
    network-importer 3.0.3 depends on pyats<21.5.0 and >=21.4.0
    network-importer 3.0.2 depends on pyats<21.5.0 and >=21.4.0
    network-importer 3.0.1 depends on pyats<21.5.0 and >=21.4.0
    network-importer 3.0.0 depends on pyats<21.5.0 and >=21.4.0
    network-importer 2.0.0 depends on pyats<22.0 and >=21.4

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts
WARNING: You are using pip version 22.0.4; however, version 22.1.2 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
jvanderaa commented 2 years ago

I believe that we can replicate the majority of these features in Genie by moving to NTC-Templates instead. Which is a much lighter install, an installation that works, and is in full open source.

So many issues trying to get Genie working properly.

jvanderaa commented 2 years ago

This looks like it is an issue with ARM installations of the container version.

jvanderaa commented 2 years ago
root@d690792a4fb4:/# arch
aarch64
jvanderaa commented 2 years ago

pyATS installation works fine on i386:

~$ arch
x86_64
erwini commented 2 years ago

~$ arch x86_64 And exact the same issue plus: As an idea was installing pyATS upfront, but nautobot 1.3.8 wants GitPython<3.2.0,>=3.1.27 and pyats-reporter 22.6 wants gitpython<=3.1.18. So imposible to run both on the same box, but they should, if used. So using another tool (not pyats) will help, I hope.

erwini commented 2 years ago

Now understand, this has to be done on an extra machine/vm. Hint in the documentation could be helpful, that this is not a plugin. Tested on fresh installed VM. Still conflicting.

network-importer 3.0.5 depends on pyats<21.5.0 and >=21.4.0

pyats is meanwhile at 22.6

jvanderaa commented 2 years ago

@erwini what version of Python are you running? Is this Python3.10?

erwini commented 2 years ago

@jvanderaa Testet on ubuntu 22.04, which is using python 3.10.4. Tested with ubuntu 20.04, which is using python 3.8.10 and got this errormessages:

ERROR: rich 9.13.0 has requirement typing-extensions<4.0.0,>=3.7.4, but you'll have typing-extensions 4.3.0 which is incompatible.
ERROR: aiohttp-swagger 1.0.15 has requirement jinja2~=2.11.2, but you'll have jinja2 3.1.2 which is incompatible.
ERROR: aiohttp-swagger 1.0.15 has requirement markupsafe~=1.1.1, but you'll have markupsafe 2.1.1 which is incompatible.
ERROR: pyats-log 21.4 has requirement Jinja2==2.11.3, but you'll have jinja2 3.1.2 which is incompatible.

Not sure, if this has any impact. Run out of time to continue testing with this. Maybe later.

jvanderaa commented 2 years ago

Yes it does. The pyATS library does not support Python3.10

https://pypi.org/project/pyats/

I will need to either back out the support of 3.10 here or remove Genie.

erwini commented 2 years ago

@jvanderaa Testet on ubuntu 22.04, which is using python 3.10.4. Tested with ubuntu 20.04, which is using python 3.8.10 and got this errormessages:

ERROR: rich 9.13.0 has requirement typing-extensions<4.0.0,>=3.7.4, but you'll have typing-extensions 4.3.0 which is incompatible.
ERROR: aiohttp-swagger 1.0.15 has requirement jinja2~=2.11.2, but you'll have jinja2 3.1.2 which is incompatible.
ERROR: aiohttp-swagger 1.0.15 has requirement markupsafe~=1.1.1, but you'll have markupsafe 2.1.1 which is incompatible.
ERROR: pyats-log 21.4 has requirement Jinja2==2.11.3, but you'll have jinja2 3.1.2 which is incompatible.

Not sure, if this has any impact. Run out of time to continue testing with this. Maybe later.

Tested now and runs on ubuntu 20.04 and python 3.8.10