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

netlab status is much slower to respond in 1.9.2 compared to the old netlab status in version (1.7.2) for example #1526

Open
sdargoeuves opened this issue Nov 12, 2024 · 10 comments
Labels
enhancement New feature or request

Comments

@sdargoeuves
Copy link
Contributor

I forgot to activate my virtual environment, and realised that netlab 1.7.2-post1 was responding to netlab status much faster than with the version 1.9.2: 0.5s versus 40s
Not sure if there are some quick wins doable to improve this, otherwise, not a big issue.

  • with 1.7.2-post1
  ~/code/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ netlab version                                                                                                             with sa@sa-netlab01a
netlab version 1.7.2-post1

  ~/code/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ time netlab status                                                                                                         with sa@sa-netlab01a
Lab 1 in /home/sa/code/netsim-main-lab
  status: started
  provider(s): libvirt,clab

Lab 2 in /home/sa/code/quick-netlab-lab
  status: started
  provider(s): libvirt

Lab 4 in /home/sa/code/bgp-inetrt
  status: started
  provider(s): clab

Running containers
================================================================================
CONTAINER ID   IMAGE                             COMMAND                  CREATED        STATUS        PORTS     NAMES
55a1fde374d4   ceos:4.32.2F.1                    "bash -c '/mnt/flash…"   20 hours ago   Up 20 hours             clab-ml_4-r1
3aed958be49e   juliopdx/exabgp-irt               "bash"                   20 hours ago   Up 20 hours             clab-ml_4-internet
267b097b61f2   ios-xr/xrd-control-plane:7.11.1   "/usr/sbin/init"         8 days ago     Up 8 days               clab-ml_1-d6xr02
d98d300e286a   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xdsw02
2ceb0aab5e7f   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xgw1
651d1860b41a   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s1xsw04
a25f87c6766c   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xasw03
d86d11c1129b   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s4xsw02
21ea72a0b9b9   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s6xsw01
a7b6f9860948   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s5xh01
08064785bd74   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s4xsw07
a23850b847b2   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s4xsw01
743a76ecd4f5   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s6xh02
f8b0cdd33d82   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s3xh03
2bd321fcc7dd   ios-xr/xrd-control-plane:7.11.1   "/usr/sbin/init"         8 days ago     Up 8 days               clab-ml_1-d6xr01
badbcebfeed8   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s1xgw2
bf9cfa7bcb27   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xasw01
4afdc11a063d   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xlbsw01
d591ed3be676   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s4xsw04
a67b23a9db40   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s6xsw02
3c88d8b6fed1   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xgw2
fc9f15ea43f5   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xdsw01
3cb79be442a0   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s4xsw06
6cb28d0d2c86   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xasw02
fe24ea505a5f   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s1xsw02
d0d471f81d5d   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s1xsw06
50b0df8c7ed3   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s4xsw03
fd3e4a7f29ef   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s1xsw03
6f11304fbdb3   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s1xsw01
7ee1a933704a   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s1xsw05
994e50fc0f2a   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s3xlbr01
21fd213e8c41   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s4xsw05
629924714efd   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s1xh01
c2c7bd78710e   ceos:4.29.9.1M                    "bash -c '/mnt/flash…"   8 days ago     Up 8 days               clab-ml_1-s1xgw1
2ea0e2f51c0c   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s6xh04
04b8dd7b0a42   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s3xh02
21c33d9c63d1   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s6xh01
5ec04131bbf5   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s4xh01
058713f7cbed   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s3xh04
74347ad3d642   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s6xh03
7890c5ecae64   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s3xh01
4e15b8c47731   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s1xh02
b8f36083cc42   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s4xh02
de68dc30672e   ubuntu/nginx                      "/docker-entrypoint.…"   8 days ago     Up 8 days     80/tcp    clab-ml_1-s2xh01


KVM/libvirt domains (virtual machines)
================================================================================
 Id   Name           State
------------------------------
 16   ml_1_c0xr01    running
 17   ml_1_c0xr02    running
 18   ml_1_lb3x01    running
 19   ml_1_d1xr01    running
 20   ml_1_c0xr04    running
 21   ml_1_d1xfw01   running
 22   ml_1_d1xr02    running
 23   ml_1_c0xr03    running
 24   ml_1_c0xr06    running
 25   ml_1_d4xr01    running
 26   ml_1_d3xr01    running
 27   ml_1_s2xsw01   running
 28   ml_1_s2xgw1    running
 29   ml_1_d2xfw01   running
 30   ml_1_c0xr05    running
 31   ml_1_d3xr02    running
 32   ml_1_s5xr03    running
 33   ml_1_d4xr02    running
 34   ml_1_s5xr06    running
 35   ml_1_s5xr05    running
 36   ml_1_s5xr02    running
 37   ml_1_s5xr04    running
 38   ml_1_d5xr01    running



netlab status  0.45s user 0.05s system 99% cpu 0.505 total
  • 1.9.2
  ~/code/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ netlab version                                                                                            netsim-main-lab with sa@sa-netlab01a
netlab version 1.9.2

  ~/code/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ time netlab status                                                                                        netsim-main-lab with sa@sa-netlab01a
Lab 1 in /home/sa/code/netsim-main-lab
  status: started
  provider(s): libvirt,clab

┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ node      ┃ device  ┃ image                           ┃ mgmt IPv4     ┃ connection  ┃ provider ┃ VM/container        ┃ status       ┃
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ c0xr01    │ vsrx    │ juniper/vsrx3                   │ 10.194.56.66  │ netconf     │ libvirt  │ ml_1_c0xr01         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ c0xr02    │ vsrx    │ juniper/vsrx3                   │ 10.194.56.67  │ netconf     │ libvirt  │ ml_1_c0xr02         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ c0xr03    │ vsrx    │ juniper/vsrx3                   │ 10.194.56.68  │ netconf     │ libvirt  │ ml_1_c0xr03         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ c0xr04    │ vsrx    │ juniper/vsrx3                   │ 10.194.56.80  │ netconf     │ libvirt  │ ml_1_c0xr04         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ c0xr05    │ vsrx    │ juniper/vsrx3                   │ 10.194.56.81  │ netconf     │ libvirt  │ ml_1_c0xr05         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ c0xr06    │ vsrx    │ juniper/vsrx3                   │ 10.194.56.82  │ netconf     │ libvirt  │ ml_1_c0xr06         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d1xfw01   │ vsrx    │ juniper/vsrx3                   │ 10.194.56.71  │ netconf     │ libvirt  │ ml_1_d1xfw01        │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d1xr01    │ iosv    │ cisco/iosv                      │ 10.194.56.69  │ network_cli │ libvirt  │ ml_1_d1xr01         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d1xr02    │ iosv    │ cisco/iosv                      │ 10.194.56.70  │ network_cli │ libvirt  │ ml_1_d1xr02         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d2xfw01   │ vsrx    │ juniper/vsrx3                   │ 10.194.56.83  │ netconf     │ libvirt  │ ml_1_d2xfw01        │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d3xr01    │ iosv    │ cisco/iosv                      │ 10.194.56.86  │ network_cli │ libvirt  │ ml_1_d3xr01         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d3xr02    │ iosv    │ cisco/iosv                      │ 10.194.56.87  │ network_cli │ libvirt  │ ml_1_d3xr02         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d4xr01    │ iosv    │ cisco/iosv                      │ 10.194.56.97  │ network_cli │ libvirt  │ ml_1_d4xr01         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d4xr02    │ iosv    │ cisco/iosv                      │ 10.194.56.98  │ network_cli │ libvirt  │ ml_1_d4xr02         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d5xr01    │ iosv    │ cisco/iosv                      │ 10.194.56.107 │ network_cli │ libvirt  │ ml_1_d5xr01         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d6xr01    │ iosxr   │ ios-xr/xrd-control-plane:7.11.1 │ 10.194.56.113 │ network_cli │ clab     │ clab-ml_1-d6xr01    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ d6xr02    │ iosxr   │ ios-xr/xrd-control-plane:7.11.1 │ 10.194.56.114 │ network_cli │ clab     │ clab-ml_1-d6xr02    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ lb3x01    │ linux   │ f5/bigip                        │ 10.194.56.101 │ paramiko    │ libvirt  │ ml_1_lb3x01         │ inaccessible │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xgw1    │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.72  │ network_cli │ clab     │ clab-ml_1-s1xgw1    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xgw2    │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.73  │ network_cli │ clab     │ clab-ml_1-s1xgw2    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xh01    │ linux   │ ubuntu/nginx                    │ 10.194.56.130 │ docker      │ clab     │ clab-ml_1-s1xh01    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xh02    │ linux   │ ubuntu/nginx                    │ 10.194.56.131 │ docker      │ clab     │ clab-ml_1-s1xh02    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xsw01   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.74  │ network_cli │ clab     │ clab-ml_1-s1xsw01   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xsw02   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.75  │ network_cli │ clab     │ clab-ml_1-s1xsw02   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xsw03   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.76  │ network_cli │ clab     │ clab-ml_1-s1xsw03   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xsw04   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.77  │ network_cli │ clab     │ clab-ml_1-s1xsw04   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xsw05   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.78  │ network_cli │ clab     │ clab-ml_1-s1xsw05   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s1xsw06   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.79  │ network_cli │ clab     │ clab-ml_1-s1xsw06   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s2xgw1    │ arubacx │ aruba/cx                        │ 10.194.56.84  │ network_cli │ libvirt  │ ml_1_s2xgw1         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s2xh01    │ linux   │ ubuntu/nginx                    │ 10.194.56.132 │ docker      │ clab     │ clab-ml_1-s2xh01    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s2xsw01   │ arubacx │ aruba/cx                        │ 10.194.56.85  │ network_cli │ libvirt  │ ml_1_s2xsw01        │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xasw01  │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.92  │ network_cli │ clab     │ clab-ml_1-s3xasw01  │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xasw02  │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.93  │ network_cli │ clab     │ clab-ml_1-s3xasw02  │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xasw03  │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.94  │ network_cli │ clab     │ clab-ml_1-s3xasw03  │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xdsw01  │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.90  │ network_cli │ clab     │ clab-ml_1-s3xdsw01  │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xdsw02  │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.91  │ network_cli │ clab     │ clab-ml_1-s3xdsw02  │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xgw1    │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.88  │ network_cli │ clab     │ clab-ml_1-s3xgw1    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xgw2    │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.89  │ network_cli │ clab     │ clab-ml_1-s3xgw2    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xh01    │ linux   │ ubuntu/nginx                    │ 10.194.56.133 │ docker      │ clab     │ clab-ml_1-s3xh01    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xh02    │ linux   │ ubuntu/nginx                    │ 10.194.56.134 │ docker      │ clab     │ clab-ml_1-s3xh02    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xh03    │ linux   │ ubuntu/nginx                    │ 10.194.56.135 │ docker      │ clab     │ clab-ml_1-s3xh03    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xh04    │ linux   │ ubuntu/nginx                    │ 10.194.56.136 │ docker      │ clab     │ clab-ml_1-s3xh04    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xlbr01  │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.95  │ network_cli │ clab     │ clab-ml_1-s3xlbr01  │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s3xlbsw01 │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.96  │ network_cli │ clab     │ clab-ml_1-s3xlbsw01 │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xh01    │ linux   │ ubuntu/nginx                    │ 10.194.56.137 │ docker      │ clab     │ clab-ml_1-s4xh01    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xh02    │ linux   │ ubuntu/nginx                    │ 10.194.56.138 │ docker      │ clab     │ clab-ml_1-s4xh02    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xsw01   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.99  │ network_cli │ clab     │ clab-ml_1-s4xsw01   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xsw02   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.100 │ network_cli │ clab     │ clab-ml_1-s4xsw02   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xsw03   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.102 │ network_cli │ clab     │ clab-ml_1-s4xsw03   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xsw04   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.103 │ network_cli │ clab     │ clab-ml_1-s4xsw04   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xsw05   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.104 │ network_cli │ clab     │ clab-ml_1-s4xsw05   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xsw06   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.105 │ network_cli │ clab     │ clab-ml_1-s4xsw06   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s4xsw07   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.106 │ network_cli │ clab     │ clab-ml_1-s4xsw07   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s5xh01    │ linux   │ ubuntu/nginx                    │ 10.194.56.139 │ docker      │ clab     │ clab-ml_1-s5xh01    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s5xr02    │ iosv    │ cisco/iosv                      │ 10.194.56.108 │ network_cli │ libvirt  │ ml_1_s5xr02         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s5xr03    │ iosv    │ cisco/iosv                      │ 10.194.56.109 │ network_cli │ libvirt  │ ml_1_s5xr03         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s5xr04    │ iosv    │ cisco/iosv                      │ 10.194.56.110 │ network_cli │ libvirt  │ ml_1_s5xr04         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s5xr05    │ iosv    │ cisco/iosv                      │ 10.194.56.111 │ network_cli │ libvirt  │ ml_1_s5xr05         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s5xr06    │ iosv    │ cisco/iosv                      │ 10.194.56.112 │ network_cli │ libvirt  │ ml_1_s5xr06         │ running      │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s6xh01    │ linux   │ ubuntu/nginx                    │ 10.194.56.140 │ docker      │ clab     │ clab-ml_1-s6xh01    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s6xh02    │ linux   │ ubuntu/nginx                    │ 10.194.56.141 │ docker      │ clab     │ clab-ml_1-s6xh02    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s6xh03    │ linux   │ ubuntu/nginx                    │ 10.194.56.142 │ docker      │ clab     │ clab-ml_1-s6xh03    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s6xh04    │ linux   │ ubuntu/nginx                    │ 10.194.56.143 │ docker      │ clab     │ clab-ml_1-s6xh04    │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s6xsw01   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.115 │ network_cli │ clab     │ clab-ml_1-s6xsw01   │ Up 8 days    │
├───────────┼─────────┼─────────────────────────────────┼───────────────┼─────────────┼──────────┼─────────────────────┼──────────────┤
│ s6xsw02   │ eos     │ ceos:4.29.9.1M                  │ 10.194.56.116 │ network_cli │ clab     │ clab-ml_1-s6xsw02   │ Up 8 days    │
└───────────┴─────────┴─────────────────────────────────┴───────────────┴─────────────┴──────────┴─────────────────────┴──────────────┘
/home/sa/code/netsim-main-lab/venv/bin/netlab status  10.07s user 0.52s system 26% cpu 40.385 total
@sdargoeuves sdargoeuves added the enhancement New feature or request label Nov 12, 2024
@jbemmel
Copy link
Collaborator

jbemmel commented Nov 12, 2024

Interesting, could you do a tcpdump during netlab status to see if there is any hints that could point at possible causes like network related timeouts?
My gut feeling says it could be DNS resolution issues - libvirt hostnames don't get added to /etc/hosts unlike clab - but I could be wrong

@sdargoeuves
Copy link
Contributor Author

I've done a few tcpdump to see if I could see something special happening during the netlab status, I didn't see anything pointing to this issue (I'm not saying it's not, I'm saying I didn't see!)

Although, when doing a Ctrl+C during the netlab status command, I saw something interesting:

  ~/co/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ netlab status
Lab 1 in /home/sa/code/netsim-main-lab
  status: started
  provider(s): libvirt,clab

^C[FATAL]   libvirt: Cannot execute "vagrant status --machine-readable": {ex}
┏━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┓
┃         ┃         ┃         ┃ mgmt    ┃         ┃         ┃         ┃         ┃
┃ node    ┃ device  ┃ image   ┃ IPv4    ┃ connec… ┃ provid… ┃ VM/con… ┃ status  ┃
┡━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━┩
│ c0xr01  │ vsrx    │ junipe… │ 10.194… │ netconf │ libvirt │ ml_1_c… │ Unknown │
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤

Now if I test this command, it takes ~38s to execute

  ~/code/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ vagrant status --machine-readable                                                                                        ✘ INT  netsim-main-lab with sa@sa-netlab01a
