Skip to content

Version 5.3: JSON Migration and Performance Improvements

Latest

Choose a tag to compare

@afourmy afourmy released this 08 May 02:50
  • Add new JSON migration mechanism
  • Make Service.name a SmallString, otherwise mysql fails to initialize with the following error:
    "MySQLdb.OperationalError: (1170, BLOB/TEXT column 'name' used in key specification without a key length)"
  • Increase size of 'payload' field in Rest Call Service
  • Performance Optimizations
  • Remove lazy join for workflow edges and servers
  • Run Targets Devices and Pools association and Run Allowed Targets Update:
  • Increase maximum number of threads to 1000
  • Move the 'runtime' property to the first column of the Run ('Results') table so that runs are always
    sorted by runtime, even when they have custom names via parameterized form.
  • Change memory_size from an Integer to a String in database (to avoid integer overflow issue)
  • Add new "scan_folder_on_startup" option to make calling "scan_folder" on first app init optional
  • Update bulk edit mechanism to take the bulk filtering form into account when filtering (previously,
    bulk edit does not work with relationship filtering, e.g find all services that belong to a workflow
    then bulk edit filtered services)
  • Make 'get_git_content' and 'scan_folder' optional on app startup with new optional "on_startup" key
    in settings.json
  • Changelog Diff Improvements:
    • Make 'Side by Side' the default visualization mode and increase panel width
    • Remove the newline in the content of a changelog before 'Added' and 'Removed' so it can be searched in the changelog
      table, and add the diff in Changelog.history so that updates to an object relationships can be displayed in the git
  • Fix edge display (workflow edge in workflow builder and link in network builder) not updated after either name or
    color is modified bug
  • Fix bug in workflow builder: if user selects node A (single left click), then drags node B (without selecting it),
    then drag node A again, node B is being dragged instead of node A. to fix it, when dragStart is emitted, we check
    whether the node being dragged is selected or not; if it is not, we select it
  • Refactor REST Call Service to store payload as string instead of JSON
    • Convert payload field to StringField instead of DictField
    • Add a new property "Substitution Type":
      • String Substitution: the payload is not a valid dict in itself: it will be substituted first, then converted from a
        string to an actual dictionary with ast.literal_eval before using it as "json" argument
      • Dict Substitution: the payload is a valid dictionary represented as a string: it is first converted to an actual
        dictionary with json.loads, then it is substituted (ensures backward-compatiblity)
        By default, the property is set to String Substitution, but migrated services are using the Dict Substitution option.
    • If the 'Subtitution Type' is set to 'Dict Substitution', validate the payload field by converting it to a JSON object
      with json.loads (replaces the "json_only" option of DictField previously)
  • Outgoing Edge Mechanism:
    • Refactor the graph traversal algorithm to allow for edges other than success and failure: the user can define
      an "outgoing_edge" variable in python (e.g in post-processing) to decide which edge to follow next
    • Update the Workflow Builder to support displaying multiple edges between two services
    • Add new regression workflow: "Outgoing Edge Mechanism"
  • Add 'Export as CSV' buttons in Runs table (Results page) and Tasks table (Scheduling page)
  • Fix bug where service targets are not copied when duplicating a workflow (e.g a workflow in SxS service targets mode)
  • When refreshing logs with a redis queue, don't always fetch all logs from redis, only fetch the logs up to start_line
    as provided by the front-end
  • Add new "size" property to Files to see filesize on disk in form and table
  • Normalize strings in the front-end during form serialization to remove windows and mac line endings so that changelogs
    don't get created for line ending changes
  • Add new Rate Limiter Feature
  • Improve the JS table search code to prevent sending multiple searches in parallel to the server:
  • Remove device connection dict from 'connection_cache' in disconnect function if there are no other connections
    for that given, otherwise the connection count in 'check_connection_numbers' is wrong
  • Add new 'polling_interval' setting to configure the polling interval of the file monitoring mechanism with
    watchdog PollingObserver
  • Decouple the File Monitoring process with watchdog from the main app:
    • The File Monitoring process must be started independently from the main app, with the FILE_WATCHER
      environment variable set to 1
    • Remove the "monitor_filesystem" variable from settings.json
  • Don't trigger UI refresh if the tab does not have focus (for table refresh, network builder refresh and
    workflow builder refresh)
  • Add new 'result_dict' variable in the results that contain the 'results' before post processing (useful to get
    device output in services like netmiko commands in case post-processing is failing because the 'result' variable
    then becomes the stacktrace) (reported in support slack channel)
  • Update 'db.fetch_all': rename the first argument from 'model' to 'instance_type' so that it can be used to fetch
    all devices based on their 'model' property (no more conflict between 'model' first argument and 'model' coming
    from **kwargs)
  • Update netmiko command service to always return the result as a list if 'Results as List' option is checked,
    even if there is a single command
  • Make Device.ip_address an indexed column
  • Refactor "Stop Run" mechanism:
    • Require "run" RBAC access for a user to be allowed to stop a workflow
    • Add new "You don't have permission to stop this workflow." alert in the UI
  • Update the REST Call Service with new "proxies" option
  • Add session scope when trying to create worker to avoid race conditions when running many
    concurrent calls in parallel