Releases: eNMS-automation/eNMS
Releases · eNMS-automation/eNMS
eNMS v4.2
- Add Network builder mechanism
- Add 3D visualization of network devices
- Extend Devices and Links with subclass / custom properties and a separate tab in the UI, the same way services work.
- Remove deep_services function used for export, use service.children relationship instead.
- Dont subclass SQLAlchemy Column following advice of SQLAlchemy creator.
- Make corrupted edges deletion mechanism a troublehooting snippet instead of a button in the admin panel.
- Move redis configuration in settings.json > "redis" key
- Add new mechanism to limit results in server-side drop-down list with filtering constraints.
- Limit superworkflow selection to workflows that contains the shared Placeholder service.
- Set trigger variable to "Regular Run" or "Parameterized Run" when service is triggered from the UI instead of "UI".
- Add SSH Proxy mechanism (multiple jump server in gateways property, gateway device subtype, priority
tie-break mechanism) - Consider runtime limiting user / all toggle mechanism in the restart service window.
- Move doc link to settings.json to allow custom doc links for plugins. Generate doc link in the jinja2 template
instead of javascript (otherwise, wrong doc link until updated in js) - Move tables refresh rate to settings.json to allow for custom refresh rates.
- New "Category" property / mechanism for the drop-down list of the site and workflow builder.
- Reinstate service selection with single left click (Ctrl no longer needed)
- Remove pytest, coverage, and travis dependencies.
- Reinstate single left click for node selection in workflow & site builder.
- Remove most union subquery in rbac_filter because a union of query yields a CompoundSelect
SQLAlchemy object, and this is not compatible with using with_entites (via filtering properties kw). - Fix export in bulk (the hierarchical display mode was not considered, all services inside a workflow
were exported even when "hierarchical display" was selected) - Add notification banner mechanism
- Remove default_access property, replace with "admin_only" boolean. Impact on migration.
- Make "run_service" rest api endpoint default to async True
- Update netmiko and napalm Backup services to load deferred row before updating. Impact on both services.
- Remove pathlib from requirements.txt
- Update workflow algorithm to not add services to priority queue in DxD mode if all are discarded.
- Update Ansible Service to use custom path in cwd argument of subprocess.check_output.
- Change default priority to 10 for services. Update of migration files required.
- Implement Cache Invalidation mechanism so that javascript/css files are reloaded at each release.
Cache invalidation is activatated by setting "invalidate_cache" to true in settings.json.
eNMS automatically renames the version folder in static / js and static / css to the version number
stripped from its punctuation. - Add new check box "Approved by an Admin user" in the Unix Command service. That box must be ticked by
an admin user for the service to be allowed to run. A non-admin user cannot save a service if it is
ticked, meaning that each time a Unix Command service is edited, it must be re-appproved. - Add new timeout parameters for Scrapli service
- Always show security logs, even when logging is disabled. Add "allow_disable" (default: True) keyword argument
to log function to prevent logs from being disabled if necessary. - Add new 'deactivate_rbac_on_read' property in rbac.json, under 'advanced' key. Set to true by default.
When true, eNMS no longers applies rbac for reading from the database. (=> better performances) - Make the vendor, operating_system and model properties a custom list for devices, links and services,
and category for sites and workflows. The drop-down list choices can be configured in properties.json > property_list key. - Add support for renaming objects from the REST API (with key "new_name")
- Add limit to maximum number of nodes that can be displayed in site builder". Configurable via
visualization.json > Network Builder > max_allowed_nodes - Add new option to display site nodes as ellipses instead of images for better performances. Configurable via
visualization.json > Network Builder > display_nodes_as_images - Auto-update Vendor and Operating System property value of a new service in the workflow builder
based on the values of these properties in the parent workflow. - Add support for custom ordering in plugin tables (configurable by overriding the tableOrdering function in the
table JS class) - Add support for using device credentials in the Rest Call Service (impact on migration files:
"username" / "password" => "custom_username" / "custom_password"). Don't allow using device credentials
if the run method is set to "Run Once". - Make webssh command configurable from settings / ssh section
- Add new label size property to configure label size in workflow and network builder
- Add new "Configuration" RBAC mode
- Make "sessions" an admin model (visible only to admin users)
- Update git service to support git clone, shallow clone and custom path to local folder (instead of hardcoded path to
"network_data" folder) - Update slack notification service to use newest slack_sdk library (instead of slackclient<2)
- Make scrapli connection arguments configurable from automation.json / scrapli / connection_args
eNMS 4
- Refactor of the run mechanism. When running a service, a single run is created and saved to the
database. - Remove "operation" (any / all) property from pool
- Change the way pool objects are computed: via SQL query instead of pure python:
better performances expected for large pools. - Add regex support for SQLite
- Add new "Invert" option for table filtering
- Move terminal application for web SSH feature inside the application: the terminal application
was previously moved outside the application because websockets requires sticky sessions which is
incompatible with having multiple gunicorn workers. Moving to a deployment where eNMS is started
multiple times with 1 gunicorn worker via the backend stream configuration, it is now possible for
the terminal to be inside the main application. - Fix submenu bug when the menu is minimized (gentelella bug)
- Replace prerequisite edge with priority mechanism
- Allow making non-shared service shared and vice-versa (if the shared service doesn't have more than one workflow).
- Separate progress for main devices & iteration devices in workflow builder
- Fix bug where subworkflow device counters not displayed in results when device iteration is used
Bug report mail: "No status for services in subworkflow with device iteration" - HTTP requests logging: all requests are now logged by eNMS and not by werkzeug like before.
=> fine grained controlled for what is logged for each request. The log now contains the username. - Add duplicate button in service table
- Refactor the geographical and Logical View to behave like the workflow builder:
- List of all pools that contain at least one device or link, stored in user browser local storage
- Remove default pool mechanism. Remove "visualization_default" property in pool model.
By design, the default pool becomes the first pool in alphabetical order - Add backward / forward control like the workflow builder
- Add global "factory" and "delete" functions in the workflow builder to create and delete new objects
from a workflow. - When refreshing a pool, rbac is now ignored so that the pool "refresh" action result does not depend on the
user triggering it. - If a workflow is defined to run on a set of devices, and the user lacks access to one or more devices,
execute for all accessible devices and fail for the inaccessible devices instead of failing the entire workflow. - Store and commit web SSH session content in backend instead of relying on send beacon mechanism and
onbeforeunload callback so that the saving of a session does not depend on user behavior - Add new "Empty" option in table filters and pool definition to filter based on whether the property
value is empty or not. - Add table display with property value constraint when clicking on the charts in the dashboard.
- Add scrapli netconf service
- Move LDAP and TACACS+ server init to environment file instead of custom file. Impact on authentication
ldap / tacacs functions. - Add Token-based authentication via REST API. New GET endpoint "/rest/token" to generate a token.
- Separate controller (handling HTTP POST requests) from main application (gluing everything together)
Impact:
- In plugins,
- the "custom" file that contains pre_init, post_init, and the authentication custom code no longer inherits
from the controller
- Add new "ip_address" field in settings.json > app section
- Add paging for REST API search endpoint: new integer parameter "start" to request results from "start"
- Add server time at the bottom of the menu (e.g for scheduling tasks / ease of use)
- Add button in service table to export services in bulk (export all displayed services as .tgz)
- Ability to paste device list (comma or space separated) into a multiple instance field (e.g service device and pool targets)
- Re-add current Run counter to 'Service' and 'Workflow' on the dashboard banner + Active tasks
- Ability to download result as json file + new copy result path to clipboard button in result json editor panel
- Ability to download logs as text file
- When importing existing workflows via service import, remove all existing services and edges from the workflow
- Upload service from laptop instead of checking for file on the VM
- Add Parameterized Form mechanism to update run properties and payload.
- Add new "full results" button to results tree
- Fix bug in WB where multiple services stay selected
- Add confirmation prompt in workflow builder before deletion
- Change default postprocessing mode to "Run on success only"
- Add log in case postprocessing is skipped
- Add SSH key support in generic file transfer service
- Always set "look_for_keys" to False in generic file transfer service - no longer an option
- Add validation_section mechanism: set path to section of the result to validate (default: results["result"])
- Add new "connection_name" mechanism to open multiple parallel connections to the same device in the
same workflow - Add new "get_credential" global variable in workflow builder. Used to get a password or a passphrase
for a netmiko validaiton command or rest call service. For obfuscation purposes.
mail: Obfuscate Credentials passed into Netmiko Command Line - Fix data extraction service and operation keyword in set_var
- Don't set status of currently running services to "Aborted" when using a flask CLI command
- Add TextFSM support for the netmiko validation service (+ regression workflow)
- Add stop mechanism for services in the Result table
- Add server name parameter in Run table to specify which server a service was run from.
Server to be configured from env variable SERVER_NAME and SERVER_ADDR. - Lock editing / run of Workflow to group of owners
eNMS 3.22.3
- Add regression workflow for file transfer
- Fix RBAC service run and task scheduling REST API bug
- Fix payload extraction workflow setitem bug
- Add regression workflow with lots of service for scalability testing
- Add regression workflow for skipped service in workflow targets SxS run mode
- Fix rest call service local() scope bug
- Fix get var / set var "devices" keyword bug
- Add jump on connect parameters for netmiko backup service
- Fix skipped query with device in service by service with workflow targets mode bug
eNMS 3.22.2
- Fix iteration device factory commit bug
- Fix workflow in service by service with workflow targets skipped and skip query service bug
- Add missing rbac endpoints in full + read only access
- Fix device creation empty driver due to Scrapli
- Fix workflow iteration mechanism bug
eNMS 3.22.1
- Add user authentication method in user forms
- Fix settings saving mechanism
- Fix gunicorn multiple workers sqlalchemy post fork session conflict bug
- Dont prevent wrong device GPS coordinates from displaying links in network view
- Fix RBAC bugs
- Add new Scrapli service to send commands / configuration to network device
eNMS 3.22
- Remove database url from settings. Configured via env variable DATABASE_URL
- Remote scheduler
- Remove TACACS+ parameters from settings, use env variable instead: TACACS_ADDR, TACACS_PASSWORD
- Make REST API accept Tacacs and LDAP credentials (in the last version, if you were using TACACS+ or LDAP, you could authenticate
in the UI but couldn't make calls to the REST API) - Remove LDAP parameters from settings. The LDAP authentication is in the custom controller, there is a default
function that works with a standard LDAP installation, but you can customize however you want.
The LDAP server is now configured with the env variable LDAP_SERVER.
The settings contain a new section "database" to enable ldap, database or tacacs authentication. - Add
replier
option in send mail mechanism - Rename "app_log" option to "change_log" in log function for services
- Add new entry in workflow RC menu "Workflow Results Table": contains all results for a given runtime,
allowing for comparison of results same device / different service, same service / different device, etc. - Refactor logging mechanism. In settings.json, add new logging sections to configure whether the log
for a given logger should also be logged as changelog or service log by default. - RBAC
- Fix authentication bug flask_login and add session timeout mechanism
- Make plugins separate from eNMS in their own folder, add bash script to install/update/uninstall them
- Make the CLI interface a plugins
- Remove summary from service state to improve workflow refresh performances
- Add Dark mode and theme mechanism
- Make search endpoint work with result to retrieve device results
- Allow dictionary and json as custom properties. For json properties, use jsoneditor to let the user
edit them. - Add placeholder as a global variable in a workflow (e.g to be used in the superworkflow)
- Add mechanism for creating custom configuration property
- Refactor data backup services with custom configuration properties. Implement "Operational Data" as
an example custom property. - Add new Git service. Replace "git_push_configurations" swiss army knife service with instance of git service.
- Add database fetch/commit retry mechanism to handle deadlocks & other SQL operational errors
- Add validation condition for validation section.
eNMS 3.21.3
- Add new plugins mechanism
- Fix bug help panel open when clicking a field or label
- Add error message in the logs when a service is run in per device mode but no devices have been selected.
- Add default port of 22 for TCP ping in ping service
- Disable edit panel on double-click for start/end services of a workflow
- Fix invalid request bug when pressing enter after searching the "add services to workflow" panel
- Forbid "Start", "End" and "Placeholder" for service names
- Fix Result in mail notification for run once mode
- Make Netmiko prompt command service a substitution string in the UI
- Fix wrong jump password when using a Vault
- Fix workflow results recursive display no path in results bug
- Improve "Get Result" REST endpoint: returns 404 error if no run found, run status if a run is found but there are
no results (e.g job still running), and the results if the job is done. - Remove wtforms email validator in example service following wtforms 2.3 release
eNMS 3.21.2
- Fix rest api update endpoint bug
- Add device results to rest api get_result endpoint
- Rename subservice -> placeholder
- Fix rendering of custom boolean properties
- Fix custom properties accordion in service panel
- Fix service cascade deletion bug with service logs and placeholder
- Fix front-end alert deleting services and make it a success alert
- Fix historical config / oper data comparison mechanism
- Fix bug where superworkflow cannot be cleared from list after selection
- Fix bug placeholder service deletion from workflow
- Make superworkflow a workflow property only. Remove superworkflow targets option
- Display only workflows in the superworkflow drop-down list
- Save alert when displaying python error as an alert
- When using a custom logger, only the actual user content is logged
- Update docs rest API
- Improve log function (custom logger behavior / creator)
- Fix superworkflow bug for standalone services
- Dont display private properties in parameterized run results
- Add Ansible playbook service log to security logger
- Update superworkflow initial payload with placeholder service initial payload
- Dont update netmiko and napalm configuration / oper data backup if empty result / no commands
eNMS 3.21.1
- Upgrade JS Panel to v4.10
- Fix jspanel position on long pages with a scrollbar
- Fix subservice double-click bug
- Fix table display bug
- Fix operational data display bug
eNMS 3.21
- When entering a subworkflow, the selected runtime is now preserved.
- When running a workflow, the runtime is added to the runtime list in workflow builder and selected.
- Workflow Refresh button now updates the list of runtimes in the workflow builder dropdown of runtimes.
- Duplicating a shared service from the workflow builder now creates a NON SHARED deep copy in the current workflow only.
- Created dedicated category for shared services in "Add services to workflow" tree.
- Implemented "Clear all filters" mechanism for all tables
- When displaying workflow services in service table, all search input resetted (otherwise nothing was displayed)
- Add download buttons for configuration and operational data
- Add button in tables to export search result as CSV file.
- When duplicating top-level workflow, display edit panel
- Fix progress display for service in run once mode in workflow builder
- Multiline field for skip / device query
- Add "Maximum number of retries" property to prevent infinite loop (hardcoded before)
- Add "All" option in relationship filtering (filter object with relation to All)
- Rename "never_update" with "manually_defined"
- Set focus on name field when creating a new instance
- New property in service panel (targets section): Update pools before running.
- Extend the custom properties to all classes including services (displayed in an accordion in first tab).
- Add new search mechanism in the "Add services to workflow" panel
- Add new "Trigger" property for runs to know if they were started from the UI or REST API
- Add time-stamp of when the configuration / oper data displayed was collected
- Ability to display config older config from GIT
- Ability to compare currently displayed config/data to any point in time in the past.
- Syntax highlight option: ability to highlight certain keywords based on regular expression match,
defined in eNMS/static/lib/codemirror/logsMode. Can be customized. - New logging property to configure log level for a service or disable logging.
- Fix bug when typing invalid regex for table search (eg "(" )
- Dont display Start / End services in service table
- Make configuration search case-insensitive for inclusion ("Search" REST endpoint + UI)
- Use log level of top-level workflow for all services.
- Add context sensitive help mechanism
- Add keyword so that the "log" function in a service can log to the application log (+ create log object)
- Add timestamp for session logs
- Add device result counter in result tree window
- Move to optional_requirements file and catch import error of all optional libraries:
ansible, hvac, ldap3, pyats, pynetbox, slackclient>=1.3,<2, tacacs_plus - Fix Napalm BGP example service
- Fix 404 custom passwords logs from Vault
- Encrypt and decrypt all data going in and out of the vault (b64 / Fernet)
- No longer store user password when external authentication is used (LDAP/TACACS+)
- No longer create / import duplicated edges of the same subtype.
- Add preprocessing code area for all services
- all post processing mode: "run on success" / "run on failure" / "run all the time" selector
- Support functions and classes with set_var / get_var
- Fix front end bug when displaying the results if they contain a python SET (invalid JSON):
all non-JSON compliant types are now automatically converted to a string when saving the results in the
database, and a warning is issue in the service logs. - Add superworkflow mechanism
- Add jump on connect support
- Add log deletion support from CLI interface
- Forbid import of "os", "subprocess" and "sys" in a python code area in service panel
(snippet, pre/postprocessing, etc) - Refactor logging configuration: all the logging are now configured from a file in setup: logging.json
Besides, the log function in a workflow takes a new parameter "logger" where you can specify a logger name.
This means you can first add your own loggers in logging.json, then log to them from a workflow. - Remove CLI fetch, update and delete endpoint (curl to be used instead if needed)
- Improve workflow stop mechanism: now hitting stop will try to stop ASAP, not just after the on-going
service but also after the on-going device, or after the on-going retry (e.g many retries...).
Besides stop should now work from subworkflows too.