Release Notes
1.8.7
This release features faster installers and a lower installation footprint.
Features:
RAD-1757: Packaging: add
--service-only
CLI option to Linux installer
Documentation:
RAD-1645: Docs: minor fixes post-1.8.5
RAD-1651: Docs: cannot import
oauth_connect_only
fromradkit_client.sync
RAD-1754: Docs: updated Ansible Collection doc for Ansible Galaxy release
Fixes:
RAD-166: Control: it is possible to enroll the Service when Cloud is disabled
RAD-232: Client:
HTTPUploadParameters
disregards theverb
parameterRAD-1669: Service: some settings saved to TOML but not applied until reload
RAD-1670: Service/UI: missing details about Service certificate
RAD-1674: Client: HTTP proxy incompatible with some Catalyst Center RSA versions
RAD-1693: Service/GUI: traceback instead of GUI message on GUI start
RAD-1707: Genie: parses all entries in a result instead of filtered results
RAD-1712: Console: remove 1.7.x intro text
RAD-1714: Console: fails to recover from
AuthenticationFailedError
when discovering a ServiceRAD-1767: Console: previous SR context still in use after switching to a new Service ID
RAD-1772: Service: CUCM extract postprocessor does not handle binary files properly
RAD-1775: Service/GUI:
[Errno 13] Permission denied
when starting GUI on Windows
1.8.5
Starting with this release, RADKit is now available on PyPI.org (see pip installation for details).
Features:
RAD-1619: Service/UI: shorten Device Type display names and show full names on hover
Fixes:
RAD-1594: Service/UI: cannot control
http2_enabled
setting in WebUIRAD-1630, RAD-1634: Packaging: missing stubs in
radkit_common
RAD-1635: Service: remove dependency on
id.cisco.com
RAD-1642: Packaging: incorrect platform tag for
musllinux_1_1_aarch64
wheels
1.8.3
Features:
RAD-1435: Client/UI: add device description to proxy inventory page
RAD-1534: Client: dynamically create and manage an integrated Service
RAD-1556: Service: stop RADKit Windows Service automatically when upgrading
Documentation:
RAD-1595: Docs: most entries in the Compatibility support matrix are cropped
RAD-1610: Docs: verification scripts are missing from the Code Signing page
Fixes:
RAD-1465: Console: remove deprecated commands with underscore from CLI completion
RAD-1508: Service/UI: minimum generated password length constraint is not shown
RAD-1518: Service/UI: External Sources are not visible in Remote User modals
RAD-1527: Service/UI: make YAML textarea auto-fill vertical screen space
RAD-1567: Service/UI: bulk activate/deactivate breaks after first use
RAD-1573: Service/GUI: not working when started as Windows Service
RAD-1575: Service/UI: checkbox misbehaving after select & import from Catalyst Center
RAD-1576: Packaging: Windows installer fails to close if user aborts installation
RAD-1585: Service/GUI: fails to start with “Settings have already been loaded”
RAD-1587: Service/UI: Apply is broken in Settings
RAD-1592: Client: wheel is missing
asyncssh
dependencyRAD-1598: Client: fix TLS connection error in
CatalystCenter
helper class
1.8.1
Features:
RAD-310: Client: SSH proxy multiplexer
RAD-315: Service/Client: enforce password exclusion list
RAD-381: Service: backup restore functionality
RAD-1267: Client: exec now creates one independent RPC call per device
RAD-1366: Service/UI: device search query language
RAD-1424: Service: allow explicit usernames in device template YAML
RAD-1455: Client: allow adding custom endpoints to the Client proxy webserver
RAD-1471: Client:
.map()
function added toExecResponse
RAD-1474: Service: dbshell now allows to specify a script file
RAD-1475: Client:
encrypt
anddecrypt
now also work as functionsRAD-1477: General: preliminary support for Python 3.13 (no official support yet)
RAD-1478: Service: new setting to disable HTTP2 when connecting to the device
RAD-1497: Client:
success
andshow_progress
added toExecResponse
RAD-1504: Service: passwordless HTTP support for NSO RestConf API
Fixes:
RAD-673: Service: log messages cleanup
RAD-1338: Client: add CSPC credentials warning in HTTP proxy
RAD-1385: Service/UI: UI reloads on network errors
RAD-1390: Service/UI: long names cause notification text overflow
RAD-1410: Service: does not recover after loss of Cloud connectivity
RAD-1422: Service: missing parts of proxied inventory page on Catalyst Center 2.3.7.6
RAD-1425: Service/UI: Select All doesn’t produce a confirmation toast in External Sources
RAD-1433: Service/UI: on Safari, SSO enrollment fails to redirect to RADKit Cloud Access
RAD-1434: Service: cannot import devices from vManage
RAD-1456: Service/UI: show helpful message on TLS verify error when importing inventory
RAD-1457: Service/UI: Safari doesn’t let navigate off the WebUI
RAD-1458: Service/GUI: GUI app broken on Windows
RAD-1485: Service/UI: wrong time slice calculation when creating remote user
RAD-1487: Service/UI: alignment issues on high DPI resolution
RAD-1490: Service/UI: remove Service width limit
RAD-1510: Service/UI: “clear form” button in remote users tab produces validation error
RAD-1511: Service:
ModuleNotFoundError: No module named 'python_multipart'
RAD-1514: Service: crash while retrieving OpenID configuration
RAD-1515: Service: enrollment procedure stops due to “token not yet valid”
RAD-1536: Service: “import might be incomplete” when importing devices from CSPC
RAD-1544: Service: database truncation results in data loss and database corruption
1.8.0
Release summary:
Device support: CUCM (import), FMC (import), CPS, CML, Splunk, WSA/ESA/SMA (passwordless)
CSV import and export via Service WebUI
Crosswork and NSO support in Console
ControlAPI integration with Client Python API
External source (TACACS+) authentication for remote users
Support for Hashicorp Vault as external source
Granular Terminal restrictions
Notable or breaking changes:
Python 3.8 is no longer supported (EOL)
Data files written by RADKit 1.4.x or earlier can no longer be migrated directly
Genie 24.x and lower are no longer supported due to 3rd party dependency constraints
Features:
RAD-79: Service: connector for Cisco Unified Call Manager (CUCM)
RAD-414: Service: external sources config templates
RAD-415: Service: external sources plugins
RAD-430: Service: support for Hashicorp Vault as external source
RAD-508: Service: connector for Firewall Management Center (FMC)
RAD-527: Service/UI: improved UX for password policy change
RAD-596: Service: include other Catalyst Center nodes when importing
RAD-605: Control:
--create-missing-labels
when creating/updating devices/usersRAD-611, RAD-614: Service/UI: CSV upload and export
RAD-680: Genie: leverage RADKit device type for parsing/learning
RAD-690: Service: support for Cisco Policy Suite (CPS)
RAD-705: Service: HTTP passwordless support for Secure Web Appliance, Secure Email Appliance and Secure Email and Web Manager
RAD-754: Client: new
client.support_package()
commandRAD-792: Service: support external source authentication for remote users
RAD-860: Client/Console: ability to close and re-authenticate direct connections
RAD-863: Console: new
platform crosswork
andplatform nso
subcommandsRAD-911: Service: improved SSO enrollment workflow
RAD-912: Service: setting to output RADKit logs in JSON format
RAD-957: Console: support passing E2EE session verification token
RAD-972: Client/Control: ability to create
ControlAPI
from aDevice
object of typeRADKIT_SERVICE
RAD-994: Service: support for Cisco Modeling Labs (CML)
RAD-1021: Service: granular Terminal restrictions (exec, interactive, upload, download)
RAD-1054: Client/Proxy: new “Refresh” button to reload the inventory
RAD-1069: Control: expose connector-specific config options
RAD-1082: Client/Proxy: add a Search box to the
index.proxy
pageRAD-1123: Console: allow to authenticate with Service using access token
RAD-1148: Service: add a CSV Template download button
RAD-1153: Service: HTTP passwordless support for CSPC
RAD-1157: Service/UI: add device templates to cart screen
RAD-1179: Client/Service: add setting to change session logs directory
RAD-1197: Service: support for Splunk HTTP API and WebUI
RAD-1344: Client: new helper functions and pipes (encryption, Base64, bytestring, …)
RAD-1359: Service: API for duplicating devices
Documentation:
RAD-776: Genie: document how to add local parsers to
radkit-genie
installationRAD-777: Control: reference to
device-object
does not resolve in API docsRAD-999: Docs: fix
radkit_genie.learn
example in documentationRAD-1193: Client/Service: improved rendering of Pydantic models in HTML docs
RAD-1247: Docs: document telemetry setting
RAD-1280: Docs: document using Control ServiceAPI from within RADKit Client
RAD-1281: Docs: device template documentation
RAD-1284: Docs: general improvements
RAD-1284: Docs: general improvements
RAD-1294: Docs: RADKit Swagger API queries
RAD-1394: Docs: improve security documentation with connectivity details
Fixes:
RAD-256: Service/UI: robustness improvement when time differs between Service and browser
RAD-303: Client: some user-facing classes missing from
radkit_client
RAD-780: Packaging: Linux installer fails to resolve user permissions on vManage
RAD-1162: Service/UI: cart metadata validation is overwritten by checkboxes
RAD-1176: Service: “permission denied” error in browser after Service restart
RAD-1184: Service: add a template activator checkbox to reset a value
RAD-1269: Control/Service: admin naming scheme not properly enforced
RAD-1270: Client: restore error logging in access client and admin client
RAD-1272: Control/Service: trying to update non-existent user causes HTTP 500
RAD-1273: Control: not possible to enable/disable existing admin user
RAD-1274: Control/Service: add detailed error when trying to update non-existent admin
RAD-1276: Control: service certificate path is not taken into account
RAD-1283: General: release pin on
httpx
RAD-1288: Service/UI: improvements to CSV screen
RAD-1289: Control:
NameError: name 'StoredAdmin' is not defined
RAD-1292: Service: endless certificate renewal loop in certain conditions
RAD-1296: Service: won’t start on Windows due to
WinError 123
RAD-1305: Service: Go Up arrow component missing from External Sources and Device Templates
RAD-1307: Service/UI: error in Javascript Console when running as integrated
RAD-1308: Client:
--domain
not honored bynetwork-console
subcommandRAD-1311: Service: crashes when supplying unexpected settings level value
RAD-1315: Service/UI: ghost scrollbar when zooming on Safari
RAD-1318: Service/UI: Create Remote Users value resetting works partially
RAD-1319: Service/UI: E2EE Validation Token constraints should be enforced in the UI
RAD-1328: Service/UI: wrong total number of devices to import from CCC
RAD-1342: Service/UI: settings page not loading
RAD-1343: Client: Client-based control API improvements
RAD-1345: Service: CSPC HTTP authentication fails if username/password are the same
RAD-1348: Common: remove DEV domain definition (no longer in use)
RAD-1356: Service: return better exception for some HTTP/TLS errors
RAD-1365: Service/UI: notifications alignment broken in dropdown
RAD-1369: Genie:
_exclude
entry moved from.data
to.exclude
RAD-1404: Service: inventory import might fail when handling duplicate device names
1.7.6
Compatibility:
Python 3.8 has reached end of life and is no longer supported as of RADKit 1.7.6.
Fixes:
RAD-763: Client: adjust to renamed
pysnmp
and latestgenie
RAD-1088: General: pin
httpx<0.28.0
to work around errors due to removed APIRAD-1098: Client: fix
AttributeError: module 'h2' has no attribute 'connection'
RAD-1124: General: relax pin on
pydantic-settings
1.7.5
Docs:
RAD-776: Genie: document how to add local parsers to
radkit-genie
installation
Fixes:
RAD-1019: Client/Service: bug in H2 RPC back-pressure breaks some file transfers
RAD-1022: Service/UI: jumphost cannot be unset or applied in bulk
1.7.4
Fixes:
RAD-935: Service/UI: unable to activate user in TIME SLICE mode in update modal
RAD-937: Service/GUI: showing status “stopped” while running as a Windows service
RAD-966: Service: database migration error when upgrading from 1.5.x to 1.7.x
1.7.3
Fixes:
RAD-924: Service:
cannot import name 'AF_UNIX' from 'socket'
on Windows
1.7.2
Warning
RADKit Service 1.7.1 and 1.7.2 fail to start on Windows due to RAD-924. Please upgrade to 1.7.3 to get the fix.
Fixes:
RAD-910: Service: remote user needs Cloud enabled for Direct+SSO to work
1.7.1
Notable or breaking changes:
Improvements to the Linux installer:
No longer defaults to an installation type; either pass
--systemd
or--no-systemd
or be asked interactively.The
--accept-eula
and--default-install
options have been merged into a single--accept-all
option (requires to pass either--systemd
or--no-systemd
).A warning is now printed about pre-1.7.x
systemd
installations, and a procedure to migrate the data files has been added to the documentation.
Features:
RAD-34 + RAD-643: Service: mark devices as jumphost explicitly
RAD-487: Service: new
radkit-service import-db
commandRAD-508: Service: connector for FMC inventory import
RAD-513: Client: smart selection of OAuth provider for RADKit Cloud
RAD-680: Genie: leverage RADKit device type for parsing/learning
RAD-756: Console: only suggest to re-attach to connections in progress
RAD-774: Service: restrict connection mode per user
RAD-857: Client/Service: accept new domain definitions through environment variable
RADKIT_DOMAIN_DEFINITION
RAD-849: Service: support new login sequence on Catc313
Documentation:
RAD-779: Doc: various improvements to the Linux and Compatibility sections
RAD-847: Doc:
RADKIT_CONTROL_URL
should beRADKIT_CONTROL_SERVICE_URL
insteadRAD-875: Doc: outdated image to illustrate RADKit Client in Jupyter notebook
Fixes:
RAD-172: Service/Client UI: update front-end dependencies
RAD-240: Control: new admin account creation and password lifecycle
RAD-389: Service: fix Internal Server Error if bulk update fails jumphost validation
RAD-435: Client: multi-device/multi-OID SNMP need to conform to the other APIs
RAD-566: Client/Service: terminate idle H2 multiplexing connections
RAD-667: Service: CUCM passwordless UI auto-login stopped working
RAD-689: Service: cosmetic issues while importing
RAD-728: Service: allow underscore in “host” device field
RAD-732: Service: more improvements to PID file logic
RAD-736: Service: additional protection against logging passwords as part of stream data
RAD-743: Service: SNMP community string should be a password-type field
RAD-749: Service: device hosts can be a plain IPv6 address
RAD-760: Client: fixed regex for
platform ftd
RAD-769: Service: fix IOS-XE jumphost SSH command
RAD-770: Service: protocol and device name are swapped in session logs
RAD-781: Service: several issues related to lockfiles/certificate handling
RAD-791: Console: support
service_direct
for on-prem usageRAD-821: Client: rename
OAuthEnabledTools.CCC
toOAuthEnabledTools.SWIMS
RAD-831: Console: closes if there is an error while connecting to CCC
RAD-838: Console: CCC does not work on domains other than PROD
RAD-842: Client: HTTP overlay headers are not taken into account for proxy
RAD-844: Service: if a Forwarder is down, Service should try other Forwarders
RAD-856: Service: fix External Sources table sorting bugs
RAD-865: Service: log database migrations and fix dbshell instructions
RAD-876: Service: fix docstring for
DatabaseDevicesBackend.start_interaction
RAD-880: Client: missing API export for
certificate_login
RAD-881: Service:
aiohttp
not found when enrolling through a proxy
1.7.0
Release summary:
The documentation has been reorganized (more work is needed, feedback is welcome)
New Python 3.11 environment for all installers (Windows, macOS and Linux)
New Windows installer with multiple improvements including:
detection and warning about running processes;
addition of RADKit CLI tools to the system PATH;
automated installation of RADKit as a Windows Service;
please make sure you read the documentation.
Improved Linux installer:
supports system-wide installation + RADKit Service set up as a
systemd
service;please make sure you read the documentation.
New device types with HTTP and passwordless login support:
UCS CIMC
Nexus Dashboard
Intersight Appliance
Hyperflex
NCS-2000
Routed PON
Cisco DNA Center renamed to Catalyst Center to follow current branding
New device import capabilities:
vManage
Wireless LAN Controller (Cat9800)
import device credentials directly from Catalyst Center
Vault integration for storing device credentials (experimental):
CyberArk AIM
CyberArk Conjur
Metadata (external attributes) editor in Add/Edit Device properties screen
TACACS+ authentication support for Service admin users (experimental)
Performance improvements for Client autocomplete, Terminal/exec and SNMP
Hybrid direct/cloud model (direct connect with SSO-based authentication)
Basic scripting in Network Console
Improved OCSP logic for certificate revocation checks
Netconf support marked as experimental until it is properly reworked
Notable or breaking changes:
The RADKit Service GUI (the native Tk frontend with start/configure/log buttons) and Medic GUI are no longer supported on Linux.
This is due to a library compatibility problem. We are working on fixing this, but it will likely remain unsupported for some time.
Symlinks on Linux are now created under a directory dedicated to RADKit. The user is responsible for adding them to the PATH.
Improved and customizable OCSP certificate revocation check logic in RADKit Client and Service:
OCSP is now disabled on Python 3.9 (it can’t be done reliably on those versions due to missing peer certification information in the SSL APIs).
New setting
cloud_client.ocsp.methods
to adjust the OCSP policy. Defaults to[STAPLER, PASS]
= delegate OCSP queries to RADKit Cloud and fail-open on error.
Bootstrap-related changes:
The
radkit-service run
CLI command no longer automatically bootstraps the Service on first run if thesuperadmin
password is provided through the environment.The
radkit-service bootstrap
command is now discouraged in favor of using RADKit Control.Another option is to first run
radkit-service run
and then bootstrap interactively using the WebUI.
In RADKit Client
Device.attributes.external
has been renamed toDevice.attributes.metadata
.Several breaking changes were necessary during the RADKit Client rework:
Identity
now represents only a Cloud identity; it is not used in direct RPC. Given that this is aNewType
, it is not breaking at runtime, only in typechecks.Service
now has both aname
and aservice_id
attribute. Thename
refers to the name within the inventory dict, whileservice_id
refers to the identity if this is a Cloud connected Service. Direct and in-memory connected Services don’t have aservice_id
.Instantiation of a Client object should now be done through
with Client.create() as client:
for stand-alone scripts. The old approach remains functional for backwards compatibility.service_direct()
now requires await()
when used in scripts.The import hook for the BDB integration now needs to be installed explicitly using
client.integrations.bdb.install_importhook()
.The
ClientConnectionMethod
enum no longer exists.
Features:
#3547: Packaging: new installers using Python 3.11 + revamped Windows installer
#3901: Client/Service: improved/customizable logic for OCSP revocation checks
#3915: Service: Service GUI should detect and manage the RADKit Windows Service
#3974: Service: UCS CIMC: new device type, HTTP support, passwordless login
#3975: Service: Nexus Dashboard: new device type, HTTP support, passwordless login
#3976: Service: Intersight Appliance: new device type, HTTP support, passwordless login
#3977: Service: Hyperflex: new device type, HTTP support, passwordless login
#4020: Service/UI: add sorting to External Sources table
RAD-44: Control: support Base64 encoding of the admin password
RAD-59: Service: Swagger support for NDB appliances
RAD-136: Service/GUI: more accurate PID file checks
RAD-246: Client/Service: session logs should embed all metadata in the log file
RAD-247: Client/Service: direct-connect with SSO-based credentials
RAD-257: Client/Service: SNMP streaming
RAD-272: Service: import inventory from Wireless LAN Controller
RAD-273: Service/UI: complex selector for OCSP settings
RAD-274: Service: NCS-2000: new device type, HTTP support, passwordless login
RAD-277: Service: import inventory from vManage
RAD-279: General: rename Cisco DNA Center to Catalyst Center
RAD-286: Client: add HTTP timeout parameter for BDB
run_script
commandRAD-307: Console: change terminal title to reflect the current interactive session
RAD-319: Client/Service: allow HTTP DELETE operation with a payload
RAD-325: Service: TACACS+ authentication for admin users
RAD-336: Service/UI: allow visualization and edition of individual device metadata
RAD-337: Service/UI: bulk add/modify/delete device metadata through cart
RAD-341: Service: support for CyberArk AIM
RAD-344: Service/API: accept
metaDataUpdate
instead ofmetaData
parameter inUpdateDevice
RAD-347: Service: support for CyberArk Conjur
RAD-348: Service/API: new API to retrieve the union of all metadata keys
RAD-365: Service: Catalyst Center import improvements
RAD-378: Console: support for initialization script and ability to pass a script on the CLI
RAD-383: Service: add more settings to WebUI and update outdated SNMP settings docs
RAD-394: Console: support
service_direct_with_sso
connection typeRAD-399: Service: encrypt sensitive fields such as proxy password in the settings file
RAD-410: Service: add a
radkit-service import-secrets
command, symmetrical toexport-secrets
RAD-427: Service: FDM: new device type, HTTP/API support, passwordless login
RAD-431: Console: implement log rotation
RAD-433: Client: add
wait()
method toEraseAuthenticationTokensResult
andHttpResponse
RAD-447: Console: add a
python-repl
command to go from Network Console into a full Client REPLRAD-460: Packaging: Linux installer support for adding as a
systemd
serviceRAD-471: Service/UI: add a “copy device name” button in the Devices table
RAD-472: Service: Routed PON: new device type, HTTP/REST support, passwordless login
RAD-475: Service/UI: Catalyst Center import simplification
RAD-515: Service: static password external source
RAD-527: Service/UI: password policy change UI improvements
RAD-594: Packaging: post-installation instructions after system-level Linux installation
RAD-626: Client: multiple cloud connections for client/domain combination with different authenticators
RAD-659: Client: API to overlay headers on every request going through the HTTP/SOCKS proxy
RAD-701: Client: add
is_ready
attribute toCloudConnection
for troubleshootingRAD-730: Service/UI: rename Cart to Bulk Editor
Documentation:
RAD-113: Doc: add section about browser compatibility
RAD-264: Doc: Linux system-level installation documentation (also applies to CSPC)
RAD-324: Doc: various documentation fixes
RAD-356: Doc: HTTP feature guide should no longer mention
allow_redirects
RAD-423: Doc:
start_capture
takes one argument in the documentationRAD-555: Doc: Swagger documentation improvement + examples
RAD-598: Doc: complete documentation rework for 1.7.0
RAD-616: Doc: document system and hardware requirements
RAD-638: Doc: dead link references to new doc layout
RAD-742: Doc: list of device types and supported protocols in Compatibility section
RAD-755: Doc: TACACS+ external source for admin authentication
Fixes:
#3570: Service: improved exec prompt detection performance
#4026: Service/UI: improved accessibility in External Sources and Settings
RAD-94: Service: script-friendly password prompt for “export to JSON” actions
RAD-95: Service/UI: dark mode jumps between normal and dark on refresh
RAD-128: Service/GUI: display Service logs and traceback before exiting
RAD-204: Service/Control: reorder some fields in the CSV template
RAD-255: Service: spurious traceback when device does not respond over HTTP proxy
RAD-263: Service: fix CSPC import error
RAD-267: Service: handle error during bulk import on CSPC when the password needs to be changed
RAD-271: Service: passwordless UI fails on Cisco DNA Center ESXi VA
RAD-276: Client/Service: SNMP bulk walk query time is too long
RAD-287: Service: multiple issues with CSV import
RAD-297: Client: accept
reset_after
parameter inDeviceDict.exec()
RAD-305: Console:
service ... no-
does not complete correctlyRAD-318: Client: fix slow completion on large (6000+) inventories
RAD-320: Service: do not strip whitespace from prompt detection output
RAD-322: Service: fix FMC websocket handling
RAD-323: Client: BDB client fails with unclear error when not on the Cisco network
RAD-333: Service: line wrapping issue in prompt detection
RAD-335: Service: “registry entries missing” during Windows service password update
RAD-339: Service: FMC 7.6.0 HTTP proxy failure: logs in then logs out
RAD-352: Service:
update_attributes()
fails with wrong UUIDRAD-355: Service/API: all the device metadata disappears when using bulk edit
RAD-357: Service: APIC passwordless does not refresh token
RAD-364: Service/UI: time reset for users behavior change
RAD-366: Service: fix APIC import when deselecting all the controllers
RAD-367: Service: fix allowed endpoints for CUCM HTTP proxy
RAD-368: Service/Control: fix traceback after an update on a UUID that does not exist
RAD-369: Service/UI: fix error on label update
RAD-380: Service/UI: fix console error on first change of device type
RAD-389: Service: Internal Server Error if bulk update fails jumphost validation
RAD-390: Service: describe OS error reason for Telnet and SSH PTY
RAD-397: Client/Service: HTTP is broken for CVOS
RAD-398: Client/Service: HTTP requests do not take
timeout
into accountRAD-400: Service: fix validation of auto-generated password field
RAD-405: Service:
RuntimeError
while browsing passwordless HTTPRAD-421: Service: does not error out immediately on invalid / weak webserver certificate
RAD-422: Service: webserver only presents leaf certificate in TLS handshake
RAD-425: Service: remove auto-bootstrap from
radkit-service run
RAD-426: Service: settings validation shows wrong error on save
RAD-428: Service: add new endpoints to CVOS whitelist
RAD-434: Service: WLC should use IOS-XE HTTP request updater implementation
RAD-441: Console: Network Console does not have its own session log directory
RAD-445: Service: HTTP UCS Manager updater should refresh token if expired
RAD-452: Service: rename the device type “Nexus” to “Nexus Dashboard”
RAD-453: Service/UI: protocols remain disabled after YAML is switched off in Settings
RAD-457: Service/UI: spurious error when credentials import is deselected
RAD-459: Service/GUI: make Service GUI unsupported on Linux
RAD-461: Service/UI: front-end performance improvements
RAD-463: Service: Cisco DNA Center HTTP API data fetch errors
RAD-464: Client/Service: E2EE session validation is broken
RAD-468: Service:
^C
during superadmin password input causesPromptInterruptedError
RAD-469: Service: improve bulk update performance
RAD-474: Service: ACI APIC device import is ineffective
RAD-477: Client: device sub-dictionaries are slow
RAD-478: Service: internal information should not be in device metadata shared to Client
RAD-479: Service: rename
Device.attributes.external
toDevice.attributes.metadata
RAD-481: Service: update password complexity defaults
RAD-485: Service: implement database safety constraints
RAD-490: Service: traceback if superadmin password from environment is incorrect
RAD-502: Service: fix the structure of the IP component in Settings
RAD-512: Client: force Duo for Cisco users when
cisco
provider is selectedRAD-514: Service/API: audit logging in background task in the
update_devices
endpointRAD-525: Service: exception and missing error code when vManage import fails
RAD-528: Client: client instance should be able to connect to a single domain using multiple identities
RAD-529: Service:
get-basic-inventory
fails with a traceback if external sources cannot be reachedRAD-532: Service: filter metadata when importing from controllers
RAD-533: Service: OSError on Windows when creating session log for direct connection over IPv6
RAD-534: Service/GUI: Service does not start after bootstrap
RAD-535: Service: import from controller does not display feedback when controller is unreachable
RAD-540: Console: banner indicating the change of CLI from underscore to dash
RAD-570: Console: crashes when Service ID is not fully lowercase
RAD-573: Service/GUI: error while synchronizing Service HTTPS
RAD-583: Console: crashes when trying to get Service ID from CSOne without being logged in
RAD-587: Service: various glitches while importing
RAD-628: Client:
readuntil_regex
does notunread
bytes after the matching stringRAD-631: Service/UI: cart sorting broken
RAD-636: Control: should allow reading admin password from file
RAD-639: Console: SR number is still assigned after logout
RAD-648: Client:
readuntil_regex
raisesasyncio.exceptions.IncompleteReadError
RAD-651: Client:
reauthenticate()
throws warning about being deprecatedRAD-671: Console: Fix CloudConnectionError when not logged in
RAD-678: Common: when cloud_connection is closed then re-opened, the Services become unreachable
RAD-679: Common: Client default domain should only change on
set_default_domain()
RAD-682: Client: tokens cannot be reauthenticated
RAD-685: Service: port number is not taken into account while importing from CC or APIC
RAD-687: Console:
platform ftd ...
should support FDM device type tooRAD-691: Client:
CatalystCenter
class should always use freshCloudConnection
instead ofClient
objectsRAD-712: Client: port forwarding is broken on Windows
RAD-715: Console: robustness improvement against Duo failures
RAD-727: Service: Catalyst Center HTTP API token does not correctly refresh in some scenarios
RAD-731: Client: “Not authenticated against the PROD domain” when using
certificate_login
RAD-733: Service: uses wrong port number in check for direct RPC listener
RAD-737: Client: leaking active/open connections in HTTP proxy
RAD-738: Client: multiple cloud connection issues in Catalyst Center helper
RAD-740: Console: no default authenticator was set after using Catalyst Center
RAD-741: Client: inconsistency when stopping proxy forwarder
RAD-751: Service: proxy env variables are used for devices even if
fall_back_to_environment
is False
1.6.12
Due to an incorrect setting that crept up while migrating from one build environment to another, both 1.6.10 and 1.6.11 were released with an expiration date in September 2024 instead of June 2025. In order to fix this unfortunate situation:
the 1.6.10/1.6.11 code was re-released as 1.6.12 without an expiration date;
future releases starting with 1.7.1 will no longer have an expiration date.
1.6.11
Rebuild of 1.6.10 with a fixed Windows installer.
1.6.10 has been pulled from downloads as it came with a broken Windows installer.
If you were using RADKit Service as a Windows Service and you installed 1.6.10, or if you
checked the “Windows Service” box while installing 1.6.10, you will need to first install
1.6.11, then perform manual un-installation of the RADKit Windows Service using
radkit-service windows-service remove
, then re-install it using radkit-service
windows-service install
.
The known issue regarding RADKit Service GUI on Linux (see 1.6.10 below) also affects 1.6.11.
1.6.10
Rebuild of 1.6.9 with a different installer base; no other changes or fixes.
KNOWN ISSUE: RADKit Service GUI (the graphical start/stop UI, not the browser-based WebUI)
fails with Assertion `!xcb_xlib_unknown_seq_number' failed
on startup if it was installed
using the Linux installer. Workaround: use pip install
instead. This is only necessary
if RADKit Service GUI is needed on Linux.
1.6.9
Notable or breaking changes:
Service: until RBAC for administrative accounts is implemented, only
superadmin
will be allowed to change settings (this includes e.g. enabling/disabling RBAC for remote users, or changing proxy settings). Other admins can still view the settings, but cannot change them through the WebUI or the API.Client: on Windows, we need at least a Windows version that has ConPTY support so that we can enable
ENABLE_VIRTUAL_TERMINAL_PROCESSING
. This was merged in the Windows 10 kernel around the fall of 2018 and shipped to Windows 10 installs through upgrades around that time. For more information, see: https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences and https://learn.microsoft.com/en-us/windows/console/setconsolemode
Changelog:
new: #4013: Service: only
superadmin
should be able to modify settingsfix: #3823: Service/Client:
SettingsManagerLoadError
when loading bad TOML settings filefix: #3925: Client: long lines in interactive sessions are truncated on Windows
fix: #3981: Client:
radkit-client script
displays spurious informationfix: #4014: Service: log level for setting changes should be at INFO level
fix: #4018: Client:
not a valid parameter name
when building Swagger pathsfix: #4022: Client: spurious “task not found” error during BDB import
fix: #4024: Client: BDB
get_tasks
raisesPydanticUserError
1.6.8
Notable or breaking changes:
New mechanism for mutual validation of end-to-end encrypted sessions (E2EE):
Remote Users now get an access token (auto-generated, can be modified) to authenticate themselves to RADKit Service when establishing an E2EE session
this is governed by the new
service.e2ee.require_e2ee_session_verification
setting (default: False)the
UseE2EE
enum has been removed from the default context in the REPLthe
use_e2ee
parameter has been removed from all thelogin
functionsthe
client.add_e2ee_certificate_fingerprint(...)
method has been removed, the fingerprint now needs to be passed toclient.service(...)
the
reload_if_needed
parameter inclient.service(...)
has been removedE2EE is now required by default on the Service (clients that don’t support E2EE or refuse to enable it won’t be able to connect)
Changelog:
new: #2017: Client: integration with BDB (Cisco internal only)
new: #3437: Service: base layer to support external authentication sources (experimental)
new: #3850: Client/Service: end-to-end encrypted session validation (see E2EE doc)
new: #3973: Service: UCS Manager: new device type, API support and passwordless login
new: #4000: Service/API: enable gzip compression for response content
fix: #3922: Service: missing
xml_requests
folder for CSPC import functionalityfix: #3985: Service: FMC: support
/api/
paths in HTTP Clientfix: #3987: Client: ^C during login results in
NoContextCreatedError
on subsequent login attemptsfix: #3988: Service/UI: UI unresponsive with thousands of devices imported from Cisco DNA Center
fix: #3995: Service: incorrect description for setting
service.devices_proxy.url
1.6.6
Notable changes:
Connector (device import) settings have been cleaned up:
Cisco DNA Center-specific settings
service.cisco_dna_center_connector.*
and environment variablesRADKIT_SERVICE_CISCO_DNA_CENTER_CONNECTOR_*
have been removed;general setting
service.connectors.request_timeout
and environment variableRADKIT_SERVICE_CONNECTORS_REQUEST_TIMEOUT
have been introduced.
Old session logs on Client and Service are now automatically deleted:
On the Client side, this cleanup is governed by the
client.logging.session_log_max_age
setting, which defaults to 15 days. Cleanup only happens while RADKit Client or Network Console is running.On the Service side, this cleanup is governed by the
service.logging.session_log_max_age
setting, which defaults to 15 days. Cleanup only happens while RADKit Service is running.If you need to retain some of your existing session logs, please make sure to back them up BEFORE you upgrade and start RADKit Client, Console or Service.
Changelog:
new: #3599: Client:
join()
helper to wait for multiple objectsnew: #3680: Service/Client: old session logs are automatically erased
new: #3835: Console: add
platform linux sudo <device>
supportnew: #3841: Service: API and passwordless HTTP proxy for Crosswork
new: #3893: Service: passwordless HTTP proxy for Broadworks
new: #3917: Service/UI: info box about RBAC on Labels screen
new: #3921: Control: expose
system support-package
commandnew: #3982: Service/UI: shrunk navigation pane to make space for new items
fix: #2835: Service: increase and generalize timeouts in device import connectors
fix: #3546: Service/UI: Safari does not prompt the user when the session is terminated
fix: #3597: Service:
UnicodeDecodeError
during Netconf capabilities updatefix: #3808: Client: HTTP Response does not honor
Content-Encoding: gzip
fix: #3908: Client:
status
missing fromService
andInteractiveConnection
fix: #3910: Service: Candela breaks if
asyncinotify
is present on non-Linux systemfix: #3914: Service: improved error from HTTP proxy when Service is on an older version
fix: #3924: Service: does not completely disable the pager on IOS-XR
fix: #3927: Service: improved username/password prompt detection over Telnet
fix: #3932: Service: TLS verification cannot be disabled when importing devices via proxy
fix: #3934: Service: empty output from
exec(sudo=True)
when user is root alreadyfix: #3936: Client: use
xterm
instead ofdumb
as the defaultTERM
valuefix: #3941: Service: RADKit Service passwordless HTTP: login no longer works after logout
fix: #3943: Client/Service: tab characters are removed from prompt detector output
fix: #3945: Service/UI: RADKit Service device type default HTTP port should be 8081
fix: #3946: Service: FMC API global domain is never detected
fix: #3952: Service: Netconf/YANG model contains a single empty module entry
fix: #3953: Service: UI boolean settings should not be sent as strings
fix: #3956: Service: HTTP requests for vManage should add
X-XSRF-TOKEN
fix: #3960: Client: crashes to prompt when trying to log in on Windows
fix: #3968: Service/UI: admin password change fails if 403 returned
fix: #3972: Service/UI: should not do “get admins” API call user is not
superadmin
fix: #3978: Service: cloud proxy environment variable also affects devices proxy setting
1.6.5
Notable or breaking changes:
In RADKit Service, the Swagger device property
base_url
has been replaced withschema_path
andport
.The Service database migration is performed automatically on the first startup after the upgrade.
If
schema_path
is not provided, RADKit Service uses the hardcoded default path for the device type.The default value for the
port
field in the WebUI changes depending on the selected device type.
In RADKit Network Console, the
service
command now requires thesr
orno-sr
keyword.This is used to set the SR (Cisco TAC Service Request) context for the session to the Service.
Previously this was only enforced for Cisco user accounts; it has now been extended to all Console users.
This feature can be disabled by setting
client.network_console.enable_sr_context
to False.Please refer to the Network Console and Settings sections in the RADKit documentation for more information.
In RADKit Client, the
client.reauthenticate()
method is being deprecated.The correct way to reauthenticate is now to call
client.authenticator.reauthenticate()
.Depending on the original authentication method, different parameters will be expected.
The old method is still supported for the time being but will log a warning when used.
Experimental support for system HTTP proxies on Windows and macOS (added in 1.6.0) has been REMOVED.
Please refer to the “HTTP proxy support” page in the documentation for more information.
Features:
new: #3497: Service: save
superadmin
password on change if read from a filenew: #3566: Service: support for CSPC device import with credentials
new: #3656: Service/UI: better defaults for SD-WAN devices
new: #3673: Client: certificate renewal management
new: #3675: Common: improved HTTP proxy settings and handling
new: #3681: Console: make
service ... [sr | no-sr]
available to non-Cisco usersnew: #3754: Service: added support for multiple Swagger API paths
new: #3806: Service/UI: add a “clear value” state to Management Protocols in Cart
new: #3810: Service: updated list of allowed TLS ciphers
new: #3838: Service: passwordless HTTP proxy support for CUCM
new: #3839: Service: passwordless HTTP proxy support for CMS
new: #3840: Service: API and passwordless HTTP proxy support for NSO
new: #3842: Client: improved API for
reauthenticate
new: #3862: Service: allow labels up to 40 chars long to accommodate UUID4 strings
new: #3902: Client/Service: button to reset passwordless HTTP proxy session
Fixes:
fix: #3747: Service: APIC WebUI login fails intermittently
fix: #3772: Service: various APIC WebUI loading issues
fix: #3774: Service: APIC imported leaves & spines should not have HTTP settings
fix: #3784: Service: “No response returned” traceback
fix: #3785: Client: ModuleNotFoundError: No module named ‘pexpect.socket_pexpect’
fix: #3791: Client/Service: transfers are slow when done over H2 RPC transport
fix: #3795: Client: handle spurious
anyio.BrokenResourceError
fix: #3796: Client/Service:
BrokenResourceError
in H2 RPC transportfix: #3797: Service: traceback after ^C in older Docker versions
fix: #3798: Client:
success
andfailure
missing fromTransformedFillerRequest
fix: #3799: Client/Service: large data causes resets in direct RPC
fix: #3801: Service: some newlines are missing from
exec()
command outputfix: #3809: Service: Candela no longer refreshes logs dynamically
fix: #3811: Console: crash when wrong CEC password entered in
platform ccc xxx
fix: #3816: Service:
KeyError
when passwordless Cisco DNA Center login failsfix: #3817: Service/UI: authentication extra field does not change with device type
fix: #3834: Service: fix
ClosedResourceError
in RPC server +enable_set
handlingfix: #3846: Client: repeated
sso_login
causes exception and prevents further loginfix: #3847: Service/UI: no longer shows import icon for Cisco DNA Center devices
fix: #3848: Client/Service: SFTP upload fails (H2 stream was reset by peer)
fix: #3852: Service: HTTP authentication timeout should default to 2 minutes
fix: #3873: Client: clean up handling of unknown service ID in local proxy
fix: #3885: Client: direct WebSocket client gets stuck during termination
fix: #3888: Service: OCSP improvements for webserver-certificate import
fix: #3891: Common: filter out deprecation warnings about naive datetime objects
fix: #3906: Service:
validate_schema_path_empty_or_starts_with_slash
does not raise a value error
1.6.4
Changelog:
doc: #3760: corrected CSV example in Control cookbook
new: #3603: Console: support for FMC and FTD
clish
,expert
andlina
shellsnew: #3734: Client: enable HTTP/2 RPC multiplexing by default (for improved performance)
new: #3741: Service: support vManage passwordless auth proxy
new: #3749: Console: automatically add Service info to the SR on
service
commandnew: #3778: Service: add
enable_h2_rpc_transport
setting to control H2 multiplexingfix: #3654: Console: interactive help for
service
is outdatedfix: #3665: Service: after long output, prompt detector sometimes misses the prompt
fix: #3713: Service: cannot download support bundle or logs from ISE over passwordless proxy
fix: #3725: Service: eWLC with passwordless HTTP proxy results in a login loop
fix: #3732: Client: use a longer timeout for HTTP requests made through the proxy
fix: #3733: Service: Expressway with passwordless HTTP proxy results in a login loop
fix: #3737: Service: does not delete the database lockfile on shutdown
fix: #3738: Service: add sub-request ID to logging context for multiplexed requests
fix: #3742: Service/UI: show user-friendly device type in cart and devices table
fix: #3743: Console: device type change in 1.6.3 broke
platform ccc
commandsfix: #3745: Service: former PID incorrectly seen as running by
psutil
fix: #3752: Client: H2 RPC transport can hang on incomplete Terminal connection termination
fix: #3764: Common: fix
StreamClosedError
in RPC transportfix: #3765: Service: improve logging in RPC server transport
fix: #3753: Service: fix
InvalidStateError
inAsyncContextManagerMemoizer
fix: #3771: Service: support concurrent HTTP proxy to multiple devices of the same type
fix: #3779: Service: redirect loop when accessing FMC dashboard over passwordless HTTP
fix: #3783: Service: DELETE calls with HTTP body fail in the HTTP runner
1.6.3
Notable or breaking changes:
The device types have been harmonized; as a consequence, the syntax for some types has changed. All device types used in the Control API are now all-uppercase with underscores. Please update your Control scripts and CSV files accordingly. For details, see: https://radkit.cisco.com/docs/pages/control_api_sync.html#radkit_service.control_api.DeviceType
The
verify
andcert
arguments have been removed from the Raw HTTP methods in the Client API. Those were previously ignored, as TLS verification is handled and driven by RADKit Service. Thestream
argument has also been removed, as a streaming API is not currently available. Theallow_redirects
argument had already been removed in 1.6.2.RADKit’s
SocketSpawn
class has been integrated intopexpect
4.9 and has now been removed from the RADKit code. Thepexpect
version requirements for RADKit Client have been changed to>=4.9,<5.0
. Calls tospawn_pexpect()
now return an instance ofpexpect.socket_pexpect.SocketSpawn
.
Changelog:
doc: massive documentation refresh (ongoing)
doc: #3702: improved documentation styling
new: #3602: Console: implement Cisco DNA Center RCA collection and interactive shell
new: #3605: Client/Cloud: offer PAC file for HTTP Proxy
new: #3691: Client: improvements to HTTP Proxy WebUI
new: #3714: Service: support ACI APIC passwordless HTTP proxy
new: #3715: Common: harmonized device types
new: #3723: Common: HTTP/2 multiplexing for improved RPC performance (currently disabled)
fix: #3625: Service: CSRF errors when using proxy forwarding to a RADKit Service
fix: #3677: Service: terminating a session on the Activity tab does not notify the Client
fix: #3679: Control: Service returns
ValueError
due to incorrect device type mappingfix: #3686: Client: token refresh fails with traceback and does not open browser
fix: #3689: Service: interactive prompt is consumed and not displayed to the user
fix: #3690: Common: invalid settings override correct settings with lower precedence
fix: #3694: Service: import from Cisco DNA Center fails when duplicate devices are present
fix: #3696: Service: Cloud proxy change does not take effect until Service restart
fix: #3701: Service/UI: cEdge device type triggers a Pydantic validation error
fix: #3707: Service: Cisco DNA Center import by tag does not work
fix: #3718: Common: fixed
Missing RPC_Success
in RPC transportfix: #3719: Common: fixed
BrokenResourceError
in RPC transportfix: #3720: Service: unable to log in to ISE using passwordless proxy
fix: #3721: Client: only list HTTP capable devices in Proxy WebUI
fix: #3729: Client: empty page after clicking Back button in Proxy WebUI
fix: #3730: Client: more informative error message on SSO identity mismatch
1.6.2
Notable and breaking changes:
The
HTTP_API
class was renamed toHttpApi
.The
HTTP_APIError
class was renamed toHttpApiError
.The
HttpResponseResult
class was renamed toHttpResponse
and its interface has been slightly modified.HttpApi
methods such asget()
orpost()
now returnHttpResponse
, instead of aFillerRequest
with aresult
attribute of typeHTTPResponseResult
. Theresult
attribute still exists inHttpResponse
, but it will log a warning and return the same object to the caller.The
allow_redirects
argument has been removed from allHttpApi
methods.
Changelog:
new: #3335: Service: post-processors for device output
new: #3659: Client: add
--device
parameter alias toradkit-interactive
fix: #3669: Common: logging error during “rate limit exceeded”
fix: #3671: Client: fix “head-of-line” blocking issues in HTTP/2 proxy implementation
1.6.1
Changelog:
fix: #3640: Service/UI: device list ordering is reset when editing a device
fix: #3655: Service: traceback when SCP command not available on device
1.6.0
Release summary:
Passwordless HTTP proxy for ISE, FMC, Cisco DNA Center
HTTP API support for ISE 3.1+, CUCM
Device import from ACI/APIC
Interface to change Service settings through WebUI
Easier renewal/re-enrollment when Service certificate is expired or revoked
Activity monitoring for terminal and SCP/SFTP file transfers in Service WebUI
Password lifecycle management for Service admin accounts
Code signing for wheel tarballs and Linux installer
Support added for Python 3.10 and 3.11, dropped for 3.7
… and many more changes under the hood :-)
Breaking/notable changes:
A compatible OpenSSL version (1.1.1g+ or 3.x) will be enforced at startup. Be prepared if you use
pip install
.In Network Console, the
proxy
command syntax is now aligned with theport_forward
command, withstart
andstop
keywords, supporting bothsocks
andhttp
.A new
SEND_TIMEOUT
value was added toRequestStatus
, meaning a request could not be delivered to the Service.The
RequestStatus.RECEIVED
enum value was renamed toDELIVERED
(seen from the point of view of the Client).The
request_success()
andrequest_failure()
methods on request objects have been shortened tosuccess()
andfailure()
, respectively. The old names are now deprecated but will be maintained for some time .asyncssh
will no longer try to load keys and settings from~/.ssh
unlessfall_back_to_environment
is set toTrue
(separate settings are available underservice.ssh
andservice.netconf
).The handling of the
~
(tilde) escape character in interactive Terminal sessions has been cleaned up:~
is only recognized after a carriage return;^C^C^C^C
,~c
and~z
are no longer recognized;the help text for
~.
has been made more accurate.
RADKit now uses Pydantic 2.x for its data models. If you are using the
pip
installation method and you are installing additional third party libraries (outside of RADKit’s own dependency tree), this may cause incompatibilities if some of those additional libraries are still dependent on Pydantic 1.x.Code signatures are now available for the Linux installer and wheel tarballs (see documentation for details).
Device types:
most types have been cleaned up (display only; values in DB and API remain the same as before);
types
CNBR
andCNBROpsHub
have been removed (obsolete);new Control command:
radkit-control device list-types
.
Supported platforms and Python versions:
Python 3.10 and 3.11 are now supported
Python 3.8 is no longer supported on macOS Silicon
Python 3.7 is no longer supported (EOL; see https://devguide.python.org/versions)
Windows 32-bit is no longer supported
Features:
new: #955: Client: improved access to request status information
new: #1745: Interactive: make paths optional for certificate authentication
new: #2022: Service/API/WebUI: password lifecycle/management for admin accounts
new: #2124: Service: change settings through API and WebUI
new: #2378: Client: improved
~
escape character handling ininteractive
new: #2427: Client: turn
light-bg
/dark-bg
into settingsnew: #2510: Service: setting to restrict CXD upload destinations
new: #2786: Client: recommend proxy auto-config (PAC) file for SOCKS/HTTP proxy
new: #2796: Service: ignore outside env/config in 3rd party libraries by default
new: #2816: Enforce recent OpenSSL version at startup
new: #2830: Service/UI: improve UX when Service certificate is expired/invalid
new: #2920: Client/Service: reverse proxy over SOCKS/HTTP with authentication
new: #2944: Client: make CXD integration fully asynchronous
new: #3068: Service: add support for OpenAPI 3.1 to make Swagger work with newest FastAPI
new: #3082, #3330: Service/UI: display active Terminal and SCP/SFTP sessions in real time
new: #3144: Client/Service: advanced terminal interaction (experimental)
new: #3177: Service: ISE HTTP API support for versions 3.1+
new: #3252: Client/Service: migrate to Pydantic 2.x
new: #3272: Service: add device type support for CUCM
new: #3316: Access/Client: direct integration with CSOne
new: #3317: Service: connection limits for read/write-file, terminal, tcp_tunnel and others
new: #3324: Service: cleaned up list of device types
new: #3327: Service: connector for ACI/APIC device import
new: #3328: Client: warn the user about the dangers of sharing certificate credentials
new: #3361: Service: FMC WebUI login support (including banner)
new: #3368: Common: drop support for Python 3.7
new: #3403: Client:
DeviceFlow
default regex extension for Cisco DNA Centernew: #3408: Service: device labels API improvements (accept label strings in API)
new: #3412: CXD: integrate with CXFiles notifications
new: #3422: Service: add env var to enable
--force
option in Dockernew: #3438: Packaging: ship
.pyi
files to assist lintersnew: #3460: CXD: migrate away from the global
cxd
objectnew: #3469: Genie: provide API to parse plain-text outputs
new: #3471: Service: ISE passwordless UI proxy
new: #3482: Client: add missing parameters to
CiscoDNACenter.exec()
and.admin_exec()
new: #3500: Packaging: code signing for Linux installer and wheel tarballs
new: #3506: Control: expose
change_password
in Control APInew: #3576: Service: stored procedure for Cisco DNA Center
rca
commandnew: #3601: Console: add support for HTTP proxy
new: #3623: Service: remote procedure for Cisco DNA Center to enter unrestricted shell with password
Fixes:
fix: #1351: Client: display success/failure count for
TransformedFillerRequest
fix: #2776: Packaging: remove old stub packages for Remote and Candela
fix: #2802: Service:
interactive()
logs use wrongname@host
notationfix: #3292: Service:
CloseConnection cannot be sent in state ConnectionState.LOCAL_CLOSING
fix: #3308: Service/Control: improved error on duplicate names in bulk-create API
fix: #3313: Service: return substitute authentication cookies to Client
fix: #3315: Service/UI: closing update modals while processing stops data refresh
fix: #3340: Client: non-existing Service IDs should be removed from “services” dictionary
fix: #3342: Common: misleading
ValidationError
when value cannot be parsed as JSONfix: #3343: Service/UI: do not capitalize empty table placeholders
fix: #3347: Service/UI: typing in name box while function running produces wrong name in toast
fix: #3352: Service/UI: lack of consistency in name-update toast notifications
fix: #3353: Service/UI: validation error on the frontend doesn’t close the spinner
fix: #3356: Service/UI: notifications leak between user sessions in the same browser
fix: #3367: Console: crash on login if AuthFlow fails due to lack of DNS server
fix: #3370, #3381, #3388: Console: tracebacks due to uncaught exceptions
fix: #3372: Service/UI: DNA Center import intermittently goes straight back to inventory
fix: #3377: Service/UI: fix action button scaling
fix: #3409: Service: cannot enter password in headless mode in Docker
fix: #3411: Service:
AssertionError
in ASGI framework:assert scope["type"] == "websocket"
fix: #3436: Service: admin password change fails if old password is not compliant
fix: #3442: Service: crash observed when handling a
TimeoutError
fix: #3452: Client: fix repr message for SCP/SFTP upload request
fix: #3455: Client: traceback if RPC not delivered to Service on time
fix: #3457: Console: local variable ‘index’ referenced before assignment
fix: #3480: Service: prompt detector stops working after a while
fix: #3489: Common:
InvalidStateError
after restarting authenticatorfix: #3491: Service/GUI: does not handle runtime errors from the Service
fix: #3501: Service/GUI: shows numerical value for “Logging level”
fix: #3502: Service: settings change triggers Service restart
fix: #3503: Service:
run --force
option doesn’t always workfix: #3504: Client: integrated fails if
superadmin
password does not meet complexity requirementsfix: #3510: Service: clearing proxy URL in connectivity page does not work
fix: #3516: Service/UI: password reset should display a reason when it fails
fix: #3517: Service: panel no longer supports Ctrl-G to change the logging level
fix: #3520: Control:
admin bulk-update --json-template
is brokenfix: #3521: Service/UI: “enable” switch is shown when editing
superadmin
fix: #3523: Service: upload error when detaching from session
fix: #3525: Service/API: admin can log in even when disabled
fix: #3533: Service/UI: numerical fields in Settings validation issue
fix: #3534: Service/UI: sort jumphosts alphabetically in drop-downs
fix: #3536: Client:
client.reauth
with invalid responsefix: #3537: Service: when no cloud connectivity every settings change causes service restart
fix: #3539: Client: improve error handling in
CiscoDNACenter
classfix: #3540: Service: do not start up if TOML file is invalid
fix: #3541: Service: traceback when terminating a connection from the Activity tab
fix: #3545: Packaging: Windows install fails with “No matching distribution found for asyncinotify<5.0,>=4.0”
fix: #3549: Service: speed up
--help
and--version
fix: #3553: Packaging:
ImportError
while migrating from pre-1.5 databasefix: #3558: Service: various fixes in HTTP runner
fix: #3564: Service: APIC import fails silently when APIC is slow
fix: #3578: Service/UI: restore
StarOS
andUltraCore5G
device typesfix: #3580: Service/UI: do not allow submitting an HTTPS proxy URL
fix: #3596: Service/UI: sorting by Cart presence is broken
fix: #3618: Client: CiscoDNACenter consent-token detection fails on 2.3.3.7
1.5.12
Changelog:
fix: #3626: Packaging: 1.5.11 Windows installation fails
1.5.11
Rebuild of 1.5.10 with asyncssh
2.14.1 which fixes CVE-2023-46445 (see https://github.com/ronf/asyncssh/security/advisories/GHSA-cfc2-wr2v-gxm5 for details). Note that only the RADKit installers include asyncssh
; if you installed RADKit using pip
, we recommend that you get the fix by running: python3 -m pip install -U asyncssh
1.5.10
Changelog:
new: #2874: Windows: install RADKit Service as a genuine Windows service
new: #3399: Linux: extend installer support to
glibc>=2.17
(Debian 8+, Ubuntu 14+, RHEL 7+)fix: #3324: Service: disallow the
TRACE
HTTP method on API/WebUI
1.5.9
Breaking change:
The
sr
keyword has been removed from thedownload cxd
command.
Changelog:
doc: #2499: Doc: add example for plain text output parsing with Genie
new: #3212: Client/Console: add setting for
open_browser
default behaviornew: #3253: Console: remove
sr
keyword fromdownload cxd
commandnew: #3299: Control: add
verify
boolean to disable TLS verification inControlAPI.create
fix: #2382: Cisco DNA Center:
admin_exec
repeatedly asks for credentialsfix: #2784: Console: prompt suggestions not working after variable fields
fix: #3087: Service/UI: cannot change device labels only from tray
fix: #3194, #3305: Service: work around SNMP dependency conflict with Genie
fix: #3263: Service/UI: more optimizations for large numbers of devices
fix: #3267: Console: traceback on
download scp
if destination is a directoryfix: #3289: Service/UI: auto-select existing placeholder on clicking a password field
fix: #3293: Service/UI: session storage fills up after a large number of bulk operations
fix: #3298: Control: CSV device bulk create template is broken for labels and SNMP
fix: #3302: Service/UI: empty tables when Search has no resulting return payload
fix: #3303: Service/UI: unified brand identity
fix: #3309: Console: traceback if access to SCP destination is not permitted
fix: #3320: Service/UI: missing spinner on user actvication/deactivation
fix: #3322: Control: missing sections in JSON/CSV templates
fix: #3325: Service/UI: delete modals allow to send multiple requests
fix: #3348: Service: SNMP Get/Walk fails with
TypeError
1.5.8
Notable changes:
the syntax to bootstrap Service in Docker via CLI has changed (see doc)
Changelog:
new: #3233: Service: support cEdge authentication when RADKit is running on vManage
new: #3241: Service: UI should reflect Forwarder/Cloud connectivity statuses
new: #3247: Console: add SNMP get/walk support
fix: #3277: Common: better handling of syntax errors in TOML settings
1.5.7
Changelog:
new: #3061: Service: configurable protection against RPC flooding
new: #3262: Service/UI: rename Tray to Cart based on user feedback
fix: #2982: Service/Client: unhelpful traceback when accessing a deleted device
fix: #3051: Client: HTTP and Swagger result APIs should be similar
fix: #3075: Service/UI: improved performance with large numbers of devices
fix: #3164: Common: don’t crash on startup if
settings.toml
has errorsfix: #3249: Service/UI: fix blank admins table on page refresh
fix: #3254: Service/UI: label text color isn’t applied to labels created within picker
fix: #3255: Service/UI: labels created within picker appear as selected in the Cart
fix: #3256: Service:
run --force
ineffective if stale/running PIDs are the samefix: #3257: Packaging: fix Windows shortcut commands for Service and Medic
fix: #3261: Service: Docker wrapper should forward
SIGTERM
to Service process
1.5.5
Breaking or important changes:
Service: setting
dnac_connector
has been renamed tocisco_dna_center_connector
Service: separate proxy settings for HTTP(S)/Swagger to devices, see
service.devices_proxy.*
Console: the
service
command now requires ansr
argument (for Cisco users only)Genie: temporarily forcing
pyats
andgenie
to>=22.5,!=23.8
due to errors on Python 3.8+
Changelog:
doc: #3180: Client: PAC file doc update (browser is detected automatically)
new: #2098: Service:
web-server-cert
subcommand for importing a web server certificatenew: #2517: Service: separate proxy settings for traffic to devices
new: #2945: Console: add support for SR tagging and session log upload to CSOne
new: #3210: Client/Service: multi-device SNMP Get and Walk
fix: #3009: Service/UI: fix label borders on Safari
fix: #3114: Console: avoid traceback on regex syntax error
fix: #3119: Service/UI: remove “session expired” popup when enabling device with invalid hostname
fix: #3120: Service: “Unable to get the Pydantic model name” on model validation
fix: #3142: Service/UI: Firefox table cell overflow bug
fix: #3148: Service/GUI: fix “ValueError: Formatting field not found in record: ‘nglog_context’”
fix: #3149: Console: traceback and crash if user clicks “Deny” on SSO login screen
fix: #3185: Control: devices not imported during bulk-create CSV operation
fix: #3189: Client: add prefix to error logs issued during
access_token_login()
fix: #3216: Service: more accurate Cisco DNA Center import status
fix: #3218: Service: prevent errors and race conditions related to caching in HTTP Runner
fix: #3219: Packaging: add
-I
flag to ensure isolation of virtualenv in Linux installerfix: #3221: Service/UI: fix subdevices workflow errors on slow environments
fix: #3224: Service: SCP upload shows success but fails with IOS-XE
fix: #3225: Service: ignore
HTTPS_PROXY
when connecting to network devicesfix: #3228: Control: uses
cloud_client.proxy.*
instead ofcontrol.proxy.*
settingsfix: #3230: Client: nicer formatting of Swagger path dicts
fix: #3242: Service: rename setting
dnac_connector
tocisco_dna_center_connector
fix: #3246: Service:
add_user
should not be called afterclose
was called
1.5.4
Important new features:
Linux installer (only
x86_64
+glibc
supported at the moment)RADKit Medic application to reset RADKit to a clean config
Changelog:
doc: #3106: update Ansible-RADKit section and document compatibility
doc: #3183: mention PAC file for SOCKS proxy browser configuration
doc: #3184: add documentation for RBAC in Service
new: #1930: installer for Linux (only
x86_64
supported at the moment)new: #2714: “RADKit Medic” CLI and GUI to revert RADKit to a clear configuration
new: #3047: Service: new device types for Broadband Wireless Aggregation
new: #3157: Client: offer API to specify Cloud proxy settings in stand-alone scripts
new: #3193: Service/UI: include hash in front-end assets to avoid caching issues
fix: #3150: CXD:
upload_to_cxd
no longer works for multipart uploadsfix: #3157: Service: Cloud connection does not restart when proxy is changed
fix: #3170: Service: CLI
debug
flag is ignoredfix: #3178: Service/UI: buttons stuck in “loading” state after adding new Remote User
fix: #3192: Service/UI: label picker is blank while data is loading
fix: #3195: Service:
exec()
connection hangs on slow commands on some platformsfix: #3198: Service/UI: labels in the Users table disappear after tab refresh
fix: #3202: Client: SNMP scripting improvements
fix: #3209: Service: do not suppress
CancelledError
in Command Runnerfix: #3211: Client: when using
terminal.read(-1)
some data can be lost on EOF
1.5.3
Changelog:
new: #3098: Client/Service: add support for SNMP GETBULK operations
new: #3122: Client:
sso_login
now accepts anOAuthConnectResponse
objectnew: #3146: Service/UI: extend width of Candela Hypersearch window
new: #3162: Common: enforce the use of HTTPS for RADKit OCSP checks
new: #3174: Service/UI: change to full viewport for Monitoring/Candela screen
fix: #3031: Settings: some settings cannot be overridden via TOML/CLI/env
fix: #3096: Service: SNMP Walk does not honor timeout parameter
fix: #3127: Service/UI: allow proxy configuration on the Connectivity screen
fix: #3132: Service/UI: fix performance issues in log viewer with large directories
fix: #3133: Console: load settings from
settings.toml
fix: #3137: Service/UI: bootstrap screen should redirect to Devices instead of Connectivity
fix: #3139: Service/UI: don’t show “websocket expiry error” on logout
fix: #3140: Service/UI: fix scrollbar on Webkit
fix: #3141: Service: proxy settings error when password is provided
fix: #3154: Service/UI: block ENTER key for empty input values during SSO enrollment
fix: #3155: Service/UI: handle ENTER key in proxy configuration
fix: #3163: Service: fix taskgroup cancellation of
Service
fix: #3175: Service: allow user to override
Content-type
header for ISE HTTP API
1.5.2
Changelog:
new: #2896: Service: add support for raw HTTP API on ISE (authenticated)
new: #3100: Service/UI: block Add operations until response comes back
fix: #2895: Service/UI: Candela should stop trying to reconnect after session timeout
fix: #3097: Service/UI: table loader shows up on API calls when not necessary
fix: #3131: Service/GUI: context information missing from audit logs when launched from GUI
Temporarily reverted due to regression #3129:
fix: #3031: Settings: some settings cannot be overridden via TOML/CLI/env
1.5.1
KNOWN ISSUES:
#3129: Client/Service: Cloud proxy settings are ignored
#3131: Service/GUI: context information missing from audit logs when launched from GUI
Release summary:
Granular RBAC based on labels affixed to Remote Users and Devices (enabled through Labels section in WebUI)
Direct connection between Client and Service (admin user authentication without RBAC)
Experimental SNMP support (partially implemented)
Support for SSH public-key authentication for Terminal connections
More logical use of Cisco DNA Center credentials (Terminal for SSH, HTTP for import)
Support for large Cisco DNA Center inventory imports with optional filtering based on tags
Canonical device names on Service (lowercase, no spaces or special chars)
Stricter and more configurable TLS versions, algorithms and trusted issuers
Reworked RADKit Remote (now RADKit Control) with CSV support and a new synchronous Python API
Stripped-down and improved Candela (WebUI log display component)
New device types: CVOS, NXOS, Broadworks, Cisco ACI
Many enhancements and bugfixes (full list below)
Breaking or notable changes:
Client and Service:
Settings
log_file
,log_dir
,logging_level
andsession_logging
have been moved to a newlogging
subsection
Client:
[async_]oauth_connect_only()
no longer accepts awebsockets
parameteraccess_token_login()
now takes aprovider
argument like the other*_login
functionstoken_provider
is still accepted but is deprecated and will be removed in a future release
Cisco DNA Center support:
Cisco DNA Center devices now use HTTP credentials instead of Terminal for device import
Terminal credentials can now be properly used for SSH access, along with different credentials for HTTP, on the same device
When upgrading from pre-1.5 to 1.5 and above, Terminal credentials for Cisco DNA Center devices will be automatically migrated to HTTP
Make sure to revisit the Cisco DNA Center devices in your inventory and check/fix all credentials
Remote and Candela:
RADKit Remote has been renamed to RADKit Control and is now part of the
cisco_radkit_service
packageCandela is now also part of the
cisco_radkit_service
packageThe first few 1.5.x releases will include empty
cisco_radkit_remote
andcisco_radkit_candela
packages
Documentation:
doc: #2518: Control CLI documentation
doc: #2679: working example for
oauth_connect_only
doc: #2755: documentation for Raw HTTP API
doc: #2819: document regex filtering in Console
doc: #2840: documentation for
direct_login
doc: #2910: Control API documentation
doc: #3021: installation guide for Service on CSPC
Features:
new: #1183: Service/Candela: better Candela integration into Service
new: #1345, #2573: Service: more robust process management
new: #1557: Service/Candela: automatic directory refresh
new: #1812, #3020: SNMP support (experimental)
new: #1925, #2076, #2419: label-based device access control
new: #2085: Service: enforce canonical device names
new: #2087, #2577: Client/Service: cloud-free direct connectivity
new: #2091, #2092: Service: support SSH public-key authentication for Terminal
new: #2211: Logging: configurable rate limits for logging
new: #2261: Client: write to CXD from the client side
new: #2318: Service: record DB schema and RADKit version trail
new: #2401: Client: allow passing non-canonical device names to
radkit-interactive
new: #2492: Service/GUI: automatic HTTPS port selection
new: #2516: Service: convert database from SQLite to Pydantic
new: #2555: Client: client object caching in
Context
new: #2592: Client: async version of
Context
new: #2619: Control: sync wrappers around the current async API
new: #2643: Control: bulk create/update/delete devices based on CSV
new: #2647: Service: automatically migrate Cisco DNA Center credentials from Terminal to HTTP
new: #2658: Service/UI: sorting for “Description” column
new: #2671: Control: complete renaming after integration into Service package
new: #2720: Service: support for Cisco Voice Operating System (VOS)
new: #2785: Console: implement a global
show port_forward
commandnew: #2810: Client: allow specifying the OAuth provider in all
login
functionsnew: #2822: Service/Candela: button to wrap long lines
new: #2832: Service: new
NXOS
device typenew: #2841: Client: verify server cert fingerprint in
direct_login
new: #2864: Service/UI: RBAC activation checkbox
new: #2869: Service: new device type for Cisco ACI with HTTP API support
new: #2876: Service/UI: labels can be applied through device tray
new: #2877: Control/Service/API: extended API for changing settings
new: #2897: Service/GUI: check Tk/Tcl version on startup
new: #2906: Client/Service: use Cisco-curated CA bundles for all TLS connections
new: #2908: strict enforcement of appropriate TLS version(s) everywhere in the code
new: #2911: Client/Service/Control: restrict set of TLS crypto algorithms
new: #2914: Service/Control: merge all API settings endpoints together
new: #2930: Service: add
Broadworks
device typenew: #2936: Service/UI: add option to not clear Edit Tray after applying changes
new: #2951: Console: add command to stop all port forwarding sessions at once
new: #2952: Service/UI: add RBAC status to page header in frontend
new: #2958: Service/UI: option in Swagger section to disable/enable TLS verification
new: #2976: Service/UI: remove the confirmation modal in Edit Tray
new: #3026: Service/UI: add last OCSP validation field
new: #3064: Service/UI: add a login blocker on empty fields
Fixes:
fix: #1607: Service/UI: display friendly page when typing bad URL
fix: #1840, #2086: Control: better approach for
_STANDARDIZED_RESPONSE
fix: #1932, #2328: Service: handle large Cisco DNA Center inventory imports
fix: #2172: Service/UI: Connectivity page refresh on Firefox should not redirect to Devices page
fix: #2181: Service/UI: redirect from login page if already logged in
fix: #2183: Global: remove all remaining references to “Connector” (ex-Forwarder)
fix: #2210: Client: add missing
to_json
support for results objectsfix: #2224: Client:
Request.result
should never returnNone
fix: #2261, #2941: Client/Service: support new CXD infra after migration
fix: #2351: Service: garbled output with long
exec()
commandsfix: #2442: Client: make
DeviceFlow.exec_wait()
return correct type forradkit_genie.parse()
fix: #2485: Service: improved certificate renewal logic
fix: #2497: Client/Service: port forwarding errors are not actionable
fix: #2559: Client: ability to retrieve local port after
forward_tcp_port
withlocal_port=0
fix: #2565: Service/UI: do not display a hash in the URL
fix: #2566: Service/UI: cannot navigate away from RADKit using the address bar on Firefox
fix: #2574: Service/UI: new modes in Service hiding parts of header cut off the notification shade
fix: #2579: Service: fix
UI port=8081 is busy
when restarting the Servicefix: #2598: Control: traceback when Service port is unresponsive or does not respond as expected
fix: #2629: Service/UI: non-functional button on session expiry dialog
fix: #2633: Client/Service: vague error message when proxy/SOCKS fails to connect to a device
fix: #2649: Service: self-terminates with “OAuth Token expired” error after lost keepalives
fix: #2670: Client:
oauth_connect_only
fails when passingwebsockets=False
fix: #2676: Service/UI: sorting reset doesn’t work in the Admins table
fix: #2689: Client: spurious debugs while autocompleting
Service
objectfix: #2697: Service/Control: fix all update REST API calls
fix: #2703: most entry points should not display a
Logging configured
messagefix: #2707: Service/Candela: “download log file” button hangs on a blank page
fix: #2708: Service/Candela: logs show as empty after using Hypersearch
fix: #2709: Service/GUI: traceback when using “Reset and exit”
fix: #2711: Service/UI: page not updated after SSO enrollment
fix: #2717: General: set minimum/maximum version for all direct dependencies
fix: #2723, #2946: Service: RBAC error if devices have a disabled jumphost
fix: #2740: Client/Service: show log about
reauthenticate()
only in the Clientfix: #2753: Service/WebUI: fix middleware bug (
KeyError: 'method'
)fix: #2766: Service/API: improve performance of bulk device insert and update
fix: #2769: Client/Service: improved recovery from Forwarder authentication failures
fix: #2770: Service:
TypeError: issubclass() arg 1 must be a class
fix: #2773: Client: bound method logged in
HTTP request failed
errorfix: #2778: Client/Service:
FileExistsError
orFileNotFoundError
related to identities migrationfix: #2780: Client: sync API
TCPPortForwarder
is missing alocal_port
propertyfix: #2789: Console:
cd
command does not support spaces in pathfix: #2791: Service/API: duplicate data error returns inconsistent response codes
fix: #2798: Console: better reporting for CXD exceptions
fix: #2808: Client/Service: honor Cloud client proxy settings for CXD uploads
fix: #2815: Client: cannot convert some result objects with
to_dict
orto_json
fix: #2824: Client/Service: fix path types displayed during migration/backup
fix: #2833: Client/Console: do not allow email with
<>
around itfix: #2844: Client: fix
terminal()
recursion in Cisco DNA Center helperfix: #2845: Service/UI: unexpected shorthand
margin
aftermargin-top
fix: #2846: Service: disable access to external entities in XML parsing
fix: #2862: Client: Netconf/Swagger update reports success despite failure
fix: #2870: Service: SSH connection timeout is not refreshed after subsequent
exec()
fix: #2871: Service/UI: cosmetic issues in RADKit Service UI
fix: #2875: Service/API: bulk device deletion is too slow and CPU intensive
fix: #2879: Service/Candela: add
noopener
rel attributesfix: #2887: Service/UI: “Add new device” dialog is not fully cleared after “Add & Continue”
fix: #2890: Service/Candela: fix “no attribute line_positions” error
fix: #2893: Service/UI: rename “Import everything” to “Bulk import” in Cisco DNA Center import UI
fix: #2899: GUI/Service: misleading error if WebUI port is already in use
fix: #2900: Service/Candela: hangs if there are too many files in session logs directory
fix: #2907: Service/GUI: new WebUI sessions constantly created by status polls
fix: #2912: Service/UI: add remote/admin username in Edit tab
fix: #2913: Control: API delete actions return
None
instead of a deserialized responsefix: #2916: Service/UI: inputs styling alignment with the Cisco UI Kit
fix: #2926: Service/UI: blank page after login
fix: #2932: Service: error in Candela when
session_logs/
does not existfix: #2934: Service/Candela:
dlsym(..., inotify_init): symbol not found
error while loading filefix: #2940: Service: don’t allow devices without Terminal config as jumphosts
fix: #2949: Service: various memory leak fixes
fix: #2955: Control:
KeyError: 'uuid'
indevice bulk-create --json-template
fix: #2959: Client: add banner in
attach()
warning not to type passwords in commandsfix: #2961: Service: Cisco DNA Center refresh fails with
AttributeError
fix: #2962: Service/Candela: unresponsive after navigating away from Monitoring tab
fix: #2964: Service:
anyio.BrokenResourceError
causes huge tracebackfix: #2970: Service/UI: error in JS console when doing “Reset certificate”
fix: #2972: Service/GUI: cannot start due to missing
packaging
dependencyfix: #2973: Service/UI: incorrect placeholder in OTP enrollment dialog
fix: #2983: Service: tracebacks on Windows due to
hypercorn
fix: #2984: Client: unhelpful error when clicking “Deny” or “Log out all sessions” on SSO page
fix: #2985: Service: improve the fingerprint display
fix: #2986: Service UI: device enable/disable toggle does not trigger UI timeout
fix: #2992: Service: characters missing at end of prompt in interactive session
fix: #2993: Service/API: do not log failed incorrect usernames
fix: #2998: CXD:
upload_to_cxd
fails withAttributeError
fix: #3004, #3045: Service: Solis scan causes ASGI framework tracebacks
fix: #3006: CXD:
upload_to_cxd
fails withUnboundLocalError
fix: #3012: Service: stuck restarting when re-enrolling while in failed authentication state
fix: #3013: Service: “select all” also selects hidden users/admins/labels after a search
fix: #3023: Service: unable to start without internet connection
fix: #3024: Service/UI: SSO enrollment shows misleading errors
fix: #3025: Client: rename
token_provider
toprovider
inaccess_token_login
fix: #3031: Settings: some settings cannot be overridden via TOML/CLI/env
fix: #3032: Service/UI: certificate errors are not displayed in the UI
fix: #3037: CXD: HTTP uploaders do not use proxy settings
fix: #3044: Service: inaccurate error message for SSH connection
fix: #3058: Client: fix
UnicodeEncodeError: surrogates not allowed
ininteractive()
fix: #3066: Service/UI: interference between SSH/HTTP radio buttons in device update modal
fix: #3072: Service/UI: prevent scrolling when modals are open
fix: #3073: Service/UI: move Tray submit buttons to the bottom
fix: #3076: Service: Swagger API for FMC needs to support older FMC versions
fix: #3083: CXD: catch 422 status for cases that are non-existing/closed
fix: #3084: Genie: relax pyats/genie dependencies
fix: #3116: Service/GUI: Configure button remains greyed when not bootstrapped
fix: #3117: Client: sync
oauth_connect_only
missingprovider
parameterfix: #3118: CXD: raise error when client passed to
authenticate
is not OIDC authenticated
1.4.12
This release is only relevant for users who use pip
as the installation method.
Changelog:
fix: #2717: General: set minimum/maximum version for all direct dependencies
fix: #3084: Genie: relax pyats/genie dependencies
1.4.11
This release is only relevant for users who use pip
as the installation method.
Changelog:
fix: #2823: Service/Remote: change
starlette
pin from==0.22
to>=0.25
1.4.10
Changelog:
fix: #2193: Service: API audit trail does not log IP addresses
fix: #2362: Client: check for obvious errors before starting file upload
fix: #2550: Client: support directory as SCP destination on Windows
fix: #2734: Console: defaults to
C:\Windows\System32
instead of home directoryfix: #2764: Client: port forward fails when
localhost
resolves to a scoped IPv6 address
1.4.9
Changelog:
new: #2636: Service: dynamic remote users for trainings (experimental)
fix: #2588: Service: default listener does not bind to IPv4 on Windows
1.4.8
Changelog:
fix: #2610, #2659, #2665: Client/Service: multiple certificate renewal issues
fix: #2648: Client:
certificate_login
should check that the identity matches the certfix: #2680: Client: raise an exception when the authentication flow fails
fid: #2684: Service: Swagger Runner should honor timeout values everywhere
fix: #2688: Service: disable log file creation in
/tmp/candela-cache
fix: #2693: Client/Console: segmentation fault when using
!
to run shell commandsfix: #2699: Service:
sudo
support for FMC
1.4.7
Changelog:
new: #2600: Console: added support for port forwarding
fix: #2326: Service: fixed downloading/uploading to a directory using SCP
fix: #2580: Client: custom certificate paths no longer work
fix: #2623: Client: spurious
OAuth Token expired
error when leavingwith login()
blockfix: #2630: Service/UI: “use obsolete algorithms” check box has disappeared
fix: #2632: Service/API: invalid hostname/IPv4 address accepted by
UpdateDevice
fix: #2635: Client/Console: implement fuzzy autocompletion
1.4.6
Changelog:
fix:
ImportError
fromsqlalchemy.sql.naming
with newestalembic
version
1.4.5
Changelog:
doc: fixed links to videos
new: #1667: Client: support for client-side session logs
new: #2381: Client: new
SocketSpawn
class to supportspawn_pexpect()
on Windowsnew: #2555: Client: drop connection to Forwarder after inactivity timeout
new: #2557: Service: support for IOS-XE authentication in raw HTTP API
fix: #1955: Client/Service: fix SSH “Connection lost” when pasting large amounts of text
fix: #2154: Client: ephemeral attributes must behave exactly like a
dict
fix: #2212: Service: fix SOCKS proxy traceback when connection is refused by host
fix: #2271: Service: properly close TCP request stream when there’s an exception
fix: #2426: Client: display inventory in
radkit-interactive
like in the REPLfix: #2462: Service/UI: make input validation more consistent
fix: #2489: Service/UI: fix misaligned enable input box, tray device type hint, contrast
fix: #2495: Service/GUI: properly apply config settings (notably the WebUI port)
fix: #2509: Client: fix dynamic generation of Swagger path methods
fix: #2526: Client:
start_integrated_service()
now uses settings from Service TOML filefix: #2528: Service/GUI: grey out the logging level when not bootstrapped
fix: #2545: Client: cannot use Ctrl-C to bail out of
sso_login
on Windowsfix: #2546: Client: fix error message when Client is used after being terminated
fix: #2548: Service/UI: make remote user username/email case-insensitive
fix: #2558: Service: respect jumphost in
exec()
fix: #2563: Service/UI: fix loading of “External devices” in WebUI
fix: #2567: Service/UI: add redirect for unknown URL paths
fix: #2576: Client/Console: support
destroy_previous
for SOCKS proxyfix: #2581: Service/Client: fix
RuntimeError: Event loop is closed
on Windowsfix: #2582: Service:
KeyError
with device typeFMC
fix: #2590: Service/UI: hide non-relevant checkboxes in Terminal/Telnet properties
fix: #2595: Service/UI: add informational text about defaults to all password fields
fix: #2597: Client/Console: crash upon
update_inventory
on an unreachable Service
1.4.4
Changelog:
fix: #2551: Client: ‘AccessTokenAuthFlow’ object has no attribute ‘_access_token’
fix: #2552: Service/UI: device type drop-down incorrectly shows IOS as pre-selected
fix: #2553: Client/API: do not export
pipes
from top-level modulefix: #2556: Genie:
fingerprint
does not identify eWLC as acat9800
platform
1.4.3
Breaking changes:
Client API:
ConsoleError
renamed toClientError
Client API: parameter
client_id
removed fromenroll_client_from_otp
Documentation:
doc: #2490: complete synchronous Client API reference
doc: #2511: added missing documentation for
use_e2ee_default
Features:
new: #1941: Service: Cisco DNA Center HTTP API authentication
new: #2251: Service/UI: internal rework for improved state management
new: #2321: Remote: expose setting for
httpx
timeoutnew: #2464: Service/UI: SHA256 Fingerprint copy on click feature
new: #2467: Client: added
destroy_previous
parameter tostart_socks_proxy
new: #2483: Client: API to read/write identity cert and keypair
new: #2524: Client: remove
client_id
parameter fromenroll_client_from_otp
new: #2535: Client: improved response object for
update_netconf/swagger()
new: #2541: Client: add Service package to Client Docker image (for integrated)
Fixes:
fix: #1608: Client: make
parameters
optional in Swaggercall_path
fix: #1697: Service/UI: close modals on Escape but not when clicking outside
fix: #1879: Service/UI: highlight rows on hover
fix: #2410: Service/UI: lack of loader in OTP enrollment
fix: #2483: Client: perform cert_bundle migration on startup
fix: #2505: Client: multi-device
update_netconf/swagger()
partial failurefix: #2508: Client/Service: honor proxy settings while doing OCSP checks
fix: #2513: Client: do not print traceback when
write_eof
failsfix: #2521: Client: do not mark
FillerRequest
failed if total updates is 0fix: #2522: Client: AttributeError: ‘NoneType’ object has no attribute
1.4.2
Changelog:
doc: using RADKit Client in a Python web application (e.g.
FastAPI
)new: #2409: Client: simplified imports from
radkit_client[.sync|.async_]
new: #2429: Client: more complete support in DeviceDict for set operations
new: #2448: Service: added
reset_after
parameter toexec
new: #2466: Console: CLI entry point and Windows and macOS shortcuts
new: #2470: Console: support for domains, CXD and
!cmd
fix: #2448: Service: better messages and errors when using jumphost
fix: #2458: Client:
DeviceDict
no longer supports{scp|sftp}_to_destination
fix: #2471: set
pexpect
dependency to>=4.3
fix: #2478: Console: handle file transfer failures more gracefully
fix: #2480: Console: crashes when entering invalid directory
fix: #2487: Console: fix
!cmd
syntax and catch more exceptionsfix: #2494: Service: panel does not show WebUI port when not bootstrapped
fix: #2496: Console:
FileNotFoundError
when~/.radkit/client/
does not exist
1.4.1
Changelog:
new: #2399: Client: Network Console feature (simplified command-line interface)
new: #2437: Client: added
get_context
andclose_context
helpersfix: #2357: Client: do not return before
certificate_login
has completedfix: #2428: Client: inventory view raises exception after inventory update
fix: #2435: Service:
TypeError
when bootstrapping if started from GUIfix: #2444: Client: some regexes do not match when filtering devices by name
fix: #2451: Service/UI: Add & continue button on Add User screen does nothing
fix: #2459: Service/UI: blank page after login on Firefox pre-81
fix: #2461: Client:
sftp_download_to_stream
raisesValueError
fix: #2465: Client/CXD: restore original order of
cxd
parameters
1.4.0
Release summary:
Simplified OTP-based Service enrollment
New SSO-based Service enrollment
Swagger platform support: FMC, UCCE, CVP, Expressway
End-to-end encryption (E2EE) enhancements
Aync/async separation in Client API
Improved scriptability (Client) and headless mode (Service)
CXD SSO/OAuth authentication
Ansible collection integration
Performance and stability improvements + many bugfixes
Breaking changes:
radkit-integrated
CLI entry point removedstart_integrated_service()
command added to the REPLsso_login
,certificate_login
,access_token_login
are now context managersin the REPL: use them as usual:
client = sso_login(...)
etc.in scripts: import and use as
with sso_login(...) as client:
OR use the new
create_context()
constructsee Client: stand-alone scripts in the doc for details
Service now starts and stops with Service GUI
Swagger methods now take
json
parameter instead ofjson_data
HTTP methods now take
content
parameter instead ofdata
Swagger/HTTP results no longer have a
.data
attributeuse
.content
for raw data (binary)use
.text
for decoded data (text)use
.json
for decoded JSON (object)
run_on_service
and other obsolete shortcuts have been removedradkit_client.helpers
was moved toradkit_client.sync.helpers
DNAC
class was renamed toCiscoDNACenter
DeviceFlow
must now be instantiated as.create_device_flow()
from aDevice
orDeviceDict
objectservice.inventory.create_device_flow()
service.inventory[...].create_device_flow()
Features (full list):
new: #564: add Swagger parameters for bytes and form data
new: #1467: Service: many WebUI accessibility improvements
new: #1589: Service: Client-less enrollment using SSO
new: #1590: Service: add support for FMC Swagger API
new: #1925: Service: API support for device/user labels (experimental)
new: #2003: Client: E2EE workflow improvements
new: #2038: Genie: make return values consistent with RADKit Client
new: #2046: support returning metadata within
update_swagger()
new: #2055: Service: automatic bootstrap if
superadmin
password specified in environmentnew: #2058: Service: support and doc for running under
systemd
new: #2062: Client: add
start_integrated_service()
new: #2063: Client: full sync/async code separation
new: #2065: Service: true headless mode with
--headless
new: #2095: Service: add notification tray to WebUI to record toasts
new: #2122: GUI: display Service serial and domain
new: #2135: Service: simplified OTP enrollment (no email/serial)
new: #2159: Client: read CA certificates from package directory
new: #2178: Client/Service: domain-qualified enrollment OTPs
new: #2182: Service: cleaned up and improved toasts in WebUI
new: #2188: CXD support for SSO/OAuth Bearer token authentication
new: #2192: GUI: searchable/filterable logging pane
new: #2192: GUI: simplified Service GUI with single process
new: #2207: Service: improved WebUI bootstrap dialog
new: #2214: Client: add
wait_closed()
to SCP transfer objectsnew: #2231: better request cancellation mechanism
new: #2264: UCCE and CVP device support
new: #2305: Client/Service: E2EE usability enhancements
new: #2320: expose
timeout
for HTTP and Swagger APIsnew: #2369:
create_context()
for standalone scripts (+ doc)new: #2395:
timedLogging
Swagger API support for CMS devicesnew: Client:
exception_traceback
property forRequest
objectsnew: Client:
ping()
command to check Service liveness and RTTnew: Service: ExpressWay Swagger support
new: Service: improved identity certificate validation
new: Service: show certificate details in WebUI
new: improved performance with large inventories (10k’s of devices)
Fixes (full list):
fix: #1539: Forwarder: terminate connection when OAuth token expires
fix: #1744: Client: add
--trace
option for debuggingfix: #1910: Client: improved
DeviceDict
manipulationfix: #1963: Service: decouple
superadmin
password from DBfix: #2025: Service: repeated
AuthenticationFailedError
on wakefix: #2049: Client: Terminal object
wait
/wait_closed
returnself
fix: #2112: Service: modified SSH defaults to 30s timeout w/o reconnect
fix: #2114: Service: backup should not run DB migration
fix: #2121: Client/Service: display domain in panel and WebUI
fix: #2134: Client:
Request cancelled by server
when using E2EEfix: #2146: create directories when
RADKIT_DIRECTORY
is specifiedfix: #2162: Client: mark
terminal()
sessions closed on errorfix: #2163: Client: crash in port forwarding upon SSO timeout
fix: #2171: Service: incomplete termination
fix: #2184: cleaned up async task cancellation
fix: #2195: Service: cannot create
NewDevice
using Swagger APIfix: #2197: Service:
ASGI Framework Lifespan error
fix: #2202: Service: Telnet fails with
no attribute 'is_closing'
fix: #2208: Service: ignore MOTD interference during login sequence
fix: #2216: Client:
RuntimeError
when prompting for priv. key passwordfix: #2218: Service: use new location for CSM OpenAPI definition
fix: #2223: Client:
print
of an object should use tabular formatfix: #2225: Client:
show_progress()
freezes and causes exceptionsfix: #2229: Service:
BrokenResourceError
interrupts SCP uploadfix: #2249: Client/Access:
access_token_login()
failsfix: #2259: Service: tracebacks when started w/o network connection
fix: #2266: Client: port forwarding fails with
WinError 10053
fix: #2268: Client:
SystemExit
traceback afterexit()
fix: #2272: Client/Service: reduce number of connect/disconnect messages
fix: #2274: Service: slowdown during massive DB operations
fix: #2282: Service: no results when searching/filtering by email
fix: #2285: use correct denomination for Cisco DNA Center everywhere
fix: #2292: Service: do not leak connections when preparation fails
fix: #2295: Service:
Generator didn't yield
if WebUI port busyfix: #2313: Client:
reauthenticate()
raisesTimeoutError
fix: #2338: Client: more friendly cert enrollment error message
fix: #2339: Service: session logs not closed along with connection
fix: #2355: Packaging: make Conda env update mandatory on Windows
fix: #2361: Client/Service: SCP upload to IOS-XE fails
fix: #2365: Client: negotiate capabilities before fetching inventory
fix: #2386: Remote: help text for
system status
subcommandfix: #2389: Client/Service: better errors for SFTP transfers
fix: #2396: Client: extra chars returned by
read_line
fix: #2396: Service: improved prompt detection and output processing
fix: #2400: Service:
AssertionError
withfastapi
0.89.0 and laterfix: #2434: Client: notify the user when re-authentication is needed
fix: Service: ignore the user’s
.ssh/config
1.3.9
Changelog:
fix: #2400:
AssertionError: Status code 204 must not have a response body
withfastapi
0.89.0 and laterfix:
ModuleNotFoundError: No module named 'starlette'
whenradkit-remote
is installed by itself
1.3.7
Changelog:
fix: #2247: SCP connections with IOS-XR are not properly closed
fix: DNAC helper should support token authentication
fix: WebUI compatibility issues with Safari
1.3.2
Changelog:
new: build wheels for Linux
arm64/v8
architecturefix: #2200: tab completion is slow for large inventories
fix: #2221: update OpenSSL to 3.0.7 and
cryptography
to 38.0.3
1.3.1
Breaking changes:
Support for Python 3.10 has been withdrawn temporarily (see Compatibility section of the doc for details)
Remote:
-f
and-o
CLI args removed, use--input
and--output
insteadService: removed
Email
field from Enrollment screen (will be further simplified in future releases)
Important change:
on the Client, device names are now turned into unique, DNS-compatible canonical names
this makes it possible to access devices with colliding display names coming from DNAC Support Service
this makes all devices reachable via a Client-side SOCKS5 proxy URL (see SOCKS5 section of the doc)
Changelog:
corrected video URLs on website and in documentation
new: Service: removed
Email
field from Enrollment screennew: Service: bulk API for users (remote/admins)
new: show a helpful error when a setting is unknown or invalid
new: Service: better display and handling of identity certificates
new: Service: more complete backup on
backup
command or DB migrationnew: Service/Client: customizable password complexity policy (see doc about Settings)
fix: Remote:
device_create()
fails due to missinghttp_username
andhttp_password
fix: #1923: Remote:
forwarded_tcp_ports
should not be mandatoryfix: #2104: Service: traceback in Candela due to permissions error
fix: #2129: WebUI: improved “select all” behavior
fix: #2131: Service: crash on reauthentication
fix: #2139: Client: showing incorrect forwarder status
fix: #2142 #2186: DNAC: several fixes in
DNAC
class helperfix: #2145: WebUI: errors while editing devices within Tray
fix: #2155: Client: cannot
import
from current dir when running scripts with thescript
subcommandfix: #2157: Service: restore SSH keepalive support for AireOS devices
fix: #2177: WebUI: go back to previous page if current is empty after deletion
fix: #2189: WebUI: strip leading/trailing whitespace in Serial and OTP during Enrollment
1.3.0
DNA Center Support Service (PLEASE READ):
For test/lab DNACs, pass the
STAGE
domain to thesso_login
functionFor production DNACs, you need the
PROD
domain which is now the default
Breaking changes (PLEASE READ):
Service:
sn.cfg
replaced byserial.json
(back up~/.radkit
if you plan to downgrade)Client, Service: default to
PROD
domain (re-enrollment needed)Client, Service, Remote: new HTTP proxy settings (see doc about HTTP proxy)
Client, Service, Remote: some environment variables renamed (see doc about settings)
Client: running a script is now done using the
script
subcommandRemote: CLI syntax and output have changed (see
radkit-remote --help
)
Changelog:
default domain changed to
PROD
for Client and Servicemajor improvements to RADKit Cloud including performance, logging and monitoring
documentation updated and expanded
many internal improvements to stability and scalability (more to come)
new: support for end-to-end encryption (experimental, disabled by default)
new:
DNAC
helper class for DNA Center integrationnew: generic
api()
call in RADKit Genienew: support for
sudo
privileged commands usingexec(..., sudo=True)
new: bulk import/update in Remote
new: better settings management (incl. reading settings from TOML file)
new: support for HTTP Proxy Basic authentication
new: macOS
.pkg
installer for Apple Siliconarm64
architecturenew: keep track of multiple Service serials and certs on different domains
new: API to start
radkit-integrated
from a Python scriptnew: support for using vManage as jumphost to reach cEdge over DTLS tunnel
new: management of additional Service admin users
new: improved search filter in Service WebUI
new: support for storing HTTP username/password (experimental, currently unused)
new: loader icon for connection attempts in WebUI
fix: WebUI search filter bug involving the
not
operatorfix: intermittent TCP Tunneling failures on Windows
fix: #1622:
ephemeral
attributes lackupdate
andclear
methodsfix: #1747: remove TLS workaround for CXD after infra upgrade
fix: #1774: re-add
Device.update_attributes()
fix: #1791: better error messages during Service enrollment
fix: #1796: fixed
exec
result ordering in Clientfix: #1876:
print
has abnormally bad performance on Clientfix: #1880: SCP upload/download doesn’t show proper status after closing
fix: #1897:
scp_upload_from_file
fails when trying to upload an empty filefix: #1901: Client stuck after “log out all sessions” in Access
fix: #1927: audit trail details show up in terminal but not in log file
fix: #1942: Netconf password gets saved as
"***********"
fix: #1970: Candela errors on Windows
fix: #1972: removed option to change admin username in Remote
fix: #1979: improve CLI response time for some subcommands
fix: #1998: missing
webserver.key
causes tracebackfix: #2007: service keeps outdated Swagger parameters in cache
fix: #2029: errors when running multiple concurrent Client objects
fix: #2047: Remote does not use standard output
fix: #2051: make sort maintain state post actions on table
fix: #2068: move the warning about unsupported browsers to the login screen
1.2.2
improved handling of request cancellations
improved handling of expired users in RBAC
fix: #1858: wait for the prompt before disabling the pager
fix: #1916: wrong encoding for CMS Swagger in Windows
fix: #1918: compatibility error with
fastapi==0.79
1.2.1
new
access_token_login
function in RADKit Clientnew
reauthenticate
method onClient
objectimproved audit logging in Client and Service
improved API documentation (still in progress)
improved stability (async task handling)
fix: #1843: multiple bugs in RADKit Remote
fix: #1873: missing env vars for Docker container startup
fix: #1883:
Client.enroll_client
should only takeclient_id
as parameter
1.2.0
new: PyATS/Genie integration layer (
pip install
only for now; EXPERIMENTAL)new: support for non-Swagger HTTP(S) APIs (EXPERIMENTAL)
further improvements to handling of many parallel connections
multiple improvements to log file monitoring using Candela in WebUI
fix: #1735: increase SSO login timeout in Client
fix: #1750: certificate-authenticated Client or Service cannot reconnect after token expires
fix: #1761: two Client instances cannot authenticate with certs simultaneously
fix: #1766: Candela stalls when opening a log file
fix: #1794: Client traceback when connecting to a Telnet console
fix: #1803: TypeError when accessing AireOS device over SSH
many more improvements under the hood
1.1.5
fix: #1580: SOCKS proxy yields non-actionable errors
fix: #1799:
UnboundLocalError
when enrolling the Client
1.1.4
added support for certificate-based Client authentication
added support for SFTP file transfers
dynamic management of open sessions to allow for large-scale querying of devices
Service and Client Docker images now on https://containers.cisco.com/organization/radkit?tab=repos
license expiration extended to 12 months for releases, 3 months for special builds
additional rights management in RADKit Access
new
STAGE
environment (for testing only, do not use unless instructed)documentation updates with links to videos
fix: #1624: “About” box in WebUI not displayed on Safari
fix: #1660: finished SCP sessions remaining in “Connected” state
fix: #1666: pager not disabled on IOS-XR devices
fix: #1677: CXD authentication fails due to legacy SSL option set by server
fix: #1688: WebUI/API sessions not timing out as they should
fix: #1693: update Remote
ServiceAPI
for new service bootstrap logicfix: #1700: SOCKS proxy does not recognize device names containing dots
fix: #1701: maximum number of SOCKS connections too low
fix: #1703: disable proxy support in Service GUI
fix: #1704: unhandled exception when closing Client with open terminal() session
fix: #1706: SSO login results in
TypeError
when timing outfix: #1707: restore certificate arguments to
radkit-interactive
fix: #1714: make
--version
available everywherefix: #1717: increase Service certificate lifetime
fix: #1741:
InvalidState
traceback in authenticationfix: #1743: some SSO sessions fail to refresh their token
fix: #1749: Service GUI stuck when stopping the Service
fix: #1754: set default domain for Client with
--domain
orset_default_domain
fix: #1755: need
open_browser
flag insso_login()
fix: #1763: suppress log message at the start of
radkit-interactive
fix: #1769: display domain and auth method for Client object
fix: #1771: WebUI “Help” link gives iframe error
1.0.6
fix: #1654:
pyang
raisesFileExistsError
on Windows when using a temporary filefix: #1637: Client copyright notice text should wrap
1.0.5
fix: #1646:
pyang
not found when using Windows/Mac installerfix: #1644: GUI fails to recognize “not yet bootstraped” status from Service
1.0.4
cosmetic improvements in Windows and Mac installers
fix: #1564: some OAuth/SSO requests resulted in 504 Server Error
fix: #1599:
enroll_service()
now returns consumable object instead of simply printing enrollment infofix: #1610: Windows installer failed on machines with missing proxy or without internet access
fix: #1631: Remote displays hint for
--service-url
if/api/v1
is omittedfix: some code-signing errors on macOS went unnoticed due to silenced
ImportError
1.0.2
added support to run on Apple Silicon within an
x86_64
(non-native) Python environmentdropped support for Python 3.7 on macOS (all architectures)
fix: #1611: RADKit won’t start when deployed using Windows installer
fix: #1602: “Basic Constraints of CA cert not marked critical” error
fix: #1601: cosmetic fixes in Windows and macOS installers
fix: #1598: macOS wheels fail to start in some Python environments
1.0.0
Initial release