1731420511,lb3x01,metadata,provider,libvirt
1731420511,c0xr01,metadata,provider,libvirt
1731420511,c0xr02,metadata,provider,libvirt
1731420511,c0xr03,metadata,provider,libvirt
1731420511,d1xr01,metadata,provider,libvirt
1731420511,d1xr02,metadata,provider,libvirt
1731420511,d1xfw01,metadata,provider,libvirt
1731420511,c0xr04,metadata,provider,libvirt
1731420511,c0xr05,metadata,provider,libvirt
1731420511,c0xr06,metadata,provider,libvirt
1731420512,d2xfw01,metadata,provider,libvirt
1731420512,s2xgw1,metadata,provider,libvirt
1731420512,s2xsw01,metadata,provider,libvirt
1731420512,d3xr01,metadata,provider,libvirt
1731420512,d3xr02,metadata,provider,libvirt
1731420512,d4xr01,metadata,provider,libvirt
1731420512,d4xr02,metadata,provider,libvirt
1731420512,d5xr01,metadata,provider,libvirt
1731420512,s5xr02,metadata,provider,libvirt
1731420512,s5xr03,metadata,provider,libvirt
1731420513,s5xr04,metadata,provider,libvirt
1731420513,s5xr05,metadata,provider,libvirt
1731420513,s5xr06,metadata,provider,libvirt
1731420537,lb3x01,provider-name,libvirt
1731420537,lb3x01,state,inaccessible
1731420537,lb3x01,state-human-short,inaccessible
1731420537,lb3x01,state-human-long,translation missing: en.vagrant_libvirt.states.inaccessible
1731420540,c0xr01,provider-name,libvirt
1731420540,c0xr01,state,running
1731420540,c0xr01,state-human-short,running
1731420540,c0xr01,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420540,c0xr02,provider-name,libvirt
1731420540,c0xr02,state,running
1731420540,c0xr02,state-human-short,running
1731420540,c0xr02,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420540,c0xr03,provider-name,libvirt
1731420540,c0xr03,state,running
1731420540,c0xr03,state-human-short,running
1731420540,c0xr03,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420540,d1xr01,provider-name,libvirt
1731420540,d1xr01,state,running
1731420540,d1xr01,state-human-short,running
1731420540,d1xr01,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420541,d1xr02,provider-name,libvirt
1731420541,d1xr02,state,running
1731420541,d1xr02,state-human-short,running
1731420541,d1xr02,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420541,d1xfw01,provider-name,libvirt
1731420541,d1xfw01,state,running
1731420541,d1xfw01,state-human-short,running
1731420541,d1xfw01,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420541,c0xr04,provider-name,libvirt
1731420541,c0xr04,state,running
1731420541,c0xr04,state-human-short,running
1731420541,c0xr04,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420541,c0xr05,provider-name,libvirt
1731420541,c0xr05,state,running
1731420541,c0xr05,state-human-short,running
1731420541,c0xr05,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420541,c0xr06,provider-name,libvirt
1731420541,c0xr06,state,running
1731420541,c0xr06,state-human-short,running
1731420541,c0xr06,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420541,d2xfw01,provider-name,libvirt
1731420541,d2xfw01,state,running
1731420541,d2xfw01,state-human-short,running
1731420541,d2xfw01,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420541,s2xgw1,provider-name,libvirt
1731420541,s2xgw1,state,running
1731420541,s2xgw1,state-human-short,running
1731420541,s2xgw1,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420542,s2xsw01,provider-name,libvirt
1731420542,s2xsw01,state,running
1731420542,s2xsw01,state-human-short,running
1731420542,s2xsw01,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420542,d3xr01,provider-name,libvirt
1731420542,d3xr01,state,running
1731420542,d3xr01,state-human-short,running
1731420542,d3xr01,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420542,d3xr02,provider-name,libvirt
1731420542,d3xr02,state,running
1731420542,d3xr02,state-human-short,running
1731420542,d3xr02,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420542,d4xr01,provider-name,libvirt
1731420542,d4xr01,state,running
1731420542,d4xr01,state-human-short,running
1731420542,d4xr01,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420542,d4xr02,provider-name,libvirt
1731420542,d4xr02,state,running
1731420542,d4xr02,state-human-short,running
1731420542,d4xr02,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420542,d5xr01,provider-name,libvirt
1731420542,d5xr01,state,running
1731420542,d5xr01,state-human-short,running
1731420542,d5xr01,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420542,s5xr02,provider-name,libvirt
1731420542,s5xr02,state,running
1731420542,s5xr02,state-human-short,running
1731420542,s5xr02,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420543,s5xr03,provider-name,libvirt
1731420543,s5xr03,state,running
1731420543,s5xr03,state-human-short,running
1731420543,s5xr03,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420543,s5xr04,provider-name,libvirt
1731420543,s5xr04,state,running
1731420543,s5xr04,state-human-short,running
1731420543,s5xr04,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420543,s5xr05,provider-name,libvirt
1731420543,s5xr05,state,running
1731420543,s5xr05,state-human-short,running
1731420543,s5xr05,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420543,s5xr06,provider-name,libvirt
1731420543,s5xr06,state,running
1731420543,s5xr06,state-human-short,running
1731420543,s5xr06,state-human-long,The Libvirt domain is running. To stop this machine%!(VAGRANT_COMMA) you can run\n`vagrant halt`. To destroy the machine%!(VAGRANT_COMMA) you can run `vagrant destroy`.
1731420543,,ui,info,Current machine states:\n\nlb3x01                    inaccessible (libvirt)\nc0xr01                    running (libvirt)\nc0xr02                    running (libvirt)\nc0xr03                    running (libvirt)\nd1xr01                    running (libvirt)\nd1xr02                    running (libvirt)\nd1xfw01                   running (libvirt)\nc0xr04                    running (libvirt)\nc0xr05                    running (libvirt)\nc0xr06                    running (libvirt)\nd2xfw01                   running (libvirt)\ns2xgw1                    running (libvirt)\ns2xsw01                   running (libvirt)\nd3xr01                    running (libvirt)\nd3xr02                    running (libvirt)\nd4xr01                    running (libvirt)\nd4xr02                    running (libvirt)\nd5xr01                    running (libvirt)\ns5xr02                    running (libvirt)\ns5xr03                    running (libvirt)\ns5xr04                    running (libvirt)\ns5xr05                    running (libvirt)\ns5xr06                    running (libvirt)\n\nThis environment represents multiple VMs. The VMs are all listed\nabove with their current state. For more information about a specific\nVM%!(VAGRANT_COMMA) run `vagrant status NAME`.

