1{ lib, buildPythonPackage, fetchFromGitHub, fetchpatch, setuptools, cffi
2, paramiko, requests, future, textfsm, jinja2, netaddr, pyyaml, pyeapi, netmiko
3, junos-eznc, ciscoconfparse, scp, lxml, ncclient, pytestCheckHook, ddt, mock
4, pythonOlder, invoke }:
5
6buildPythonPackage rec {
7 pname = "napalm";
8 version = "3.4.1";
9 format = "setuptools";
10
11 disabled = pythonOlder "3.7";
12
13 src = fetchFromGitHub {
14 owner = "napalm-automation";
15 repo = "napalm";
16 rev = version;
17 hash = "sha256-TNWRJtc6+VS6wgJGGvCPDoFQmOKQAyXdjFQo9bPJ2F8=";
18 };
19
20 patches = [
21 # netmiko 4.0.0 support
22 (fetchpatch{
23 url = "https://github.com/napalm-automation/napalm/commit/4b8cc85db3236099a04f742cf71773e74d9dd70e.patch";
24 excludes = [ "requirements.txt" ];
25 hash = "sha256-DBKp+wiKd+/j2xAqaQL3UCcGQd6wnWcNTsNXBBt9c98=";
26 })
27 (fetchpatch{
28 url = "https://github.com/napalm-automation/napalm/commit/4a8b5b1823335dd79aa5269c038a1f08ecd35cdd.patch";
29 hash = "sha256-uiou/rzmnFf4wAvXwmUsGJx99GeHWKJB2JrMM1kLakM=";
30 })
31 ];
32
33 postPatch = ''
34 substituteInPlace requirements.txt \
35 --replace "netmiko>=3.3.0,<4.0.0" "netmiko"
36 '';
37
38 propagatedBuildInputs = [
39 cffi
40 paramiko
41 requests
42 future
43 textfsm
44 invoke
45 jinja2
46 netaddr
47 pyyaml
48 pyeapi
49 netmiko
50 junos-eznc
51 ciscoconfparse
52 scp
53 setuptools
54 lxml
55 ncclient
56 ];
57
58 nativeCheckInputs = [ pytestCheckHook mock ddt ];
59
60 meta = with lib; {
61 description =
62 "Network Automation and Programmability Abstraction Layer with Multivendor support";
63 homepage = "https://github.com/napalm-automation/napalm";
64 license = licenses.asl20;
65 maintainers = with maintainers; [ ] ++ teams.c3d2.members;
66 };
67}