1135 Commits

Author SHA1 Message Date
Sybren A. Stüvel
1fceae3604 Manager: more efficient database queries
Be more selective in what's saved to the database to speed some things up.
Most importantly, this avoids saving the entire job when a task status is
updated or a task is assigned.
2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
be77403114 Makefile: add flamenco-manager-without-webapp target
This builds Flamenco Manager, without rebuilding the webapp, and without
the race condition checker.
2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
809036898b Stresser: cleanly sign off when shutting down 2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
1055aabee2 Manager: optimise db.SaveActivity() query
Use an explicit `Select()` GORM call to avoid saving related objects.
2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
2e1a9c61b8 Manager: add SHA256 password hasher for worker auth
Add a SHA256 password hasher for worker authentication. It's not used at
the moment, but can be switched to for faster API queries. Note that
switching will cause authentication errors on already-existing workers,
which means they'll automatically re-register.

This is mostly useful for debugging & profiling purposes.
2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
20be78ea0f Stresser: add .PHONY to Makefile to make it always build 2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
0e4ed1c54d Manager: move worker password hasher into a struct + interface
Move the Worker password hashing/comparison functions into a struct, and
use it via an interface. This will make it easier to switch to different
hashing algorithms.

Even with a low number of iterations, BCrypt is quite slow. That's good for
security, but not for Flamenco Worker authentication -- the password is
more as "nice check to avoid accidentally reusing the same ID" than
something for security.
2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
35fe0146d3 Add stress tester for task updates
Build with `make stresser`. Run with:

  ./stresser -worker UUID -secret ABCXYZ

The worker ID and secret can be obtained from
`flamenco-worker-credentials.yaml`. If left empty, the stresser will
register as a new worker, and log the credentials to be used on the next
invocation.
2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
6e28271c93 Manager: prevent saving related job & worker when "touching" task 2022-07-15 15:08:00 +02:00
Sybren A. Stüvel
62ecd09f5f Don't return 500 Error when Blender cannot be found on $PATH
In the first-time wizard, if Blender cannot be found on $PATH but it can
be found via .blend file association, that should just be reported as a
normal sitation, and not as a `500 Internal Server Error`.
2022-07-14 18:50:34 +02:00
Sybren A. Stüvel
c0f4657be4 Wrap error message when finding Blender via file association fails 2022-07-14 18:49:37 +02:00
Sybren A. Stüvel
72337c55cd Blender finder: fix Windows build error 2022-07-14 18:41:55 +02:00
Sybren A. Stüvel
86bccf3aa9 Blender finder: report only the first line of stdout 2022-07-14 18:41:50 +02:00
Sybren A. Stüvel
8b494dc448 Manager: Fix logic error detecting first-time run
If the config file is missing, `true` should be returned.
2022-07-14 18:24:47 +02:00
Sybren A. Stüvel
8719103462 Manager: set default storage path to "" to trigger the first-time wizard
Trigger the first-time wizard on first-time runs of Flamenco, by defaulting
the storage path to the empty string.

The wizard can always be triggered with the `-wizard` CLI argument. This is
just for detection of first-time / unconfigured runs.
2022-07-14 18:24:47 +02:00
Sybren A. Stüvel
b35af5de9f Manager: allow requesting shutdown multiple times
It's fine to request a shutdown multiple times. This fixes a hard crash
due to a panic.
2022-07-14 18:24:16 +02:00
Sybren A. Stüvel
73f98f93a0 First-Time Wizard: reload the webpage after a succesful save
After saving the configuration, show a message & restart the webapp.

The restarting is done after 2 seconds, to give the Manager some time to
restart after receiving the new config.
2022-07-14 18:01:57 +02:00
Sybren A. Stüvel
38b8220476 Restart Flamenco Manager when the first-time wizard is complete 2022-07-14 17:52:38 +02:00
Sybren A. Stüvel
10f56148d4 Allow saving configuration from the first-time wizard
This just updates the config and saves it to `flamenco-manager.yaml`.

Saving the configuration doesn't restart the Manager yet, that's for
another commit.
2022-07-14 17:27:17 +02:00
Sybren A. Stüvel
f9a3d3864a OAPI: regenerate code 2022-07-14 17:26:26 +02:00
Sybren A. Stüvel
f2438a89a7 OAPI: operation to save config from First-Time Wizard 2022-07-14 17:25:37 +02:00
Sybren A. Stüvel
7204bb833a Blender: run with enable-autoexec flag by default & shorten flags
Run with `-b -y`, instead of `--background --enable-autoexec`, to shorten
the default flags.
2022-07-14 15:52:57 +02:00
Sybren A. Stüvel
f68c4860f4 First-time wizard: tweak some wording 2022-07-14 13:34:02 +02:00
Sybren A. Stüvel
aec5ee49e0 First-Time Wizard: allow selecting Blender executables
The wizard now finds Blender in various ways, and lets the user select
which one to use.

Doesn't save anything yet, though.
2022-07-14 12:22:56 +02:00
Sybren A. Stüvel
898019cf1d OAPI: regenerate code 2022-07-14 12:22:13 +02:00
Sybren A. Stüvel
186dd06401 OAPI: endpoints for finding & checking Blender executables
These will be used in the first-time wizard.
2022-07-14 12:19:59 +02:00
Sybren A. Stüvel
20f13257f7 Move "blender finder" from Worker-specific to common location
Manager's first-time wizard will have to be able to find Blender as well.
2022-07-14 11:17:03 +02:00
Sybren A. Stüvel
aa9837b5f0 First incarnation of the first-time wizard
This adds a `-wizard` CLI option to the Manager, which opens a webbrowser
and shows the First-Time Wizard to aid in configuration of Flamenco.

This is work in progress. The wizard is just one page, and doesn't save
anything yet to the configuration.
2022-07-14 11:17:03 +02:00
Sybren A. Stüvel
e4a38f071c OAPI: regenerate code 2022-07-14 11:16:59 +02:00
Sybren A. Stüvel
597e9fd5d4 OAPI: add operations for the First Time Wizard
Manifest task: T99437
2022-07-14 11:16:30 +02:00
Sybren A. Stüvel
6b5f9317cb Manager: clear job's blocklist when requeueing the job
Requeueing a job means that the issues that caused workers to get blocked
might be resolved, so it should be run with a clean slate.
2022-07-14 11:03:11 +02:00
Sybren A. Stüvel
77516a64fd Add-on: bump BAT from 1.12 to 1.13
1.13 gives a nicer error message when things go wrong (in a specific, hard
to debug case). No other functional changes.
2022-07-14 10:44:41 +02:00
Sybren A. Stüvel
cf2d0b553f Manager: fix mime type for JavaScript files
Go on Windows doesn't know `.js` files should be served with
`application/javascript` mime type, and thus uses the generic `text/plain`
type.
2022-07-13 18:49:35 +02:00
Sybren A. Stüvel
3c290b1f6d Manager: ensure the {jobs} implicit variable uses forward slashes
Since the variable expansion is unaware of path semantics, using forward
slashes is the safest way to go about things in a platform-indepdent way.
2022-07-13 12:45:55 +02:00
Sybren A. Stüvel
ce250a611e Windows: fix error handling of syscall to AssocQueryStringW
syscall.SyscallN returns a `uintptr` type alias, and thus has to be
compared to `0`, not `nil`. Yeah, it's a bit weird.
2022-07-13 11:48:26 +02:00
Sybren A. Stüvel
5b1b0b30a9 Add-on: remove .flamenco.blend after job submission 2022-07-12 17:46:08 +02:00
Sybren A. Stüvel
2215ed2d85 Add-on: load all BAT submodules in one go
Adjust the loading of BAT from a wheel file in such a way that all
submodules are loaded in one go. This ensures that they're still
isolated from the rest of Blender (so other add-ons won't find our BAT),
but not from each other (so that there is only one copy of each
submodule).

In practice, this solves an issue where calling
`blender_asset_tracer.blendfile.set_strict_pointer_mode(False)` had no
effect. This was caused by each loaded submodule having a different copy
of `blendfile`.

Also loaded modules are logged more explicitly (at INFO level) to aid in
debugging later on.
2022-07-12 17:30:18 +02:00
Sybren A. Stüvel
e576c5669f README-static.md: some extra info about running flamenco.io locally 2022-07-12 11:04:22 +02:00
Nate Rupsis
273e9504cf Gitignore .DS_Store files from macOS 2022-07-12 11:01:36 +02:00
Nate Rupsis
0f196b211a Website: Add macOS to Getting Started doc
Reviewed By: sybren

Differential Revision: https://developer.blender.org/D15426
2022-07-12 11:01:09 +02:00
Nate Rupsis
480269364b Add website devserver instructions to web/README-static.md
Add instructions to `web/README-static.md`, describing how to run the
static flamenco.io website locally.

Reviewed By: sybren

Differential Revision: https://developer.blender.org/D15426
2022-07-12 11:00:17 +02:00
Sybren A. Stüvel
e4321284d7 VSCode: change formatter for Vue files
The old one wasn't available any more.
2022-07-11 18:45:32 +02:00
Sybren A. Stüvel
3412a85a14 Add-on: disable BAT's strict pointer mode
Due to issues with library overrides and unsynced pointers, it's quite
common for the Blender Animation Studio to get "address unknown" errors
from BAT. To avoid these, Strict Pointer Mode is disabled.
2022-07-11 17:56:47 +02:00
Pablo Vazquez
5c17286e98 Add site.webmanifest
This way, on OS that allow it, Flamenco can be added as home shortcut
and have the proper shortcut name, icon, theme color, and browser buttons.

Needs testing on how 'standalone' display looks on Android tablets. Perhaps
a more minimal version of the browser can be used instead ('minimal-ui').
2022-07-08 15:26:44 +02:00
Pablo Vazquez
db01c640f5 Update favicon images and add theme color tag
Use the more easily recognizable Flamenco logo shape without the socket.
2022-07-08 15:24:06 +02:00
Sybren A. Stüvel
0ff8ed7585 Manager: implement the getVariables OpenAPI operation 2022-07-08 11:36:00 +02:00
Sybren A. Stüvel
ae2cb281b4 OAPI: regenerate code 2022-07-08 11:35:57 +02:00
Sybren A. Stüvel
f9acb3f413 OAPI: add operation for getting variables from the Manager
This operation takes the platform & audience, and returns the variables
that are applicable for that combination. This can then be used by the
web frontend or by the Blender add-on to do variable replacement.
2022-07-08 11:33:41 +02:00
Francesco Siddi
8aa7c58d27 Website: Layout tweaks 2022-07-07 21:32:27 +02:00
Francesco Siddi
16b15ac8de Website: Update navigation 2022-07-07 21:32:18 +02:00