ENMS Versions Save

An enterprise-grade vendor-agnostic network automation platform.

v4.7.1

2 months ago

minor bug fixes

v4.7

7 months ago

eNMS v4.7

v4.2

2 years ago
  • 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

v4

2 years ago
  • 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

v3.22.3

3 years ago
  • 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

v3.22.2

3 years ago
  • 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

v3.22.1

3 years ago
  • 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

v3.22

3 years ago
  • 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.

v3.21.3

4 years ago
  • 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

v3.21.2

4 years ago
  • 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