Skip to content

πŸ”–v9.3.0

Choose a tag to compare

@Pack3tL0ss Pack3tL0ss released this 14 Feb 02:41
· 4 commits to master since this release

Commands/Options Updates / New Commands/Features

  • 🚚 For non glp configs assign license is now assign subscription
  • 🚚 swarm option in reboot is not -S for consistency with option elsewhere
  • ✨ Add cencli migrage devices <to_workspace> ... Command to migrate devices from one workspace to another.
  • ✨ Add batch update devices (requires GLP config) to update devices in GLP inventory.
  • ✨ show archived now uses glp API if configured
  • ✨ archive/unarchive and batch archive/unarchive now support glp API endpoint if configured
  • ✨ cencli update config self now supported to launch editor on cencli config file.
  • ✨ Transition add device and batch add device to use glp endpoints add support for --tags in both.
  • ✨ batch delete devices now supports glp API endpoint if glp info in config.
  • 🚸 Allow -yy to bypass prompt even if warning occur. in batch add devices
  • ✨ batch delete sites now supports text with site name on each line in import file
  • ✨ batch subscribe can now re-subscribe existing devices by site / group assigning the subscription matching current tier with the most remaining time left on the sub.
    • It currently does not skip devices already assigned to that tier, but that also does no harm... GLP will just assign the subscription without error (even though it is the same subscription that was already assigned)
  • ✨ Support multiple filters for show device commands (Done after responses are fetched as API does not support multiple filters)
  • ✨ Add get_devices for cnx mrt API (Not a command yet, just the function)
  • ✨ Verify status of cache devices that show Up during batch delete
  • ✨ Add rate-limit attrs from header for cnx MRT APIs
  • ✨ Add service_managers APIs
  • ✨ Add properties for async_status_url (glp async endpoints that require secondary call to fetch actual results), along with headers property, and summary dict (used to add key details of async opp status response to original response output).
  • ✨ cencli show inventory (GLP) now supports --assigned --no-assigned to only fetch devices assigned to service (Aruba Central) or not.
  • ♻️ Improve show interfaces
  • 🚸 tweak show wlans output and verbosity options
  • 🚸 We now support and display the title for responses w/ tablefmt="action". Also improve caption display for "action" responses
  • βž• Add optional support for xlsx imports. Need to install with xlsx optional dep using uv tool install centralcli[xlsx]

Resolved Bugs

  • πŸ› Fix bug when renaming site with only geoloc information
  • πŸ› Fix bug in remove_devices (GLP) issue with chunker requesting > 25 devices on 2nd chunk and beyond
  • πŸ›πŸ—ƒοΈ Fix logic error in cache update after showing devices for a site (or group) that would truncate the dev db.
  • πŸ› Fix a bug in show all with filter (i.e. --site somesite) when the filter has no APs (empty payload)
  • πŸ› Fix bug when adding devices without GLP config
  • 🩹 Minor fix to prevent IndexError in _get_spin_text. This is now possible with some glp calls that require multiple calls to the same endpoint (that lack that pagination sfx)
  • 🩹 fix show interfaces sort for verbose output
  • 🩹 fix pager when response is a renderable (rich)
  • 🩹 re-fix csv formatting in show wlans
  • 🩹 Fix gw_role issue when group is added with --sdwan
  • 🩹 fix delete devices not displaying the result (classic API delete)
  • 🩹 Fix classic API show inventory rare scenario where call to fetch inventory passes, but call to fetch subscriptions fails.
  • 🚸 show wlans now honors ssid name when filter flags or verbose output is specified. Improved captions, and verbose output.
  • 🚸 Fix auto country for US when import has state nested under "site_address"
  • πŸ₯… Prevent potential for IndexError when only failed responses sent to get_progress_of_async_ops()

Usability / Other improvements

  • πŸ”Š Update logs / messsaging / Spinners
  • πŸ—ƒοΈ Add cache update after glp add/delete
  • πŸ—ƒοΈ Add table to cache GLP application_ids (from serrvice catalog)
  • πŸ—ƒοΈ Add cache update after assign | unassign subscription
  • 🩹 Avoid ambiguous multi-match in ts ping when pinging from stack (auto select commander)
  • 🩹 Avoid ambiguous multi-match scenario in show clients by device when device is a stack (auto select commander)
  • ⚑️ Improve cache inventory update performance (glp). Added mechanism to specify the serial numbers that need to be fetched to limit the scope of the refresh, reducing update time in large environments.
  • ⚑️ Prevent full api call when cache already updated in batch_add_devices_glp
  • ⚑️ Make LicenseTypes dynamic Enum a cached_property
  • ⚑️ When serial_numbers are sent to refresh_inv_db they are now validated to ensure they are serial numbers and ignored if they are not.

    This is useful as for some imports you can technically provide a json/yaml by any device identifier and cencli will lookup what that device is (i.e. batch archive).

  • 🚸 Improve and add more info to output of batch verify
  • 🚸 Handle empty payload in show interfaces response (caption)
  • 🚸 Add spinner during inventory data prep for cache update
  • 🚸 Send non raw messging to stderr when using --raw so raw response can be piped to file.
  • 🚸 Return proper exit code for show dhcp clients -v when call to fetch dhcp res info fails.
  • 🚸 Allow text import for batch subscribe if --sub is provided on command line.
  • 🚸 Return exit code 1 if partial failure in show firmware swarm
  • ♻️ Simplify (more reuse) batch add / update glp devices funcs.
  • ♻️ Improve import device models (validation/transormation of import data)
  • ♻️ Prevent actrion responses from being sent to cleaner if there is no output or the cleaner is simple_kv_formatter (which expects a list[dict])
  • ♻️ ensure add_devices always returns a list[Response] even when only single call is made

Dev/Testing improvements

  • 🚚 parse_var_value_list. Moved to utils and improved. Allows tags to be specified with single word tag.
  • πŸ”Š increase log size in Rotating handler, nearly 4x. pytest run would exceed single file.
  • ✨ Add dev cache-update Allows you to update the value of a cache entry from the CLI (primarily useful for testing)
  • ✨ Add new dev command to remove items from cache manually (generally for ad-hoc testing)
  • 🚸 Add support for cleaning output for "action" responses in render.display_results.
  • 🀑 Improve --capture-raw functionality
  • 🀑 converrt event ts from mock responses to int j2 from json does str as it keeps the outer "
  • 🀑 improve mock response stashing and lookup for test runs
  • βœ… reorganize test data, where dynamic test files are stored, and make all test files dynamically created temp files (even when nothing changed from the source) ... for consistency.
  • ♻️ Improve logic in already used response detection, treat per test responses as separate responses to be tracked as used.
  • ♻️ Add generic_type property to CacheInvMonDevice object
  • πŸ§‘β€πŸ’» Add --no-glp hidden dev flag for testing as if glp is not configured
  • πŸ§‘β€πŸ’» add helpers to utils:
    • format_table() ensures a list of dicts has same keys for all dicts.
    • normalize_sub_fields() ensures device import with subscription has consistent key field for "subscription". (import will allow "subscription, "license", or "services" not case sensitive)
  • πŸ§‘β€πŸ’» utils improvements color now supports "dim", summarize_list supports list of CentralObjects (anything with a summary_text attr)
  • πŸ§‘β€πŸ’» Add CLIStrings class
  • πŸ§‘β€πŸ’» Add exit_code property and argument to Response object. This is needed because many Response objects are actually combined responses. If resp.ok is not True render.display_results will treat it different / doesn't display tabular output.
  • πŸ”‡ Add JsonDecodeError to PYTEST_EXPECTED_EXCEPTIONS to squelch the traceback in the log during pytest runs.
  • ⚑️ Create faster utills.all_keys function (faster than previous list comps)
  • 🏷️ Create typed_lru_cache wrapper to preserve type hints in ide for lru_cache wrapped functions.