Device-Type-Library-Import icon indicating copy to clipboard operation
Device-Type-Library-Import copied to clipboard

KeyError: 'slug' if you specify an argument in '--slugs'

Open ShadowSZ72 opened this issue 2 years ago • 2 comments
trafficstars

If you run the script with the argument model-type ./nb-dt-import.py --slugs cisco-ws-c2960-24tc-l

Then I will get an error:

Traceback (most recent call last):
  File "/home/username/reps/Device-Type-Library-Import/./nb-dt-import.py", line 54, in <module>
    main()
  File "/home/username/reps/Device-Type-Library-Import/./nb-dt-import.py", line 32, in main
    module_types = sdr.parse_files(files, slugs=args.slugs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/reps/Device-Type-Library-Import/repo.py", line 101, in parse_files
    if slugs and True not in [True if s.casefold() in data['slug'].casefold() else False for s in slugs]:
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/reps/Device-Type-Library-Import/repo.py", line 101, in <listcomp>
    if slugs and True not in [True if s.casefold() in data['slug'].casefold() else False for s in slugs]:
                                                      ~~~~^^^^^^^^
KeyError: 'slug'

I think it's because of "module-types". The files in it do not have the "slug" attribute.

ShadowSZ72 avatar Oct 17 '23 07:10 ShadowSZ72

A temporary fix is:

diff --git a/nb-dt-import.py b/nb-dt-import.py
index 8255528..5b32d4a 100755
--- a/nb-dt-import.py
+++ b/nb-dt-import.py
@@ -29,7 +29,7 @@ def main():
         files, vendors = settings.dtl_repo.get_devices(
             f'{settings.dtl_repo.repo_path}/module-types/', args.vendors)
         settings.handle.log(f'{len(vendors)} Module Vendors Found')
-        module_types = settings.dtl_repo.parse_files(files, slugs=args.slugs)
+        module_types = settings.dtl_repo.parse_files(files, slugs='')
         settings.handle.log(f'{len(module_types)} Module-Types Found')
         netbox.create_manufacturers(vendors)
         netbox.create_module_types(module_types)`

Torstein-Eide avatar Oct 26 '23 10:10 Torstein-Eide

The interesting thing is that if you give only vendor modules are imported without complaints. The issue ocurs only on slugs.

zeridon avatar Mar 05 '24 13:03 zeridon