Junoscfg (Python)
Convert and validate Junos configurations between JSON, structured, YAML, and display set formats.
Originally inspired by the Ruby Junoser gem, now a comprehensive Junos configuration toolkit.
Installation
pip install junoscfg
Usage
CLI
# Convert structured config to set commands
junoscfg -i structured -e set config.conf
# Convert JSON to set commands
junoscfg -i json -e set config.json
# Convert to structured format
junoscfg -e structured config.set
# Read from stdin
echo '{"configuration":{"system":{"host-name":"test"}}}' | junoscfg -i json -e set
# Transform YAML for Ansible (literal extraction)
junoscfg edityaml ansibilize -p "addr:interfaces.interface[*].name" config.yaml
# Offset mode for multi-router deployments (generates ipmath expressions)
junoscfg edityaml ansibilize -P "addr:interfaces.interface[*].unit[*].family.*.address[*].name" config.yaml
# Anonymize all sensitive data
junoscfg -i json -e set --anonymize-all config.json
# Anonymize with regex patterns (e.g. match site codes)
junoscfg -e set --anonymize-sensitive-patterns 'LAX\d+' config.json
# Retrieve XSD dump and generate schema artifacts
echo "<rpc> <get-xnm-information> <type>xml-schema</type> <namespace>junos-configuration</namespace> </get-xnm-information> </rpc>" | ssh -Csp 830 router.example.com netconf > netconf.xml
junoscfg schema generate netconf.xml -o ./artifacts/
Python API
from junoscfg import convert_config, Format, validate_json
# Convert between any format pair
result = convert_config(
'{"configuration":{"system":{"host-name":"test"}}}',
from_format=Format.JSON, to_format=Format.SET,
)
# Validate a JSON config
result = validate_json('{"configuration":{"system":{"host-name":"test"}}}')
print(result.valid) # True
# Convert with strict field-level validation (raises on invalid enum/pattern/IP values)
result = convert_config(source, from_format=Format.JSON, to_format=Format.SET, strict=True)
# Anonymize a configuration
from junoscfg.anonymize import anonymize
from junoscfg.anonymize.config import AnonymizeConfig
config = AnonymizeConfig(ips=True, passwords=True, salt="my-salt")
config.expand_all()
ir = {"configuration": {"system": {"host-name": "router1", "name-server": [{"name": "8.8.8.8"}]}}}
result = anonymize(ir, config)
Documentation
For full documentation, install the docs dependencies and run:
uv sync --group docs
uv run mkdocs serve
Then open http://127.0.0.1:8000.
Key sections:
- Getting Started — Installation and usage examples
- User Guide — Conversion, validation, and CLI reference
- API Reference — Auto-generated Python API docs
- Architecture — Design decisions and schema internals
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
junoscfg-0.5.10.tar.gz
(2.3 MB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file junoscfg-0.5.10.tar.gz.
File metadata
- Download URL: junoscfg-0.5.10.tar.gz
- Upload date:
- Size: 2.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9cf8d6e5ed2ef7583262f29d5302beb0000867bdadcb7b58fe3e4329f24fa74
|
|
| MD5 |
d92a89d28453dd68aa47d4c830929582
|
|
| BLAKE2b-256 |
f86815352524fb1b23430f829e41b9dd13db11993cc997b55266a20d1b689c00
|
File details
Details for the file junoscfg-0.5.10-py3-none-any.whl.
File metadata
- Download URL: junoscfg-0.5.10-py3-none-any.whl
- Upload date:
- Size: 2.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32255126c3e418945a386c3f6dfcae8edb3ab974e2f739bf66497a05648ec44e
|
|
| MD5 |
a8f18109e5e14cd4a7cf08cd3aea90cd
|
|
| BLAKE2b-256 |
570be92e1be6bcdab28766514489f90dd04a007df15c537a416b0ea5a02e4cd4
|