In this, it takes ~25s between those 2 lines:

1731420513,s5xr06,metadata,provider,libvirt
1731420537,lb3x01,provider-name,libvirt

lb3x01 is an unmanaged device from a netlab perspective, it's a F5 vagrant box.

I now think this is what is causing the issue, when I simply do vagrant status, it takes 38s to display the output, and this vagrant box is 'inaccessible', but works fine from my perspective.

  ~/code/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ vagrant status                                                                                                      took  38s  netsim-main-lab with sa@sa-netlab01a
Current machine states:

lb3x01                    inaccessible (libvirt)
c0xr01                    running (libvirt)
c0xr02                    running (libvirt)
c0xr03                    running (libvirt)
d1xr01                    running (libvirt)
...

@sdargoeuves
Copy link
Contributor Author

hopefully it won't be affecting others, it seems to be something happening locally, with this specific box.
Unless someone's got an idea, I will close this ticket.

@jbemmel
Copy link
Collaborator

jbemmel commented Nov 12, 2024

hopefully it won't be affecting others, it seems to be something happening locally, with this specific box. Unless someone's got an idea, I will close this ticket.

I'm wondering what changed since 1.7.2 (February 2024) - it might be worth investigating. I'd suggest to wait for @ipspace to respond before closing

@ipspace
Copy link
Owner

ipspace commented Nov 12, 2024

I forgot to activate my virtual environment, and realised that netlab 1.7.2-post1 was responding to netlab status much faster than with the version 1.9.2: 0.5s versus 40s

The early versions of "netlab status" executed "docker ps" and "virsh list". You would get all the VMs and containers, not just those relevant to the current lab.

Someone (rightfully) complained about that and so I changed the code to execute "vagrant status" and "containerlab status" (or some such), and as you discovered, "vagrant status" takes a long time.

@ipspace
Copy link
Owner

ipspace commented Nov 12, 2024

I now think this is what is causing the issue, when I simply do vagrant status, it takes 38s to display the output, and this vagrant box is 'inaccessible', but works fine from my perspective.

'inaccessible' usually means "Vagrant can't reach it via SSH" (and the 30+ seconds is probably the TCP timeout). What happens if you try to do "vagrant ssh lb3x01"?

@sdargoeuves
Copy link
Contributor Author

sdargoeuves commented Nov 12, 2024

Good suggestions, thanks for helping me with this!

  ~/co/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ vagrant ssh lb3x01             took  40s  netsim-main-lab with sa@sa-netlab01a
VM must be running to open SSH connection. Run `vagrant up`
to start the virtual machine.

  ~/co/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯                                took  18s  netsim-main-lab with sa@sa-netlab01a

So it took 18s for it to fail. But the netlab connect lb3x01 works great:

  ~/co/netsim-main-lab on   revival_q3_2024 ⇡5 !4 ❯ netlab connect lb3x01                      netsim-main-lab with sa@sa-netlab01a
Connecting to 10.194.56.101 using SSH port 22
Last login: Mon Oct  7 11:49:35 2024 from 10.194.50.6
[vagrant@lb3x01:Active:Standalone] ~ #

If I go back to the topology, this is the definition of lb3x01:

groups:
[...]
  unprovisioned:
    members: [ lb3x01 ]

nodes:
  # Load Balancer Site 3
  lb3x01:
    id: 36 # to get the ip address .101 (36+65)
    libvirt.uuid: 8e7604de-b67f-41ec-b7ef-3d14a167a04e
    box: f5/bigip
    device: linux
    provider: libvirt
    memory: 4096
    cpu: 2

@sdargoeuves
Copy link
Contributor Author

sdargoeuves commented Nov 12, 2024

I can't remember if on this current lab I have 'altered' the state of vagrant.
Let me explain, due to the nature of that device, I have a script to take a backup of a virsh image, and replace the image of that box created during the netlab up command 🙈 for licensing reason 🙉
I know once I've done that, it affects some commands, like netlab down only partially works: I had to do the virsh destroy and virsh undefine to fully destroy the lab

It could be the reason for this. I will restart the lab in the next few days, and will try again BEFORE doing my mess!

@ipspace
Copy link
Owner

ipspace commented Nov 13, 2024

I can't remember if on this current lab I have 'altered' the state of vagrant.

Yeah, Vagrant doesn't like anyone messing around with what it expects to be running. I managed to get simple labs into a very similar state followed a container-induced crash of the TCP/IP stack (or whatever was going on).

Looking through the vagrant-libvirt code (and understanding ~10% of it), it seems like the DHCP lease might have expired (as in, the VM grabs an IP address via DHCP, but then does not renew it?). Would that make sense?

ipspace added a commit that referenced this issue Nov 13, 2024
@ipspace
Copy link
Owner

ipspace commented Nov 13, 2024

FWIW, added a note explaining why netlab status might take a while.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants