Skip to content

Commit ed737e2

Browse files
authored
Merge pull request #33 from rsp2k/master
Add SLUGS option to specify a space-separated list of device_type slug…
2 parents eaf8f03 + b2c20b2 commit ed737e2

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ NETBOX_TOKEN=
33
REPO_URL=https://github.com/netbox-community/devicetype-library.git
44
REPO_BRANCH=master
55
IGNORE_SSL_ERRORS=False
6+
#SLUGS=c9300-48u isr4431 isr4331

nb-dt-import.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import argparse
99
import os
1010
import settings
11+
import sys
1112

1213

1314
counter = Counter(added=0, updated=0, manufacturer=0)
@@ -54,7 +55,8 @@ def getFiles(vendors=None):
5455
return files, discoveredVendors
5556

5657

57-
def readYAMl(files):
58+
def readYAMl(files, **kwargs):
59+
slugs = kwargs.get('slugs', None)
5860
deviceTypes = []
5961
manufacturers = []
6062
for file in files:
@@ -68,6 +70,11 @@ def readYAMl(files):
6870
data['manufacturer'] = {}
6971
data['manufacturer']['name'] = manufacturer
7072
data['manufacturer']['slug'] = slugFormat(manufacturer)
73+
74+
if slugs and data['slug'] not in slugs:
75+
print(f"Skipping {data['model']}")
76+
continue
77+
7178
deviceTypes.append(data)
7279
manufacturers.append(manufacturer)
7380
return deviceTypes
@@ -388,19 +395,21 @@ def main():
388395

389396
VENDORS = settings.VENDORS
390397
REPO_URL = settings.REPO_URL
391-
REPO_BRANCH = settings.REPO_BRANCH
392398

399+
SLUGS = settings.SLUGS
400+
REPO_BRANCH = settings.REPO_BRANCH
393401

394402
parser = argparse.ArgumentParser(description='Import Netbox Device Types')
395403
parser.add_argument('--vendors', nargs='+', default=VENDORS,
396404
help="List of vendors to import eg. apc cisco")
397405
parser.add_argument('--url', '--git', default=REPO_URL,
398406
help="Git URL with valid Device Type YAML files")
407+
parser.add_argument('--slugs', nargs='+', default=SLUGS,
408+
help="List of device-type slugs to import eg. ap4431 ws-c3850-24t-l")
399409
parser.add_argument('--branch', default=REPO_BRANCH,
400410
help="Git branch to use from repo")
401411
args = parser.parse_args()
402412

403-
404413
try:
405414
if os.path.isdir('./repo'):
406415
print(f"Package devicetype-library is already installed, "
@@ -421,8 +430,8 @@ def main():
421430

422431

423432
print(str(len(vendors)) + " Vendors Found")
424-
print(str(len(files)) + " Device-Types Found")
425-
deviceTypes = readYAMl(files)
433+
deviceTypes = readYAMl(files, slugs=args.slugs)
434+
print(str(len(deviceTypes)) + " Device-Types Found")
426435
createManufacturers(vendors, nb)
427436
createDeviceTypes(deviceTypes, nb)
428437

settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
# optionnally load vendors through a space separated list as env var
1212
VENDORS = os.getenv("VENDORS", "").split()
1313

14+
# optionally load device types through a space separated list as env var
15+
SLUGS = os.getenv("SLUGS", "").split()
16+
17+
1418
MANDATORY_ENV_VARS = ["REPO_URL", "NETBOX_URL", "NETBOX_TOKEN"]
1519

1620
for var in MANDATORY_ENV_VARS:

0 commit comments

Comments
 (0)