Skip to content
This repository has been archived by the owner on Apr 14, 2023. It is now read-only.

v0.5.0

Compare
Choose a tag to compare
@JustinTervala JustinTervala released this 29 Nov 20:16
· 2377 commits to master since this release

Changes

Version 0.5.0 includes lots of new features including:

  • New user-friendly playbook editor
  • Custom interfaces with event handling
    • Interfaces are no longer attached to apps; they are now their own plugins and are contained in the interfaces directory
    • Interfaces can use new decorator functions to listen and respond to all events in Walkoff as they occur
  • Better triggers
    • Triggers are no longer specified in the database. Instead, each individual action in a workflow can have its own set of conditions which can act as breakpoints in a workflow. You can send data to them through the server and have that data validated against a set of conditions before the action can resume.
    • You can still start a workflow from the beginning through the server
  • Renamed workflow components for clarity
    • "steps" have been renamed "actions"
    • "next steps" have been renamed "branches"
    • "flags" have been renamed "conditions"
    • "filters" have been renamed "branches"
  • App-specific conditions and transforms
    • Conditions and transforms are now located in apps rather than in core, so they can be more easily created
  • Script used to start the server has been renamed walkoff.py
  • Host and port can now be specified on the command line
  • Unfortunately, event-driven actions have been broken for some time now. We have removed this functionality, but are working on an even better replacement for them in the meantime
  • Branches now contain a "priority" field which can be used to determine the order in which the branches of a given action are evaluated
  • Arguments to actions, conditions, and transforms which use references can select which component of the referenced action's output to use.
  • HTTPS is enabled by default if certificates are placed in the .certificates directory.
    This version introduces a variety of backward-breaking changes, but we have also included two scripts, migrate_workflows.py and migrate_api.py which should ease this transition.

Detailed changes

  • We have removed accumulated risk from workflows and risk from steps. This feature will be readded at a future date
  • We have removed widgets from the backend. This feature will be reimplemented later.
  • Playbook file format changes
    • Branches are now contained outside of actions, creating two top-level fields.
    • Branches have a source_uid and a destination_uid instead of just a name field
    • The start step on a workflow is indicated with the start step's UID instead of its name
    • The app and action fields of actions, conditions, and transforms have been renamed app_name and action_name respectively.
    • Conditions and transforms contain an app_name field instead of just an action field
    • We have removed the widgets field and the risk field from actions
    • Devices for actions are specified by id rather than by name
    • Actions' inputs field, as well as conditions' and transforms' args field has been renamed arguments and is now a complete JSON object
    • Playbooks now contain a walkoff_version field which will be used to indicate which version of WALKOFF created them. This will be helpful in the future to migrate workflows to new formats
  • ZeroMQ keys are contained in the .certificates directory
  • Minor changes to api.yaml schema
    • dataIn has been renamed data_in
    • termsOfService has been renamed terms_of_service
    • externalDocs has been renamed external_docs and is always an array
  • Scripts to create Sphinx documentation have been added to the repository
  • Performance of worker processes has been improved by removing gevent from child processes and reducing polling
  • The blinker Signals used to trigger events have been wrapped in a WalkoffEvent enum
  • Internal sockets used for ZeroMQ communication have been moved to core.config.config
  • Backend support for adding roles to users has been removed. All users are administrators as they have been in previous releases. There was never a UI component for this feature, and it was breaking some other components for editing users. Roles will be readded in the next release.
  • Actions which are defined inside of a class must supply a device, or the workflow will fail on initialization
  • The REST API to get the APIs of apps has been enhanced significantly and returns all of the API

Contributor changes

  • Coverage.py is used to generate test coverage report. Travis-CI will fail if the code coverage is below 81% This percentage will rise over time