Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM python:3.9-alpine
COPY requirements.txt .
RUN apk add --no-cache git
RUN pip3 install -r requirements.txt

# default
ENV REPO_URL=https://github.com/netbox-community/devicetype-library.git
WORKDIR /app
COPY *.py ./

# -u to avoid stdout buffering
CMD ["python","-u","nb-dt-import.py"]
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,29 @@ To import only device by APC, for example:
./nb-dt-import.py --vendors apc juniper
```

## Docker build

It's possible to use this project as a docker container.

To build :

```
docker build -t netbox-devicetype-import-library .
```

The container supports the following env var as configuration :

- `REPO_URL`, the repo to look for device types (defaults to _https://github.com/netbox-community/devicetype-library.git_)
- `NETBOX_URL`, used to access netbox
- `NETBOX_TOKEN`, token for accessing netbox
- `VENDORS`, a space-separated list of vendors to import (defaults to None)

To run :

```
docker run -e "NETBOX_URL=http://netbox:8080/" -e "NETBOX_TOKEN=98765434567890" netbox-devicetype-import-library
```

## 🧑‍💻 Contributing

We're happy about any pull requests!
Expand Down
3 changes: 2 additions & 1 deletion nb-dt-import.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@
import settings

REPO_URL = settings.REPO_URL

parser = argparse.ArgumentParser(description='Import Netbox Device Types')
parser.add_argument('--vendors', nargs='+',
parser.add_argument('--vendors', nargs='+', default=settings.VENDORS,
help="List of vendors to import eg. apc cisco")
parser.add_argument('--url', '--git', default=REPO_URL,
help="Git URL with valid Device Type YAML files")
Expand Down
6 changes: 6 additions & 0 deletions settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
NETBOX_URL = str(os.getenv("NETBOX_URL"))
NETBOX_TOKEN = str(os.getenv("NETBOX_TOKEN"))

# optionnally load vendors through a space separated list as env var
try:
VENDORS = os.getenv("VENDORS").split(" ")
except AttributeError:
VENDORS = None

MANDATORY_ENV_VARS = ["REPO_URL", "NETBOX_URL", "NETBOX_TOKEN"]

for var in MANDATORY_ENV_VARS:
Expand Down