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

v1.0.0-beta.1

Compare
Choose a tag to compare
@adpham95 adpham95 released this 09 Aug 21:45
· 464 commits to master since this release

[1.0.0-beta.1]

This update introduces a number of new features, including an App Editor in the UI, more granular role-based permissions, and a "bootloader" for automating deployment of WALKOFF.

Included are the massive re-architecture changes from 1.0.0-alpha.1 and 1.0.0-alpha.2 for which we did not make a GitHub release (changelogs below).

Added

  • App Editor for editing app files and building Docker images from said apps. You can use this to change apps while WALKOFF is running, without restarting the whole stack.
  • More granular RBAC where permissions on individual workflows and global variables can be restricted to specific roles.
  • Execution results display on individual nodes to aid in identifying results.
  • Bootloader container to automate deployment and teardown of the WALKOFF stack.
  • Autogenerated walkoff_client Python package for interfacing with WALKOFF API. Work in progress.
  • JSON editor GUI for editing arrays and objects in action parameters.
  • JSON editor GUI for editing Workflow and Global Variables

Changed

  • Dashboards renamed to Reports. Lots of work still to do here.
  • Condition and Transform exceptions now get passed up into workflow results for easier debugging.
  • Common config location to minimize number of locations where ports, service names, etc. need to change when configuring WALKOFF.
  • WALKOFF now runs only on Docker Swarm, no longer with plain Docker Compose.
  • All services now follow a walkoff_core, walkoff_app, or walkoff_resource naming scheme to disambiguate services from other stacks.
  • Exceptions in Apps are now propagated correctly to action results.
  • All WALKOFF services that need to be exposed now route through NGINX.

Security

  • WALKOFF now uses HTTPS behind NGINX using a self-signed certificate.

Fixed

  • Worker's workflow_types are now tagged with a _walkoff_type to prevent ambiguity with user provided data
  • SSH app updated to allow more conventional use of wildcards, relative/absolute paths, etc.
  • Conditions no longer cause entire subtrees to be cancelled, only the immediate successors.
  • walkoff_default Docker network is attachable by default for external services to attach to us.
  • Endpoints for PUT now correctly use resource IDs in path parameters.
  • Importing a workflow with the same name as an existing one should no longer overwrite the original.
  • Umpire scaling heartbeat slowed down to reduce race conditions - will be replaced with on-demand, resource aware scaling in future.
  • Queued actions are correctly cleaned up when aborting a workflow.
  • Enforced startup order of all the services to avoid busywaiting when services aren't up.
  • Reduced intensity of "Server not responding" pop-up.
  • Database commit issues relating to Workflow errors resolved.
  • Parameters are correctly passed through to node status messages on the frontend.
  • Actions now enforce results being JSON serializable, preventing issues with serializing Python objects.
  • Action console logger reconnected to frontend.

[1.0.0-alpha.2]

This update includes numerous bugfixes and a number of reintroduced features. This release wasn't tagged, so the changelog is included here.

Added

  • Trigger nodes allow you to pause workflow execution until webhook for the trigger is hit with data
  • Basic Condition nodes allow you to perform branching execution in a more flowchart-like manner
  • Basic Transform nodes allow you to write code snippets to transform/remap/select action results on the fly (UI support pending)
  • Parallel Action node types in the workflow editor allow you to parallelize actions on a specified parameter
  • Display UUIDs for workflow and workflow nodes in UI
  • Portainer container creates UI for docker management

Changed

  • WALKOFF now runs utilizing stack deploy, allowing for the use of external Docker secrets
  • App version no longer required in app_name in api.tyaml
  • CRUD endpoints now accept resource names as keys when applicable
  • Globals can now be arbitrary JSON (UI support pending)
  • Builtins build location moved to Umpire and is only built once on startup

Removed

Security

  • Implemented AES-256 encryption/decryption for Global Variables. Exclusive-access decryption based on account level standing still needs to be implemented in the future. Currently, any GET request to the API gateway will return a decrypted Global Variable, regardless of account.

Fixed

  • Workflow import/export
  • Workflow validation (still needs work); workflows can be saved in an incomplete state again
  • Validate workfow name uniqueness when creating workflows
  • Testing suite (still needs expansion)
  • Uniqueness constraints on CRUD operations
  • Dereferencing Global and Workflow variables in workflows
  • Ability to override starting parameters in a workflow execution
  • Ability to update/delete encrypted Global Variables
  • Hide global values by default on Globals tab
  • Default boolean parameters to false
  • Copying and pasting of nodes in workflow editor
  • Accessing action results before conditionals in parameters that follow it

[1.0.0-alpha.1]

This update includes a near-complete rewrite of the workflow execution logic, and a considerable refactor of the
server in preparation for a future move to an asynchronous framework. The following changes are not exhaustive.

Added

  • "Umpire" added, which handles building and replication of Worker and App containers.

Changed

  • Docker Compose is required. Python 3.7 is required if running components locally (primarily for development).
  • Execution logic completely rewritten to support containerized architecture from the ground up.
  • Apps now live in their own containers, separate from workers.
  • Apps should now be (internally) stateless
  • Kubernetes support has been removed in favor of using Docker Swarm API.
  • Playbooks removed, Workflows can now be grouped by tags instead.
  • unittest has been replaced with pytest
  • Redis is now the primary communication channel between components (removing ZMQ and Kafka).
  • SQLite database should no longer be used if running locally for development.
  • Workflow Execution page has been overhauled aesthetically.

Removed

  • Triggers have been temporarily removed, but are targeted for a near-future 1.1 release.