This release is a pre-release and may not be stable for production use.
Robot Framework RADKit Library
A Robot Framework library for interacting with Cisco RADKit-connected devices, providing keywords for authentication, device inventory, parallel command execution, port forwarding, and Genie-based structured parsing.
Installation
RADKit client packages are hosted on a Cisco-internal PyPI index. Configure pip accordingly:
pip install --extra-index-url https://radkit.cisco.com/pip robotframework-radkit
For Genie parsing support (optional):
pip install --extra-index-url https://radkit.cisco.com/pip robotframework-radkit[genie]
Prerequisites
- Python 3.10+
- A RADKit identity with enrolled certificates (see RADKit documentation)
- Access to a RADKit service (remote service instance)
Quick Start
*** Settings ***
Library RADKitLibrary
*** Variables ***
${SERVICE_SN} abcd-1234-efgh
*** Test Cases ***
Query Device Inventory
# identity can also be set via RADKIT_IDENTITY env var
RADKit Certificate Login identity=user@cisco.com
RADKit Select Service ${SERVICE_SN}
@{devices}= RADKit Device Inventory
Log Many @{devices}
Execute Show Version
RADKit Certificate Login identity=user@cisco.com
RADKit Select Service ${SERVICE_SN}
${result}= RADKit Execute show version devices=router1
Log ${result}[router1]
Keywords
Connection Management
| Keyword | Description |
|---|---|
RADKit Client Version |
Return installed radkit_client version |
RADKit Certificate Login |
Authenticate to RADKit cloud via certificates |
RADKit Disconnect |
Disconnect from RADKit cloud (all or specific identity) |
RADKit Select Service |
Connect to a RADKit service by serial |
RADKit Timeout |
Set execution timeout (default: 300s) |
Device Management
| Keyword | Description |
|---|---|
RADKit Device Inventory |
Retrieve device inventory (with optional filter) |
RADKit Select Devices |
Select default devices for subsequent execute calls |
Command Execution
| Keyword | Description |
|---|---|
RADKit Execute |
Execute CLI commands on one or more devices in parallel |
Port Forwarding
| Keyword | Description |
|---|---|
RADKit Port Forward to Device |
Set up TCP port forwarding to a remote device |
RADKit Stop Port Forward |
Stop an active port forwarder |
Genie Parsing (optional, requires robotframework-radkit[genie])
| Keyword | Description |
|---|---|
RADKit Genie Parse |
Parse command output using Genie parsers |
RADKit Genie Learn |
Learn device models (structured data) via Genie |
RADKit Genie Fingerprint |
Auto-detect device OS for subsequent Genie operations |
Authentication
The library uses certificate-based authentication. Credentials can be provided as keyword arguments or through environment variables:
| Environment Variable | Description |
|---|---|
RADKIT_IDENTITY |
Your Cisco email address |
RADKIT_CERT_PATH |
Path to your RADKit certificate |
RADKIT_KEY_PATH |
Path to your private key |
RADKIT_CA_PATH |
Path to CA certificate chain |
RADKIT_CLIENT_PRIVATE_KEY_PASSWORD_BASE64 |
Base64-encoded private key passphrase |
RADKIT_CLIENT_PRIVATE_KEY_PASSWORD |
Cleartext private key passphrase |
Optional pyATS Integration
When pyats.robot.pyATSRobot is loaded in the test suite, the RADKit Port Forward to Device keyword can optionally update testbed device connection entries via the testbed_device and testbed_conn parameters. This feature is automatically available when pyATS is installed; no additional configuration is needed.
*** Settings ***
Library pyats.robot.pyATSRobot
Library RADKitLibrary
*** Test Cases ***
Port Forward With Testbed Update
RADKit Certificate Login identity=user@cisco.com
RADKit Select Service ${SERVICE_SN}
RADKit Port Forward to Device linuxdevice local_port=0
... destination_port=22 testbed_device=linux_server testbed_conn=cli
connect to device "linux_server" via "cli"
Usage Examples
Execute Commands on Multiple Devices
RADKit Select Service ${SERVICE_SN}
@{devices}= Create List router1 router2 router3
${result}= RADKit Execute show version devices=${devices}
# Access output: ${result}[router1], ${result}[router2], etc.
Execute Multiple Commands
@{commands}= Create List show version show clock
${result}= RADKit Execute ${commands} devices=router1;router2
# Access: ${result}[router1][show version], ${result}[router1][show clock], etc.
Use Inventory Filters
${inventory}= RADKit Device Inventory raw=True
${subset}= Evaluate $inventory.filter("name", "PE*").filter("device_type", "IOSXE")
${result}= RADKit Execute show version devices=${subset}
Parse Output with Genie
@{devices}= Create List router1 router2
RADKit Genie Fingerprint ${devices}
${parsed}= RADKit Genie Parse commands=show version devices=${devices}
# Access parsed data: ${parsed}[router1][show version][version]
Development
Setup Development Environment
git clone https://github.com/oboehmer/robotframework-radkit.git
cd robotframework-radkit
# Install in development mode (includes genie dependencies)
uv sync --extra dev --extra genie
# Install pre-commit hooks
pre-commit install
Running Tests
# Run all tests
pytest tests/
# Run unit tests only
pytest tests/unit/test_unit_*.py
# Run with coverage
pytest --cov=RADKitLibrary tests/
# Run linters
ruff check .
mypy .
bandit -r RADKitLibrary/
Code Quality
This project uses:
- ruff for linting and formatting
- mypy for type checking
- bandit for security analysis
- pytest for testing
- pre-commit for git hooks
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Run the test suite
- Submit a pull request
Resources
License
This project is licensed under the Mozilla Public License 2.0 - see the LICENSE file for details.
Authors
- Oliver Boehmer (@oboehmer)
Release files for robotframework-radkit 0.1.0rc1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| robotframework_radkit-0.1.0rc1.tar.gz | 277.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| robotframework_radkit-0.1.0rc1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 305.1 kB
Release files / robotframework_radkit-0.1.0rc1.tar.gz
| Download URL | robotframework_radkit-0.1.0rc1.tar.gz |
|---|---|
| Size | 277.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3018e11d6282568d31bd14033356b7187e224a5cf8b14f02624a3775ca472500
|
|
BLAKE2b-256 checksum How to use checksums |
0154d1b35eada0da182d7ba3d349f4d789a90dfacef0e0efc9c25b9d35fa6a08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / robotframework_radkit-0.1.0rc1-py3-none-any.whl
| Download URL | robotframework_radkit-0.1.0rc1-py3-none-any.whl |
|---|---|
| Size | 28.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8260d4b93f7b24f1396312d396e0108732a8352357f97cb661225b0606eafb40
|
|
BLAKE2b-256 checksum How to use checksums |
a31263a0c4ddbf5716e5d478908d246c9894de9b2d20789c5ee3b0931f63a3ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency log