Flamenco/FEATURES.md

3.8 KiB

Flamenco-NG Features

This file lists the features that ought to be implemented at some point in time. It will likely be expanded over time while forgotten features of Flamenco v2 are rediscovered.

Note that list is not in any specific order.

Manager

  • OpenAPI implementation that actually runs as a server process
  • Process lifecycle management, clean shutdown
  • Task Scheduler
  • Unify command definition (type/parameters in persistence layer, name/settings in API layer)
  • Job status change handling
  • Port the old 'fail-requested' task status handling code to the new Manager
  • Task timeout monitoring
  • Worker Blacklisting & failed task requeueing
  • Worker timeout monitoring
  • Worker-assigned task re-queueing on sign-off
  • Variable replacement
  • Configuration file reading
  • Configuration provisioning support
  • Shaman integration
  • Worker sleep schedule
  • Web frontend for Worker management
  • Web frontend for Job & Task management
  • Web frontend for configuration management
  • Frontend authentication
  • Worker API authentication
  • User/Job Submission API authentication
  • Last rendered image display
  • Per-job last rendered image
  • Auto-removal of old Workers
  • Shaman/Job settings: Distinction between "can be auto-deleted" jobs and "must be kept around" jobs.
  • Sending data upstream to Flamenco Overwatch
  • Job archival / task cleanup

Worker

  • OpenAPI client that actually runs as a process
  • Process lifecycle management, clean shutdown
  • Task executor
  • Command runner
  • Log uploader
  • POSIX signal handling (sleep/wake up)
  • Implement frames-to-video command.
  • Implement move-directory command.
  • Refactor CLI-running code by analyzing the current Blender and FFmpeg commands.
  • Re-queueing of task at shutdown of the main context (i.e. when pressing Ctrl+C). Since the context is closed, everything shuts down, but then it's too late to cleanly communicate to the Manager that the current task should be requeued.

Both

  • Worker registration & auto-reregistration
  • Worker API authentication
  • Worker sign on/off
  • Worker status change management, including lazy status changes
  • Task status change handling
  • Worker test mode
  • Worker registration secret (to protect the Manager from arbitrary Workers registering)
  • UPnP/SSDP for automatic Manager finding

Blender Add-on

  • Communication with the Flamenco Manager API
  • Job construction
  • BAT-packing
  • uploading to Shaman
  • User authentication
  • Editable job names (for rendering multiple jobs from the same filename)
  • Add options={'HIDDEN'} to the Flamenco RNA properties.
  • Add eTag-like checksum to the job types. The aim is to prevent artists from sending in a new job with an old job. This can happen when the job type is changed on the Manager, but in Blender the "refresh" button wasn't pressed yet. This should only cover the job settings, not the rest of the compiler script.
  • Frame Range: allow automatically syncing with scene frame start/end.
  • Don't take output settings from the current scene, but have separate settings for Flamenco. To be fleshed out still.

Nice to have / new features

  • Notification system to push "job done" messages to. Ideally would be in a form/shape that allows sending a message to Rocket.Chat, Matrix, Telegram, Discord, email, webbrowser, push URL-encoded/JSON/XML to some URL, stuff like that. Idea by Dan McLaughlin.
  • Notification client inside Blender itself, so that you get a message when your job is done.
  • Separate the OpenAPI definition of Shaman from the rest of Flamenco Manager. That way a part of BAT can also use the code generator. It also is the first step towards running Shaman as a standalone service.