WIP: Support pausing jobs and allow jobs to be submitted in paused status #104312
1
addon/flamenco/manager/docs/Job.md
generated
1
addon/flamenco/manager/docs/Job.md
generated
@ -18,6 +18,7 @@ Name | Type | Description | Notes
|
||||
**metadata** | [**JobMetadata**](JobMetadata.md) | | [optional]
|
||||
**storage** | [**JobStorageInfo**](JobStorageInfo.md) | | [optional]
|
||||
**worker_tag** | **str** | Worker tag that should execute this job. When a tag ID is given, only Workers in that tag will be scheduled to work on it. If empty or ommitted, all workers can work on this job. | [optional]
|
||||
**submit_as_paused** | **bool** | Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention. | [optional] if omitted the server will use the default value of False
|
||||
**delete_requested_at** | **datetime** | If job deletion was requested, this is the timestamp at which that request was stored on Flamenco Manager. | [optional]
|
||||
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
|
||||
|
||||
|
2
addon/flamenco/manager/docs/JobStatus.md
generated
2
addon/flamenco/manager/docs/JobStatus.md
generated
@ -4,7 +4,7 @@
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**value** | **str** | | must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ]
|
||||
**value** | **str** | | must be one of ["active", "canceled", "completed", "failed", "paused", "pause-requested", "queued", "cancel-requested", "requeueing", "under-construction", ]
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
4
addon/flamenco/manager/docs/JobsApi.md
generated
4
addon/flamenco/manager/docs/JobsApi.md
generated
@ -1296,6 +1296,7 @@ with flamenco.manager.ApiClient() as api_client:
|
||||
shaman_checkout_id="shaman_checkout_id_example",
|
||||
),
|
||||
worker_tag="worker_tag_example",
|
||||
submit_as_paused=False,
|
||||
) # SubmittedJob | Job to submit
|
||||
|
||||
# example passing only required values which don't have defaults set
|
||||
@ -1332,7 +1333,7 @@ No authorization required
|
||||
|
||||
| Status code | Description | Response headers |
|
||||
|-------------|-------------|------------------|
|
||||
**200** | Job was succesfully compiled into individual tasks. | - |
|
||||
**200** | Job was successfully compiled into individual tasks. | - |
|
||||
**412** | The given job type etag does not match the job type etag on the Manager. This is likely due to the client caching the job type for too long. | - |
|
||||
**0** | Error message | - |
|
||||
|
||||
@ -1378,6 +1379,7 @@ with flamenco.manager.ApiClient() as api_client:
|
||||
shaman_checkout_id="shaman_checkout_id_example",
|
||||
),
|
||||
worker_tag="worker_tag_example",
|
||||
submit_as_paused=False,
|
||||
) # SubmittedJob | Job to check
|
||||
|
||||
# example passing only required values which don't have defaults set
|
||||
|
1
addon/flamenco/manager/docs/SubmittedJob.md
generated
1
addon/flamenco/manager/docs/SubmittedJob.md
generated
@ -14,6 +14,7 @@ Name | Type | Description | Notes
|
||||
**metadata** | [**JobMetadata**](JobMetadata.md) | | [optional]
|
||||
**storage** | [**JobStorageInfo**](JobStorageInfo.md) | | [optional]
|
||||
**worker_tag** | **str** | Worker tag that should execute this job. When a tag ID is given, only Workers in that tag will be scheduled to work on it. If empty or ommitted, all workers can work on this job. | [optional]
|
||||
**submit_as_paused** | **bool** | Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention. | [optional] if omitted the server will use the default value of False
|
||||
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
4
addon/flamenco/manager/model/job.py
generated
4
addon/flamenco/manager/model/job.py
generated
@ -111,6 +111,7 @@ class Job(ModelComposed):
|
||||
'metadata': (JobMetadata,), # noqa: E501
|
||||
'storage': (JobStorageInfo,), # noqa: E501
|
||||
'worker_tag': (str,), # noqa: E501
|
||||
'submit_as_paused': (bool,), # noqa: E501
|
||||
'delete_requested_at': (datetime,), # noqa: E501
|
||||
}
|
||||
|
||||
@ -134,6 +135,7 @@ class Job(ModelComposed):
|
||||
'metadata': 'metadata', # noqa: E501
|
||||
'storage': 'storage', # noqa: E501
|
||||
'worker_tag': 'worker_tag', # noqa: E501
|
||||
'submit_as_paused': 'submit_as_paused', # noqa: E501
|
||||
'delete_requested_at': 'delete_requested_at', # noqa: E501
|
||||
}
|
||||
|
||||
@ -190,6 +192,7 @@ class Job(ModelComposed):
|
||||
metadata (JobMetadata): [optional] # noqa: E501
|
||||
storage (JobStorageInfo): [optional] # noqa: E501
|
||||
worker_tag (str): Worker tag that should execute this job. When a tag ID is given, only Workers in that tag will be scheduled to work on it. If empty or ommitted, all workers can work on this job. . [optional] # noqa: E501
|
||||
submit_as_paused (bool): Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention. . [optional] if omitted the server will use the default value of False # noqa: E501
|
||||
delete_requested_at (datetime): If job deletion was requested, this is the timestamp at which that request was stored on Flamenco Manager. . [optional] # noqa: E501
|
||||
"""
|
||||
|
||||
@ -305,6 +308,7 @@ class Job(ModelComposed):
|
||||
metadata (JobMetadata): [optional] # noqa: E501
|
||||
storage (JobStorageInfo): [optional] # noqa: E501
|
||||
worker_tag (str): Worker tag that should execute this job. When a tag ID is given, only Workers in that tag will be scheduled to work on it. If empty or ommitted, all workers can work on this job. . [optional] # noqa: E501
|
||||
submit_as_paused (bool): Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention. . [optional] if omitted the server will use the default value of False # noqa: E501
|
||||
delete_requested_at (datetime): If job deletion was requested, this is the timestamp at which that request was stored on Flamenco Manager. . [optional] # noqa: E501
|
||||
"""
|
||||
|
||||
|
9
addon/flamenco/manager/model/job_status.py
generated
9
addon/flamenco/manager/model/job_status.py
generated
@ -57,6 +57,7 @@ class JobStatus(ModelSimple):
|
||||
'COMPLETED': "completed",
|
||||
'FAILED': "failed",
|
||||
'PAUSED': "paused",
|
||||
'PAUSE-REQUESTED': "pause-requested",
|
||||
'QUEUED': "queued",
|
||||
'CANCEL-REQUESTED': "cancel-requested",
|
||||
'REQUEUEING': "requeueing",
|
||||
@ -112,10 +113,10 @@ class JobStatus(ModelSimple):
|
||||
Note that value can be passed either in args or in kwargs, but not in both.
|
||||
|
||||
Args:
|
||||
args[0] (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
|
||||
args[0] (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "pause-requested", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
|
||||
|
||||
Keyword Args:
|
||||
value (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
|
||||
value (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "pause-requested", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
|
||||
_check_type (bool): if True, values for parameters in openapi_types
|
||||
will be type checked and a TypeError will be
|
||||
raised if the wrong type is input.
|
||||
@ -202,10 +203,10 @@ class JobStatus(ModelSimple):
|
||||
Note that value can be passed either in args or in kwargs, but not in both.
|
||||
|
||||
Args:
|
||||
args[0] (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
|
||||
args[0] (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "pause-requested", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
|
||||
|
||||
Keyword Args:
|
||||
value (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
|
||||
value (str):, must be one of ["active", "canceled", "completed", "failed", "paused", "pause-requested", "queued", "cancel-requested", "requeueing", "under-construction", ] # noqa: E501
|
||||
_check_type (bool): if True, values for parameters in openapi_types
|
||||
will be type checked and a TypeError will be
|
||||
raised if the wrong type is input.
|
||||
|
4
addon/flamenco/manager/model/submitted_job.py
generated
4
addon/flamenco/manager/model/submitted_job.py
generated
@ -100,6 +100,7 @@ class SubmittedJob(ModelNormal):
|
||||
'metadata': (JobMetadata,), # noqa: E501
|
||||
'storage': (JobStorageInfo,), # noqa: E501
|
||||
'worker_tag': (str,), # noqa: E501
|
||||
'submit_as_paused': (bool,), # noqa: E501
|
||||
}
|
||||
|
||||
@cached_property
|
||||
@ -117,6 +118,7 @@ class SubmittedJob(ModelNormal):
|
||||
'metadata': 'metadata', # noqa: E501
|
||||
'storage': 'storage', # noqa: E501
|
||||
'worker_tag': 'worker_tag', # noqa: E501
|
||||
'submit_as_paused': 'submit_as_paused', # noqa: E501
|
||||
}
|
||||
|
||||
read_only_vars = {
|
||||
@ -171,6 +173,7 @@ class SubmittedJob(ModelNormal):
|
||||
metadata (JobMetadata): [optional] # noqa: E501
|
||||
storage (JobStorageInfo): [optional] # noqa: E501
|
||||
worker_tag (str): Worker tag that should execute this job. When a tag ID is given, only Workers in that tag will be scheduled to work on it. If empty or ommitted, all workers can work on this job. . [optional] # noqa: E501
|
||||
submit_as_paused (bool): Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention. . [optional] if omitted the server will use the default value of False # noqa: E501
|
||||
"""
|
||||
|
||||
priority = kwargs.get('priority', 50)
|
||||
@ -268,6 +271,7 @@ class SubmittedJob(ModelNormal):
|
||||
metadata (JobMetadata): [optional] # noqa: E501
|
||||
storage (JobStorageInfo): [optional] # noqa: E501
|
||||
worker_tag (str): Worker tag that should execute this job. When a tag ID is given, only Workers in that tag will be scheduled to work on it. If empty or ommitted, all workers can work on this job. . [optional] # noqa: E501
|
||||
submit_as_paused (bool): Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention. . [optional] if omitted the server will use the default value of False # noqa: E501
|
||||
"""
|
||||
|
||||
priority = kwargs.get('priority', 50)
|
||||
|
284
addon/flamenco/manager_README.md
generated
284
addon/flamenco/manager_README.md
generated
@ -76,152 +76,152 @@ All URIs are relative to *http://localhost*
|
||||
|
||||
Class | Method | HTTP request | Description
|
||||
------------ | ------------- | ------------- | -------------
|
||||
*JobsApi* | [**delete_job**](flamenco\manager\docs/JobsApi.md#delete_job) | **DELETE** /api/v3/jobs/{job_id} | Request deletion this job, including its tasks and any log files. The actual deletion may happen in the background. No job files will be deleted (yet).
|
||||
*JobsApi* | [**delete_job_mass**](flamenco\manager\docs/JobsApi.md#delete_job_mass) | **DELETE** /api/v3/jobs/mass-delete | Mark jobs for deletion, based on certain criteria.
|
||||
*JobsApi* | [**delete_job_what_would_it_do**](flamenco\manager\docs/JobsApi.md#delete_job_what_would_it_do) | **GET** /api/v3/jobs/{job_id}/what-would-delete-do | Get info about what would be deleted when deleting this job. The job itself, its logs, and the last-rendered images will always be deleted. The job files are only deleted conditionally, and this operation can be used to figure that out.
|
||||
*JobsApi* | [**fetch_global_last_rendered_info**](flamenco\manager\docs/JobsApi.md#fetch_global_last_rendered_info) | **GET** /api/v3/jobs/last-rendered | Get the URL that serves the last-rendered images.
|
||||
*JobsApi* | [**fetch_job**](flamenco\manager\docs/JobsApi.md#fetch_job) | **GET** /api/v3/jobs/{job_id} | Fetch info about the job.
|
||||
*JobsApi* | [**fetch_job_blocklist**](flamenco\manager\docs/JobsApi.md#fetch_job_blocklist) | **GET** /api/v3/jobs/{job_id}/blocklist | Fetch the list of workers that are blocked from doing certain task types on this job.
|
||||
*JobsApi* | [**fetch_job_last_rendered_info**](flamenco\manager\docs/JobsApi.md#fetch_job_last_rendered_info) | **GET** /api/v3/jobs/{job_id}/last-rendered | Get the URL that serves the last-rendered images of this job.
|
||||
*JobsApi* | [**fetch_job_tasks**](flamenco\manager\docs/JobsApi.md#fetch_job_tasks) | **GET** /api/v3/jobs/{job_id}/tasks | Fetch a summary of all tasks of the given job.
|
||||
*JobsApi* | [**fetch_task**](flamenco\manager\docs/JobsApi.md#fetch_task) | **GET** /api/v3/tasks/{task_id} | Fetch a single task.
|
||||
*JobsApi* | [**fetch_task_log_info**](flamenco\manager\docs/JobsApi.md#fetch_task_log_info) | **GET** /api/v3/tasks/{task_id}/log | Get the URL of the task log, and some more info.
|
||||
*JobsApi* | [**fetch_task_log_tail**](flamenco\manager\docs/JobsApi.md#fetch_task_log_tail) | **GET** /api/v3/tasks/{task_id}/logtail | Fetch the last few lines of the task's log.
|
||||
*JobsApi* | [**get_job_type**](flamenco\manager\docs/JobsApi.md#get_job_type) | **GET** /api/v3/jobs/type/{typeName} | Get single job type and its parameters.
|
||||
*JobsApi* | [**get_job_types**](flamenco\manager\docs/JobsApi.md#get_job_types) | **GET** /api/v3/jobs/types | Get list of job types and their parameters.
|
||||
*JobsApi* | [**query_jobs**](flamenco\manager\docs/JobsApi.md#query_jobs) | **POST** /api/v3/jobs/query | Fetch list of jobs.
|
||||
*JobsApi* | [**remove_job_blocklist**](flamenco\manager\docs/JobsApi.md#remove_job_blocklist) | **DELETE** /api/v3/jobs/{job_id}/blocklist | Remove entries from a job blocklist.
|
||||
*JobsApi* | [**set_job_priority**](flamenco\manager\docs/JobsApi.md#set_job_priority) | **POST** /api/v3/jobs/{job_id}/setpriority |
|
||||
*JobsApi* | [**set_job_status**](flamenco\manager\docs/JobsApi.md#set_job_status) | **POST** /api/v3/jobs/{job_id}/setstatus |
|
||||
*JobsApi* | [**set_task_status**](flamenco\manager\docs/JobsApi.md#set_task_status) | **POST** /api/v3/tasks/{task_id}/setstatus |
|
||||
*JobsApi* | [**submit_job**](flamenco\manager\docs/JobsApi.md#submit_job) | **POST** /api/v3/jobs | Submit a new job for Flamenco Manager to execute.
|
||||
*JobsApi* | [**submit_job_check**](flamenco\manager\docs/JobsApi.md#submit_job_check) | **POST** /api/v3/jobs/check | Submit a new job for Flamenco Manager to check.
|
||||
*MetaApi* | [**check_blender_exe_path**](flamenco\manager\docs/MetaApi.md#check_blender_exe_path) | **POST** /api/v3/configuration/check/blender | Validate a CLI command for use as way to start Blender
|
||||
*MetaApi* | [**check_shared_storage_path**](flamenco\manager\docs/MetaApi.md#check_shared_storage_path) | **POST** /api/v3/configuration/check/shared-storage | Validate a path for use as shared storage.
|
||||
*MetaApi* | [**find_blender_exe_path**](flamenco\manager\docs/MetaApi.md#find_blender_exe_path) | **GET** /api/v3/configuration/check/blender | Find one or more CLI commands for use as way to start Blender
|
||||
*MetaApi* | [**get_configuration**](flamenco\manager\docs/MetaApi.md#get_configuration) | **GET** /api/v3/configuration | Get the configuration of this Manager.
|
||||
*MetaApi* | [**get_configuration_file**](flamenco\manager\docs/MetaApi.md#get_configuration_file) | **GET** /api/v3/configuration/file | Retrieve the configuration of Flamenco Manager.
|
||||
*MetaApi* | [**get_farm_status**](flamenco\manager\docs/MetaApi.md#get_farm_status) | **GET** /api/v3/status | Get the status of this Flamenco farm.
|
||||
*MetaApi* | [**get_shared_storage**](flamenco\manager\docs/MetaApi.md#get_shared_storage) | **GET** /api/v3/configuration/shared-storage/{audience}/{platform} | Get the shared storage location of this Manager, adjusted for the given audience and platform.
|
||||
*MetaApi* | [**get_variables**](flamenco\manager\docs/MetaApi.md#get_variables) | **GET** /api/v3/configuration/variables/{audience}/{platform} | Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
*MetaApi* | [**get_version**](flamenco\manager\docs/MetaApi.md#get_version) | **GET** /api/v3/version | Get the Flamenco version of this Manager
|
||||
*MetaApi* | [**save_setup_assistant_config**](flamenco\manager\docs/MetaApi.md#save_setup_assistant_config) | **POST** /api/v3/configuration/setup-assistant | Update the Manager's configuration, and restart it in fully functional mode.
|
||||
*ShamanApi* | [**shaman_checkout**](flamenco\manager\docs/ShamanApi.md#shaman_checkout) | **POST** /api/v3/shaman/checkout/create | Create a directory, and symlink the required files into it. The files must all have been uploaded to Shaman before calling this endpoint.
|
||||
*ShamanApi* | [**shaman_checkout_requirements**](flamenco\manager\docs/ShamanApi.md#shaman_checkout_requirements) | **POST** /api/v3/shaman/checkout/requirements | Checks a Shaman Requirements file, and reports which files are unknown.
|
||||
*ShamanApi* | [**shaman_file_store**](flamenco\manager\docs/ShamanApi.md#shaman_file_store) | **POST** /api/v3/shaman/files/{checksum}/{filesize} | Store a new file on the Shaman server. Note that the Shaman server can forcibly close the HTTP connection when another client finishes uploading the exact same file, to prevent double uploads. The file's contents should be sent in the request body.
|
||||
*ShamanApi* | [**shaman_file_store_check**](flamenco\manager\docs/ShamanApi.md#shaman_file_store_check) | **GET** /api/v3/shaman/files/{checksum}/{filesize} | Check the status of a file on the Shaman server.
|
||||
*WorkerApi* | [**may_worker_run**](flamenco\manager\docs/WorkerApi.md#may_worker_run) | **GET** /api/v3/worker/task/{task_id}/may-i-run | The response indicates whether the worker is allowed to run / keep running the task. Optionally contains a queued worker status change.
|
||||
*WorkerApi* | [**register_worker**](flamenco\manager\docs/WorkerApi.md#register_worker) | **POST** /api/v3/worker/register-worker | Register a new worker
|
||||
*WorkerApi* | [**schedule_task**](flamenco\manager\docs/WorkerApi.md#schedule_task) | **POST** /api/v3/worker/task | Obtain a new task to execute
|
||||
*WorkerApi* | [**sign_off**](flamenco\manager\docs/WorkerApi.md#sign_off) | **POST** /api/v3/worker/sign-off | Mark the worker as offline
|
||||
*WorkerApi* | [**sign_on**](flamenco\manager\docs/WorkerApi.md#sign_on) | **POST** /api/v3/worker/sign-on | Authenticate & sign in the worker.
|
||||
*WorkerApi* | [**task_output_produced**](flamenco\manager\docs/WorkerApi.md#task_output_produced) | **POST** /api/v3/worker/task/{task_id}/output-produced | Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
|
||||
*WorkerApi* | [**task_update**](flamenco\manager\docs/WorkerApi.md#task_update) | **POST** /api/v3/worker/task/{task_id} | Update the task, typically to indicate progress, completion, or failure.
|
||||
*WorkerApi* | [**worker_state**](flamenco\manager\docs/WorkerApi.md#worker_state) | **GET** /api/v3/worker/state |
|
||||
*WorkerApi* | [**worker_state_changed**](flamenco\manager\docs/WorkerApi.md#worker_state_changed) | **POST** /api/v3/worker/state-changed | Worker changed state. This could be as acknowledgement of a Manager-requested state change, or in response to worker-local signals.
|
||||
*WorkerMgtApi* | [**create_worker_tag**](flamenco\manager\docs/WorkerMgtApi.md#create_worker_tag) | **POST** /api/v3/worker-mgt/tags | Create a new worker tag.
|
||||
*WorkerMgtApi* | [**delete_worker**](flamenco\manager\docs/WorkerMgtApi.md#delete_worker) | **DELETE** /api/v3/worker-mgt/workers/{worker_id} | Remove the given worker. It is recommended to only call this function when the worker is in `offline` state. If the worker is still running, stop it first. Any task still assigned to the worker will be requeued.
|
||||
*WorkerMgtApi* | [**delete_worker_tag**](flamenco\manager\docs/WorkerMgtApi.md#delete_worker_tag) | **DELETE** /api/v3/worker-mgt/tag/{tag_id} | Remove this worker tag. This unassigns all workers from the tag and removes it.
|
||||
*WorkerMgtApi* | [**fetch_worker**](flamenco\manager\docs/WorkerMgtApi.md#fetch_worker) | **GET** /api/v3/worker-mgt/workers/{worker_id} | Fetch info about the worker.
|
||||
*WorkerMgtApi* | [**fetch_worker_sleep_schedule**](flamenco\manager\docs/WorkerMgtApi.md#fetch_worker_sleep_schedule) | **GET** /api/v3/worker-mgt/workers/{worker_id}/sleep-schedule |
|
||||
*WorkerMgtApi* | [**fetch_worker_tag**](flamenco\manager\docs/WorkerMgtApi.md#fetch_worker_tag) | **GET** /api/v3/worker-mgt/tag/{tag_id} | Get a single worker tag.
|
||||
*WorkerMgtApi* | [**fetch_worker_tags**](flamenco\manager\docs/WorkerMgtApi.md#fetch_worker_tags) | **GET** /api/v3/worker-mgt/tags | Get list of worker tags.
|
||||
*WorkerMgtApi* | [**fetch_workers**](flamenco\manager\docs/WorkerMgtApi.md#fetch_workers) | **GET** /api/v3/worker-mgt/workers | Get list of workers.
|
||||
*WorkerMgtApi* | [**request_worker_status_change**](flamenco\manager\docs/WorkerMgtApi.md#request_worker_status_change) | **POST** /api/v3/worker-mgt/workers/{worker_id}/setstatus |
|
||||
*WorkerMgtApi* | [**set_worker_sleep_schedule**](flamenco\manager\docs/WorkerMgtApi.md#set_worker_sleep_schedule) | **POST** /api/v3/worker-mgt/workers/{worker_id}/sleep-schedule |
|
||||
*WorkerMgtApi* | [**set_worker_tags**](flamenco\manager\docs/WorkerMgtApi.md#set_worker_tags) | **POST** /api/v3/worker-mgt/workers/{worker_id}/settags |
|
||||
*WorkerMgtApi* | [**update_worker_tag**](flamenco\manager\docs/WorkerMgtApi.md#update_worker_tag) | **PUT** /api/v3/worker-mgt/tag/{tag_id} | Update an existing worker tag.
|
||||
*JobsApi* | [**delete_job**](flamenco/manager/docs/JobsApi.md#delete_job) | **DELETE** /api/v3/jobs/{job_id} | Request deletion this job, including its tasks and any log files. The actual deletion may happen in the background. No job files will be deleted (yet).
|
||||
*JobsApi* | [**delete_job_mass**](flamenco/manager/docs/JobsApi.md#delete_job_mass) | **DELETE** /api/v3/jobs/mass-delete | Mark jobs for deletion, based on certain criteria.
|
||||
*JobsApi* | [**delete_job_what_would_it_do**](flamenco/manager/docs/JobsApi.md#delete_job_what_would_it_do) | **GET** /api/v3/jobs/{job_id}/what-would-delete-do | Get info about what would be deleted when deleting this job. The job itself, its logs, and the last-rendered images will always be deleted. The job files are only deleted conditionally, and this operation can be used to figure that out.
|
||||
*JobsApi* | [**fetch_global_last_rendered_info**](flamenco/manager/docs/JobsApi.md#fetch_global_last_rendered_info) | **GET** /api/v3/jobs/last-rendered | Get the URL that serves the last-rendered images.
|
||||
*JobsApi* | [**fetch_job**](flamenco/manager/docs/JobsApi.md#fetch_job) | **GET** /api/v3/jobs/{job_id} | Fetch info about the job.
|
||||
*JobsApi* | [**fetch_job_blocklist**](flamenco/manager/docs/JobsApi.md#fetch_job_blocklist) | **GET** /api/v3/jobs/{job_id}/blocklist | Fetch the list of workers that are blocked from doing certain task types on this job.
|
||||
*JobsApi* | [**fetch_job_last_rendered_info**](flamenco/manager/docs/JobsApi.md#fetch_job_last_rendered_info) | **GET** /api/v3/jobs/{job_id}/last-rendered | Get the URL that serves the last-rendered images of this job.
|
||||
*JobsApi* | [**fetch_job_tasks**](flamenco/manager/docs/JobsApi.md#fetch_job_tasks) | **GET** /api/v3/jobs/{job_id}/tasks | Fetch a summary of all tasks of the given job.
|
||||
*JobsApi* | [**fetch_task**](flamenco/manager/docs/JobsApi.md#fetch_task) | **GET** /api/v3/tasks/{task_id} | Fetch a single task.
|
||||
*JobsApi* | [**fetch_task_log_info**](flamenco/manager/docs/JobsApi.md#fetch_task_log_info) | **GET** /api/v3/tasks/{task_id}/log | Get the URL of the task log, and some more info.
|
||||
*JobsApi* | [**fetch_task_log_tail**](flamenco/manager/docs/JobsApi.md#fetch_task_log_tail) | **GET** /api/v3/tasks/{task_id}/logtail | Fetch the last few lines of the task's log.
|
||||
*JobsApi* | [**get_job_type**](flamenco/manager/docs/JobsApi.md#get_job_type) | **GET** /api/v3/jobs/type/{typeName} | Get single job type and its parameters.
|
||||
*JobsApi* | [**get_job_types**](flamenco/manager/docs/JobsApi.md#get_job_types) | **GET** /api/v3/jobs/types | Get list of job types and their parameters.
|
||||
*JobsApi* | [**query_jobs**](flamenco/manager/docs/JobsApi.md#query_jobs) | **POST** /api/v3/jobs/query | Fetch list of jobs.
|
||||
*JobsApi* | [**remove_job_blocklist**](flamenco/manager/docs/JobsApi.md#remove_job_blocklist) | **DELETE** /api/v3/jobs/{job_id}/blocklist | Remove entries from a job blocklist.
|
||||
*JobsApi* | [**set_job_priority**](flamenco/manager/docs/JobsApi.md#set_job_priority) | **POST** /api/v3/jobs/{job_id}/setpriority |
|
||||
*JobsApi* | [**set_job_status**](flamenco/manager/docs/JobsApi.md#set_job_status) | **POST** /api/v3/jobs/{job_id}/setstatus |
|
||||
*JobsApi* | [**set_task_status**](flamenco/manager/docs/JobsApi.md#set_task_status) | **POST** /api/v3/tasks/{task_id}/setstatus |
|
||||
*JobsApi* | [**submit_job**](flamenco/manager/docs/JobsApi.md#submit_job) | **POST** /api/v3/jobs | Submit a new job for Flamenco Manager to execute.
|
||||
*JobsApi* | [**submit_job_check**](flamenco/manager/docs/JobsApi.md#submit_job_check) | **POST** /api/v3/jobs/check | Submit a new job for Flamenco Manager to check.
|
||||
*MetaApi* | [**check_blender_exe_path**](flamenco/manager/docs/MetaApi.md#check_blender_exe_path) | **POST** /api/v3/configuration/check/blender | Validate a CLI command for use as way to start Blender
|
||||
*MetaApi* | [**check_shared_storage_path**](flamenco/manager/docs/MetaApi.md#check_shared_storage_path) | **POST** /api/v3/configuration/check/shared-storage | Validate a path for use as shared storage.
|
||||
*MetaApi* | [**find_blender_exe_path**](flamenco/manager/docs/MetaApi.md#find_blender_exe_path) | **GET** /api/v3/configuration/check/blender | Find one or more CLI commands for use as way to start Blender
|
||||
*MetaApi* | [**get_configuration**](flamenco/manager/docs/MetaApi.md#get_configuration) | **GET** /api/v3/configuration | Get the configuration of this Manager.
|
||||
*MetaApi* | [**get_configuration_file**](flamenco/manager/docs/MetaApi.md#get_configuration_file) | **GET** /api/v3/configuration/file | Retrieve the configuration of Flamenco Manager.
|
||||
*MetaApi* | [**get_farm_status**](flamenco/manager/docs/MetaApi.md#get_farm_status) | **GET** /api/v3/status | Get the status of this Flamenco farm.
|
||||
*MetaApi* | [**get_shared_storage**](flamenco/manager/docs/MetaApi.md#get_shared_storage) | **GET** /api/v3/configuration/shared-storage/{audience}/{platform} | Get the shared storage location of this Manager, adjusted for the given audience and platform.
|
||||
*MetaApi* | [**get_variables**](flamenco/manager/docs/MetaApi.md#get_variables) | **GET** /api/v3/configuration/variables/{audience}/{platform} | Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
*MetaApi* | [**get_version**](flamenco/manager/docs/MetaApi.md#get_version) | **GET** /api/v3/version | Get the Flamenco version of this Manager
|
||||
*MetaApi* | [**save_setup_assistant_config**](flamenco/manager/docs/MetaApi.md#save_setup_assistant_config) | **POST** /api/v3/configuration/setup-assistant | Update the Manager's configuration, and restart it in fully functional mode.
|
||||
*ShamanApi* | [**shaman_checkout**](flamenco/manager/docs/ShamanApi.md#shaman_checkout) | **POST** /api/v3/shaman/checkout/create | Create a directory, and symlink the required files into it. The files must all have been uploaded to Shaman before calling this endpoint.
|
||||
*ShamanApi* | [**shaman_checkout_requirements**](flamenco/manager/docs/ShamanApi.md#shaman_checkout_requirements) | **POST** /api/v3/shaman/checkout/requirements | Checks a Shaman Requirements file, and reports which files are unknown.
|
||||
*ShamanApi* | [**shaman_file_store**](flamenco/manager/docs/ShamanApi.md#shaman_file_store) | **POST** /api/v3/shaman/files/{checksum}/{filesize} | Store a new file on the Shaman server. Note that the Shaman server can forcibly close the HTTP connection when another client finishes uploading the exact same file, to prevent double uploads. The file's contents should be sent in the request body.
|
||||
*ShamanApi* | [**shaman_file_store_check**](flamenco/manager/docs/ShamanApi.md#shaman_file_store_check) | **GET** /api/v3/shaman/files/{checksum}/{filesize} | Check the status of a file on the Shaman server.
|
||||
*WorkerApi* | [**may_worker_run**](flamenco/manager/docs/WorkerApi.md#may_worker_run) | **GET** /api/v3/worker/task/{task_id}/may-i-run | The response indicates whether the worker is allowed to run / keep running the task. Optionally contains a queued worker status change.
|
||||
*WorkerApi* | [**register_worker**](flamenco/manager/docs/WorkerApi.md#register_worker) | **POST** /api/v3/worker/register-worker | Register a new worker
|
||||
*WorkerApi* | [**schedule_task**](flamenco/manager/docs/WorkerApi.md#schedule_task) | **POST** /api/v3/worker/task | Obtain a new task to execute
|
||||
*WorkerApi* | [**sign_off**](flamenco/manager/docs/WorkerApi.md#sign_off) | **POST** /api/v3/worker/sign-off | Mark the worker as offline
|
||||
*WorkerApi* | [**sign_on**](flamenco/manager/docs/WorkerApi.md#sign_on) | **POST** /api/v3/worker/sign-on | Authenticate & sign in the worker.
|
||||
*WorkerApi* | [**task_output_produced**](flamenco/manager/docs/WorkerApi.md#task_output_produced) | **POST** /api/v3/worker/task/{task_id}/output-produced | Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
|
||||
*WorkerApi* | [**task_update**](flamenco/manager/docs/WorkerApi.md#task_update) | **POST** /api/v3/worker/task/{task_id} | Update the task, typically to indicate progress, completion, or failure.
|
||||
*WorkerApi* | [**worker_state**](flamenco/manager/docs/WorkerApi.md#worker_state) | **GET** /api/v3/worker/state |
|
||||
*WorkerApi* | [**worker_state_changed**](flamenco/manager/docs/WorkerApi.md#worker_state_changed) | **POST** /api/v3/worker/state-changed | Worker changed state. This could be as acknowledgement of a Manager-requested state change, or in response to worker-local signals.
|
||||
*WorkerMgtApi* | [**create_worker_tag**](flamenco/manager/docs/WorkerMgtApi.md#create_worker_tag) | **POST** /api/v3/worker-mgt/tags | Create a new worker tag.
|
||||
*WorkerMgtApi* | [**delete_worker**](flamenco/manager/docs/WorkerMgtApi.md#delete_worker) | **DELETE** /api/v3/worker-mgt/workers/{worker_id} | Remove the given worker. It is recommended to only call this function when the worker is in `offline` state. If the worker is still running, stop it first. Any task still assigned to the worker will be requeued.
|
||||
*WorkerMgtApi* | [**delete_worker_tag**](flamenco/manager/docs/WorkerMgtApi.md#delete_worker_tag) | **DELETE** /api/v3/worker-mgt/tag/{tag_id} | Remove this worker tag. This unassigns all workers from the tag and removes it.
|
||||
*WorkerMgtApi* | [**fetch_worker**](flamenco/manager/docs/WorkerMgtApi.md#fetch_worker) | **GET** /api/v3/worker-mgt/workers/{worker_id} | Fetch info about the worker.
|
||||
*WorkerMgtApi* | [**fetch_worker_sleep_schedule**](flamenco/manager/docs/WorkerMgtApi.md#fetch_worker_sleep_schedule) | **GET** /api/v3/worker-mgt/workers/{worker_id}/sleep-schedule |
|
||||
*WorkerMgtApi* | [**fetch_worker_tag**](flamenco/manager/docs/WorkerMgtApi.md#fetch_worker_tag) | **GET** /api/v3/worker-mgt/tag/{tag_id} | Get a single worker tag.
|
||||
*WorkerMgtApi* | [**fetch_worker_tags**](flamenco/manager/docs/WorkerMgtApi.md#fetch_worker_tags) | **GET** /api/v3/worker-mgt/tags | Get list of worker tags.
|
||||
*WorkerMgtApi* | [**fetch_workers**](flamenco/manager/docs/WorkerMgtApi.md#fetch_workers) | **GET** /api/v3/worker-mgt/workers | Get list of workers.
|
||||
*WorkerMgtApi* | [**request_worker_status_change**](flamenco/manager/docs/WorkerMgtApi.md#request_worker_status_change) | **POST** /api/v3/worker-mgt/workers/{worker_id}/setstatus |
|
||||
*WorkerMgtApi* | [**set_worker_sleep_schedule**](flamenco/manager/docs/WorkerMgtApi.md#set_worker_sleep_schedule) | **POST** /api/v3/worker-mgt/workers/{worker_id}/sleep-schedule |
|
||||
*WorkerMgtApi* | [**set_worker_tags**](flamenco/manager/docs/WorkerMgtApi.md#set_worker_tags) | **POST** /api/v3/worker-mgt/workers/{worker_id}/settags |
|
||||
*WorkerMgtApi* | [**update_worker_tag**](flamenco/manager/docs/WorkerMgtApi.md#update_worker_tag) | **PUT** /api/v3/worker-mgt/tag/{tag_id} | Update an existing worker tag.
|
||||
|
||||
|
||||
## Documentation For Models
|
||||
|
||||
- [AssignedTask](flamenco\manager\docs/AssignedTask.md)
|
||||
- [AvailableJobSetting](flamenco\manager\docs/AvailableJobSetting.md)
|
||||
- [AvailableJobSettingEvalInfo](flamenco\manager\docs/AvailableJobSettingEvalInfo.md)
|
||||
- [AvailableJobSettingSubtype](flamenco\manager\docs/AvailableJobSettingSubtype.md)
|
||||
- [AvailableJobSettingType](flamenco\manager\docs/AvailableJobSettingType.md)
|
||||
- [AvailableJobSettingVisibility](flamenco\manager\docs/AvailableJobSettingVisibility.md)
|
||||
- [AvailableJobType](flamenco\manager\docs/AvailableJobType.md)
|
||||
- [AvailableJobTypes](flamenco\manager\docs/AvailableJobTypes.md)
|
||||
- [BlenderPathCheckResult](flamenco\manager\docs/BlenderPathCheckResult.md)
|
||||
- [BlenderPathFindResult](flamenco\manager\docs/BlenderPathFindResult.md)
|
||||
- [BlenderPathSource](flamenco\manager\docs/BlenderPathSource.md)
|
||||
- [Command](flamenco\manager\docs/Command.md)
|
||||
- [Error](flamenco\manager\docs/Error.md)
|
||||
- [EventFarmStatus](flamenco\manager\docs/EventFarmStatus.md)
|
||||
- [EventJobUpdate](flamenco\manager\docs/EventJobUpdate.md)
|
||||
- [EventLastRenderedUpdate](flamenco\manager\docs/EventLastRenderedUpdate.md)
|
||||
- [EventLifeCycle](flamenco\manager\docs/EventLifeCycle.md)
|
||||
- [EventTaskLogUpdate](flamenco\manager\docs/EventTaskLogUpdate.md)
|
||||
- [EventTaskUpdate](flamenco\manager\docs/EventTaskUpdate.md)
|
||||
- [EventWorkerTagUpdate](flamenco\manager\docs/EventWorkerTagUpdate.md)
|
||||
- [EventWorkerUpdate](flamenco\manager\docs/EventWorkerUpdate.md)
|
||||
- [FarmStatus](flamenco\manager\docs/FarmStatus.md)
|
||||
- [FarmStatusReport](flamenco\manager\docs/FarmStatusReport.md)
|
||||
- [FlamencoVersion](flamenco\manager\docs/FlamencoVersion.md)
|
||||
- [Job](flamenco\manager\docs/Job.md)
|
||||
- [JobAllOf](flamenco\manager\docs/JobAllOf.md)
|
||||
- [JobBlocklist](flamenco\manager\docs/JobBlocklist.md)
|
||||
- [JobBlocklistEntry](flamenco\manager\docs/JobBlocklistEntry.md)
|
||||
- [JobDeletionInfo](flamenco\manager\docs/JobDeletionInfo.md)
|
||||
- [JobLastRenderedImageInfo](flamenco\manager\docs/JobLastRenderedImageInfo.md)
|
||||
- [JobMassDeletionSelection](flamenco\manager\docs/JobMassDeletionSelection.md)
|
||||
- [JobMetadata](flamenco\manager\docs/JobMetadata.md)
|
||||
- [JobPriorityChange](flamenco\manager\docs/JobPriorityChange.md)
|
||||
- [JobSettings](flamenco\manager\docs/JobSettings.md)
|
||||
- [JobStatus](flamenco\manager\docs/JobStatus.md)
|
||||
- [JobStatusChange](flamenco\manager\docs/JobStatusChange.md)
|
||||
- [JobStorageInfo](flamenco\manager\docs/JobStorageInfo.md)
|
||||
- [JobTasksSummary](flamenco\manager\docs/JobTasksSummary.md)
|
||||
- [JobsQuery](flamenco\manager\docs/JobsQuery.md)
|
||||
- [JobsQueryResult](flamenco\manager\docs/JobsQueryResult.md)
|
||||
- [LifeCycleEventType](flamenco\manager\docs/LifeCycleEventType.md)
|
||||
- [ManagerConfiguration](flamenco\manager\docs/ManagerConfiguration.md)
|
||||
- [ManagerVariable](flamenco\manager\docs/ManagerVariable.md)
|
||||
- [ManagerVariableAudience](flamenco\manager\docs/ManagerVariableAudience.md)
|
||||
- [ManagerVariables](flamenco\manager\docs/ManagerVariables.md)
|
||||
- [MayKeepRunning](flamenco\manager\docs/MayKeepRunning.md)
|
||||
- [PathCheckInput](flamenco\manager\docs/PathCheckInput.md)
|
||||
- [PathCheckResult](flamenco\manager\docs/PathCheckResult.md)
|
||||
- [RegisteredWorker](flamenco\manager\docs/RegisteredWorker.md)
|
||||
- [SecurityError](flamenco\manager\docs/SecurityError.md)
|
||||
- [SetupAssistantConfig](flamenco\manager\docs/SetupAssistantConfig.md)
|
||||
- [ShamanCheckout](flamenco\manager\docs/ShamanCheckout.md)
|
||||
- [ShamanCheckoutResult](flamenco\manager\docs/ShamanCheckoutResult.md)
|
||||
- [ShamanFileSpec](flamenco\manager\docs/ShamanFileSpec.md)
|
||||
- [ShamanFileSpecWithStatus](flamenco\manager\docs/ShamanFileSpecWithStatus.md)
|
||||
- [ShamanFileStatus](flamenco\manager\docs/ShamanFileStatus.md)
|
||||
- [ShamanRequirementsRequest](flamenco\manager\docs/ShamanRequirementsRequest.md)
|
||||
- [ShamanRequirementsResponse](flamenco\manager\docs/ShamanRequirementsResponse.md)
|
||||
- [ShamanSingleFileStatus](flamenco\manager\docs/ShamanSingleFileStatus.md)
|
||||
- [SharedStorageLocation](flamenco\manager\docs/SharedStorageLocation.md)
|
||||
- [SocketIOSubscription](flamenco\manager\docs/SocketIOSubscription.md)
|
||||
- [SocketIOSubscriptionOperation](flamenco\manager\docs/SocketIOSubscriptionOperation.md)
|
||||
- [SocketIOSubscriptionType](flamenco\manager\docs/SocketIOSubscriptionType.md)
|
||||
- [SubmittedJob](flamenco\manager\docs/SubmittedJob.md)
|
||||
- [Task](flamenco\manager\docs/Task.md)
|
||||
- [TaskLogInfo](flamenco\manager\docs/TaskLogInfo.md)
|
||||
- [TaskStatus](flamenco\manager\docs/TaskStatus.md)
|
||||
- [TaskStatusChange](flamenco\manager\docs/TaskStatusChange.md)
|
||||
- [TaskSummary](flamenco\manager\docs/TaskSummary.md)
|
||||
- [TaskUpdate](flamenco\manager\docs/TaskUpdate.md)
|
||||
- [TaskWorker](flamenco\manager\docs/TaskWorker.md)
|
||||
- [Worker](flamenco\manager\docs/Worker.md)
|
||||
- [WorkerAllOf](flamenco\manager\docs/WorkerAllOf.md)
|
||||
- [WorkerList](flamenco\manager\docs/WorkerList.md)
|
||||
- [WorkerRegistration](flamenco\manager\docs/WorkerRegistration.md)
|
||||
- [WorkerSignOn](flamenco\manager\docs/WorkerSignOn.md)
|
||||
- [WorkerSleepSchedule](flamenco\manager\docs/WorkerSleepSchedule.md)
|
||||
- [WorkerStateChange](flamenco\manager\docs/WorkerStateChange.md)
|
||||
- [WorkerStateChanged](flamenco\manager\docs/WorkerStateChanged.md)
|
||||
- [WorkerStatus](flamenco\manager\docs/WorkerStatus.md)
|
||||
- [WorkerStatusChangeRequest](flamenco\manager\docs/WorkerStatusChangeRequest.md)
|
||||
- [WorkerSummary](flamenco\manager\docs/WorkerSummary.md)
|
||||
- [WorkerTag](flamenco\manager\docs/WorkerTag.md)
|
||||
- [WorkerTagChangeRequest](flamenco\manager\docs/WorkerTagChangeRequest.md)
|
||||
- [WorkerTagList](flamenco\manager\docs/WorkerTagList.md)
|
||||
- [WorkerTask](flamenco\manager\docs/WorkerTask.md)
|
||||
- [WorkerTaskAllOf](flamenco\manager\docs/WorkerTaskAllOf.md)
|
||||
- [AssignedTask](flamenco/manager/docs/AssignedTask.md)
|
||||
- [AvailableJobSetting](flamenco/manager/docs/AvailableJobSetting.md)
|
||||
- [AvailableJobSettingEvalInfo](flamenco/manager/docs/AvailableJobSettingEvalInfo.md)
|
||||
- [AvailableJobSettingSubtype](flamenco/manager/docs/AvailableJobSettingSubtype.md)
|
||||
- [AvailableJobSettingType](flamenco/manager/docs/AvailableJobSettingType.md)
|
||||
- [AvailableJobSettingVisibility](flamenco/manager/docs/AvailableJobSettingVisibility.md)
|
||||
- [AvailableJobType](flamenco/manager/docs/AvailableJobType.md)
|
||||
- [AvailableJobTypes](flamenco/manager/docs/AvailableJobTypes.md)
|
||||
- [BlenderPathCheckResult](flamenco/manager/docs/BlenderPathCheckResult.md)
|
||||
- [BlenderPathFindResult](flamenco/manager/docs/BlenderPathFindResult.md)
|
||||
- [BlenderPathSource](flamenco/manager/docs/BlenderPathSource.md)
|
||||
- [Command](flamenco/manager/docs/Command.md)
|
||||
- [Error](flamenco/manager/docs/Error.md)
|
||||
- [EventFarmStatus](flamenco/manager/docs/EventFarmStatus.md)
|
||||
- [EventJobUpdate](flamenco/manager/docs/EventJobUpdate.md)
|
||||
- [EventLastRenderedUpdate](flamenco/manager/docs/EventLastRenderedUpdate.md)
|
||||
- [EventLifeCycle](flamenco/manager/docs/EventLifeCycle.md)
|
||||
- [EventTaskLogUpdate](flamenco/manager/docs/EventTaskLogUpdate.md)
|
||||
- [EventTaskUpdate](flamenco/manager/docs/EventTaskUpdate.md)
|
||||
- [EventWorkerTagUpdate](flamenco/manager/docs/EventWorkerTagUpdate.md)
|
||||
- [EventWorkerUpdate](flamenco/manager/docs/EventWorkerUpdate.md)
|
||||
- [FarmStatus](flamenco/manager/docs/FarmStatus.md)
|
||||
- [FarmStatusReport](flamenco/manager/docs/FarmStatusReport.md)
|
||||
- [FlamencoVersion](flamenco/manager/docs/FlamencoVersion.md)
|
||||
- [Job](flamenco/manager/docs/Job.md)
|
||||
- [JobAllOf](flamenco/manager/docs/JobAllOf.md)
|
||||
- [JobBlocklist](flamenco/manager/docs/JobBlocklist.md)
|
||||
- [JobBlocklistEntry](flamenco/manager/docs/JobBlocklistEntry.md)
|
||||
- [JobDeletionInfo](flamenco/manager/docs/JobDeletionInfo.md)
|
||||
- [JobLastRenderedImageInfo](flamenco/manager/docs/JobLastRenderedImageInfo.md)
|
||||
- [JobMassDeletionSelection](flamenco/manager/docs/JobMassDeletionSelection.md)
|
||||
- [JobMetadata](flamenco/manager/docs/JobMetadata.md)
|
||||
- [JobPriorityChange](flamenco/manager/docs/JobPriorityChange.md)
|
||||
- [JobSettings](flamenco/manager/docs/JobSettings.md)
|
||||
- [JobStatus](flamenco/manager/docs/JobStatus.md)
|
||||
- [JobStatusChange](flamenco/manager/docs/JobStatusChange.md)
|
||||
- [JobStorageInfo](flamenco/manager/docs/JobStorageInfo.md)
|
||||
- [JobTasksSummary](flamenco/manager/docs/JobTasksSummary.md)
|
||||
- [JobsQuery](flamenco/manager/docs/JobsQuery.md)
|
||||
- [JobsQueryResult](flamenco/manager/docs/JobsQueryResult.md)
|
||||
- [LifeCycleEventType](flamenco/manager/docs/LifeCycleEventType.md)
|
||||
- [ManagerConfiguration](flamenco/manager/docs/ManagerConfiguration.md)
|
||||
- [ManagerVariable](flamenco/manager/docs/ManagerVariable.md)
|
||||
- [ManagerVariableAudience](flamenco/manager/docs/ManagerVariableAudience.md)
|
||||
- [ManagerVariables](flamenco/manager/docs/ManagerVariables.md)
|
||||
- [MayKeepRunning](flamenco/manager/docs/MayKeepRunning.md)
|
||||
- [PathCheckInput](flamenco/manager/docs/PathCheckInput.md)
|
||||
- [PathCheckResult](flamenco/manager/docs/PathCheckResult.md)
|
||||
- [RegisteredWorker](flamenco/manager/docs/RegisteredWorker.md)
|
||||
- [SecurityError](flamenco/manager/docs/SecurityError.md)
|
||||
- [SetupAssistantConfig](flamenco/manager/docs/SetupAssistantConfig.md)
|
||||
- [ShamanCheckout](flamenco/manager/docs/ShamanCheckout.md)
|
||||
- [ShamanCheckoutResult](flamenco/manager/docs/ShamanCheckoutResult.md)
|
||||
- [ShamanFileSpec](flamenco/manager/docs/ShamanFileSpec.md)
|
||||
- [ShamanFileSpecWithStatus](flamenco/manager/docs/ShamanFileSpecWithStatus.md)
|
||||
- [ShamanFileStatus](flamenco/manager/docs/ShamanFileStatus.md)
|
||||
- [ShamanRequirementsRequest](flamenco/manager/docs/ShamanRequirementsRequest.md)
|
||||
- [ShamanRequirementsResponse](flamenco/manager/docs/ShamanRequirementsResponse.md)
|
||||
- [ShamanSingleFileStatus](flamenco/manager/docs/ShamanSingleFileStatus.md)
|
||||
- [SharedStorageLocation](flamenco/manager/docs/SharedStorageLocation.md)
|
||||
- [SocketIOSubscription](flamenco/manager/docs/SocketIOSubscription.md)
|
||||
- [SocketIOSubscriptionOperation](flamenco/manager/docs/SocketIOSubscriptionOperation.md)
|
||||
- [SocketIOSubscriptionType](flamenco/manager/docs/SocketIOSubscriptionType.md)
|
||||
- [SubmittedJob](flamenco/manager/docs/SubmittedJob.md)
|
||||
- [Task](flamenco/manager/docs/Task.md)
|
||||
- [TaskLogInfo](flamenco/manager/docs/TaskLogInfo.md)
|
||||
- [TaskStatus](flamenco/manager/docs/TaskStatus.md)
|
||||
- [TaskStatusChange](flamenco/manager/docs/TaskStatusChange.md)
|
||||
- [TaskSummary](flamenco/manager/docs/TaskSummary.md)
|
||||
- [TaskUpdate](flamenco/manager/docs/TaskUpdate.md)
|
||||
- [TaskWorker](flamenco/manager/docs/TaskWorker.md)
|
||||
- [Worker](flamenco/manager/docs/Worker.md)
|
||||
- [WorkerAllOf](flamenco/manager/docs/WorkerAllOf.md)
|
||||
- [WorkerList](flamenco/manager/docs/WorkerList.md)
|
||||
- [WorkerRegistration](flamenco/manager/docs/WorkerRegistration.md)
|
||||
- [WorkerSignOn](flamenco/manager/docs/WorkerSignOn.md)
|
||||
- [WorkerSleepSchedule](flamenco/manager/docs/WorkerSleepSchedule.md)
|
||||
- [WorkerStateChange](flamenco/manager/docs/WorkerStateChange.md)
|
||||
- [WorkerStateChanged](flamenco/manager/docs/WorkerStateChanged.md)
|
||||
- [WorkerStatus](flamenco/manager/docs/WorkerStatus.md)
|
||||
- [WorkerStatusChangeRequest](flamenco/manager/docs/WorkerStatusChangeRequest.md)
|
||||
- [WorkerSummary](flamenco/manager/docs/WorkerSummary.md)
|
||||
- [WorkerTag](flamenco/manager/docs/WorkerTag.md)
|
||||
- [WorkerTagChangeRequest](flamenco/manager/docs/WorkerTagChangeRequest.md)
|
||||
- [WorkerTagList](flamenco/manager/docs/WorkerTagList.md)
|
||||
- [WorkerTask](flamenco/manager/docs/WorkerTask.md)
|
||||
- [WorkerTaskAllOf](flamenco/manager/docs/WorkerTaskAllOf.md)
|
||||
|
||||
|
||||
## Documentation For Authorization
|
||||
|
19
go.mod
19
go.mod
@ -1,6 +1,6 @@
|
||||
module projects.blender.org/studio/flamenco
|
||||
|
||||
go 1.22
|
||||
go 1.22.0
|
||||
|
||||
require (
|
||||
github.com/adrg/xdg v0.4.0
|
||||
@ -20,15 +20,15 @@ require (
|
||||
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
|
||||
github.com/google/uuid v1.5.0
|
||||
github.com/graarh/golang-socketio v0.0.0-20170510162725-2c44953b9b5f
|
||||
github.com/labstack/echo/v4 v4.9.1
|
||||
github.com/mattn/go-colorable v0.1.12
|
||||
github.com/labstack/echo/v4 v4.11.4
|
||||
github.com/mattn/go-colorable v0.1.13
|
||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
|
||||
github.com/pressly/goose/v3 v3.15.1
|
||||
github.com/rs/zerolog v1.26.1
|
||||
github.com/stretchr/testify v1.8.4
|
||||
github.com/zcalusic/sysinfo v1.0.1
|
||||
github.com/ziflex/lecho/v3 v3.1.0
|
||||
golang.org/x/crypto v0.16.0
|
||||
golang.org/x/crypto v0.17.0
|
||||
golang.org/x/image v0.10.0
|
||||
golang.org/x/net v0.19.0
|
||||
golang.org/x/sys v0.15.0
|
||||
@ -38,6 +38,7 @@ require (
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/dlclark/regexp2 v1.7.0 // indirect
|
||||
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||
@ -52,17 +53,19 @@ require (
|
||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||
github.com/jinzhu/now v1.1.5 // indirect
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
||||
github.com/labstack/gommon v0.4.0 // indirect
|
||||
github.com/mailru/easyjson v0.7.0 // indirect
|
||||
github.com/josharian/intern v1.0.0 // indirect
|
||||
github.com/labstack/gommon v0.4.2 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/oapi-codegen/runtime v1.1.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||
github.com/valyala/fasttemplate v1.2.1 // indirect
|
||||
github.com/valyala/fasttemplate v1.2.2 // indirect
|
||||
golang.org/x/mod v0.14.0 // indirect
|
||||
golang.org/x/sync v0.5.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba // indirect
|
||||
golang.org/x/time v0.5.0 // indirect
|
||||
golang.org/x/tools v0.16.1 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
lukechampine.com/uint128 v1.3.0 // indirect
|
||||
|
38
go.sum
38
go.sum
@ -1,9 +1,13 @@
|
||||
github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk=
|
||||
github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls=
|
||||
github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E=
|
||||
github.com/alessio/shellescape v1.4.2 h1:MHPfaU+ddJ0/bYWpgIeUnQUqKrlJ1S7BfEYPM4uEoM0=
|
||||
github.com/alessio/shellescape v1.4.2/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
|
||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ=
|
||||
github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk=
|
||||
github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A=
|
||||
github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
|
||||
github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w=
|
||||
github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY=
|
||||
github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic=
|
||||
github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
@ -94,8 +98,11 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD
|
||||
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
|
||||
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
|
||||
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
|
||||
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
|
||||
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
|
||||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/juju/gnuflag v0.0.0-20171113085948-2ce1bb71843d/go.mod h1:2PavIy+JPciBPrBUjwbNvtwB6RQlve+hkpll6QSNmOE=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
@ -108,12 +115,12 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg=
|
||||
github.com/labstack/echo/v4 v4.6.1/go.mod h1:RnjgMWNDB9g/HucVWhQYNQP9PvbYf6adqftqryo7s9k=
|
||||
github.com/labstack/echo/v4 v4.9.1 h1:GliPYSpzGKlyOhqIbG8nmHBo3i1saKWFOgh41AN3b+Y=
|
||||
github.com/labstack/echo/v4 v4.9.1/go.mod h1:Pop5HLc+xoc4qhTZ1ip6C0RtP7Z+4VzRLWZZFKqbbjo=
|
||||
github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8=
|
||||
github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8=
|
||||
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
|
||||
github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
|
||||
github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8=
|
||||
github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
|
||||
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
|
||||
github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU=
|
||||
github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
||||
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
|
||||
github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
|
||||
@ -125,19 +132,20 @@ github.com/lestrrat-go/jwx v1.2.7/go.mod h1:bw24IXWbavc0R2RsOtpXL7RtMyP589yZ1+L7
|
||||
github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
|
||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM=
|
||||
github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
|
||||
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
|
||||
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
|
||||
github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ=
|
||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
|
||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
|
||||
@ -146,6 +154,8 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||
github.com/oapi-codegen/runtime v1.1.1 h1:EXLHh0DXIJnWhdRPN2w4MXAzFyE4CskzhNLUmtpMYro=
|
||||
github.com/oapi-codegen/runtime v1.1.1/go.mod h1:SK9X900oXmPWilYR5/WKPzt3Kqxn/uS/+lbpREv+eCg=
|
||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
|
||||
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
|
||||
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
|
||||
@ -163,6 +173,7 @@ github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/rs/zerolog v1.26.0/go.mod h1:yBiM87lvSqX8h0Ww4sdzNSkVYZ8dL2xjZJG1lAuGZEo=
|
||||
github.com/rs/zerolog v1.26.1 h1:/ihwxqH+4z8UxyI70wM1z9yCvkWcfz/a3mj48k/Zngc=
|
||||
github.com/rs/zerolog v1.26.1/go.mod h1:/wSSJWX7lVrsOwlbyTRSOJvqRlc+WjWlfes+CiJ+tmc=
|
||||
github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
@ -178,8 +189,9 @@ github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxW
|
||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
||||
github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
|
||||
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
|
||||
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
@ -199,8 +211,8 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y
|
||||
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.0.0-20211215165025-cf75a172585e/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
|
||||
golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
|
||||
golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
||||
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/image v0.10.0 h1:gXjUUtwtx5yOE0VKWq1CH4IJAClq4UGgUA3i+rpON9M=
|
||||
golang.org/x/image v0.10.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0=
|
||||
@ -258,6 +270,7 @@ golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
|
||||
@ -277,8 +290,9 @@ golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE=
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
|
||||
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
|
||||
|
@ -92,6 +92,8 @@ func (f *Flamenco) SubmitJob(e echo.Context) error {
|
||||
logger = logger.With().Str("job_id", authoredJob.JobID).Logger()
|
||||
|
||||
// TODO: check whether this job should be queued immediately or start paused.
|
||||
// checking whether the job has
|
||||
//if
|
||||
authoredJob.Status = api.JobStatusQueued
|
||||
|
||||
if err := f.persist.StoreAuthoredJob(ctx, *authoredJob); err != nil {
|
||||
|
@ -111,6 +111,7 @@ func (s *Service) Compile(ctx context.Context, sj api.SubmittedJob) (*AuthoredJo
|
||||
|
||||
Settings: make(JobSettings),
|
||||
Metadata: make(JobMetadata),
|
||||
//SubmitAsPaused: sj.SubmitAsPaused,
|
||||
}
|
||||
if sj.Settings != nil {
|
||||
for key, value := range sj.Settings.AdditionalProperties {
|
||||
|
@ -31,6 +31,9 @@ const JOB_TYPE = {
|
||||
description: "File extension used when rendering images" },
|
||||
{ key: "has_previews", type: "bool", required: false, eval: "C.scene.render.image_settings.use_preview", visible: "hidden",
|
||||
description: "Whether Blender will render preview images."},
|
||||
|
||||
// Settings for demo purposes:
|
||||
{ key: "submit_as_paused", type: "bool", required: true, default: false, visible: "submission", description: "Submit the job in a paused state" },
|
||||
]
|
||||
};
|
||||
|
||||
|
@ -116,8 +116,7 @@ func (sm *StateMachine) updateJobAfterTaskStatusChange(
|
||||
return sm.jobStatusIfAThenB(ctx, logger, job, api.JobStatusCompleted, api.JobStatusRequeueing, "task was queued")
|
||||
|
||||
case api.TaskStatusPaused:
|
||||
// Pausing a task has no impact on the job.
|
||||
return nil
|
||||
return sm.updateJobOnTaskStatusPaused(ctx, logger, job)
|
||||
|
||||
case api.TaskStatusCanceled:
|
||||
return sm.updateJobOnTaskStatusCanceled(ctx, logger, job)
|
||||
@ -180,6 +179,38 @@ func (sm *StateMachine) updateJobOnTaskStatusCanceled(ctx context.Context, logge
|
||||
return nil
|
||||
}
|
||||
|
||||
// updateJobOnTaskStatusPaused conditionally escalates the pausing of a task to pause the job.
|
||||
func (sm *StateMachine) updateJobOnTaskStatusPaused(ctx context.Context, logger zerolog.Logger, job *persistence.Job) error {
|
||||
// If no more tasks can run, pause the job.
|
||||
numRunnable, _, err := sm.persist.CountTasksOfJobInStatus(ctx, job,
|
||||
api.TaskStatusActive, api.TaskStatusQueued, api.TaskStatusSoftFailed)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if numRunnable == 0 {
|
||||
logger.Info().Msg("paused task was last runnable task of job, pausing job")
|
||||
return sm.JobStatusChange(ctx, job, api.JobStatusPaused, "paused task was last runnable task of job, pausing job")
|
||||
}
|
||||
|
||||
if job.Status == api.JobStatusPauseRequested {
|
||||
// if the job is in pause-requested state, and all other tasks are paused,
|
||||
// then the job can be paused.
|
||||
numPaused, numTotal, err := sm.persist.CountTasksOfJobInStatus(ctx, job, api.TaskStatusPaused)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if numPaused == numTotal {
|
||||
logger.Info().Msg("all tasks of job are paused, job is paused")
|
||||
return sm.JobStatusChange(ctx, job, api.JobStatusPaused, "all tasks paused")
|
||||
}
|
||||
} else {
|
||||
// if the job is not in pause-requested state, then some error occurred and the job should be failed.
|
||||
logger.Info().Msg("task cannot be changed to paused when job is not in pause-requested state")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// updateJobOnTaskStatusFailed conditionally escalates the failure of a task to fail the entire job.
|
||||
func (sm *StateMachine) updateJobOnTaskStatusFailed(ctx context.Context, logger zerolog.Logger, job *persistence.Job) error {
|
||||
// Count the number of failed tasks. If it is over the threshold, fail the job.
|
||||
@ -382,6 +413,13 @@ func (sm *StateMachine) updateTasksAfterJobStatusChange(
|
||||
massTaskUpdate: true,
|
||||
}, err
|
||||
|
||||
case api.JobStatusPauseRequested:
|
||||
jobStatus, err := sm.pauseTasks(ctx, logger, job)
|
||||
return tasksUpdateResult{
|
||||
followingJobStatus: jobStatus,
|
||||
massTaskUpdate: true,
|
||||
}, err
|
||||
|
||||
case api.JobStatusRequeueing:
|
||||
jobStatus, err := sm.requeueTasks(ctx, logger, job, oldJobStatus)
|
||||
return tasksUpdateResult{
|
||||
@ -435,6 +473,37 @@ func (sm *StateMachine) cancelTasks(
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func (sm *StateMachine) pauseTasks(
|
||||
ctx context.Context, logger zerolog.Logger, job *persistence.Job,
|
||||
) (api.JobStatus, error) {
|
||||
logger.Info().Msg("pausing tasks of job")
|
||||
|
||||
// Any task that might run in the future should get paused.
|
||||
// Active jobs should remain active until finished
|
||||
taskStatusesToPause := []api.TaskStatus{
|
||||
api.TaskStatusActive,
|
||||
api.TaskStatusQueued,
|
||||
api.TaskStatusCanceled,
|
||||
}
|
||||
err := sm.persist.UpdateJobsTaskStatusesConditional(
|
||||
ctx, job, taskStatusesToPause, api.TaskStatusPaused,
|
||||
fmt.Sprintf("Manager paused this task because the job got status %q.", job.Status),
|
||||
)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("pausing tasks of job %s: %w", job.UUID, err)
|
||||
}
|
||||
|
||||
// If pause was requested, it has now happened, so the job can transition.
|
||||
if job.Status == api.JobStatusPauseRequested {
|
||||
logger.Info().Msg("all tasks of job paused, job can go to 'paused' status")
|
||||
return api.JobStatusPaused, nil
|
||||
}
|
||||
|
||||
// This could mean pause was triggered by failure of the job, in which case the
|
||||
// job is already in the correct status.
|
||||
return "", nil
|
||||
}
|
||||
|
||||
// requeueTasks re-queues all tasks of the job.
|
||||
//
|
||||
// This function assumes that the current job status is "requeueing".
|
||||
|
@ -758,7 +758,7 @@ paths:
|
||||
$ref: "#/components/schemas/SubmittedJob"
|
||||
responses:
|
||||
"200":
|
||||
description: Job was succesfully compiled into individual tasks.
|
||||
description: Job was successfully compiled into individual tasks.
|
||||
content:
|
||||
application/json:
|
||||
schema: { $ref: "#/components/schemas/Job" }
|
||||
@ -1680,6 +1680,7 @@ components:
|
||||
- completed
|
||||
- failed
|
||||
- paused
|
||||
- pause-requested
|
||||
- queued
|
||||
- cancel-requested
|
||||
- requeueing
|
||||
@ -1861,6 +1862,12 @@ components:
|
||||
Worker tag that should execute this job. When a tag ID is
|
||||
given, only Workers in that tag will be scheduled to work on it.
|
||||
If empty or ommitted, all workers can work on this job.
|
||||
"submit_as_paused":
|
||||
type: boolean
|
||||
description: >
|
||||
Whether to submit this job as paused. This is useful for jobs that
|
||||
should not start immediately, but only after manual intervention.
|
||||
default: false
|
||||
required: [name, type, priority, submitter_platform]
|
||||
example:
|
||||
type: "simple-blender-render"
|
||||
|
455
pkg/api/openapi_spec.gen.go
generated
455
pkg/api/openapi_spec.gen.go
generated
@ -18,233 +18,234 @@ import (
|
||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||
var swaggerSpec = []string{
|
||||
|
||||
"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",
|
||||
"AQA=",
|
||||
}
|
||||
|
||||
|
5
pkg/api/openapi_types.gen.go
generated
5
pkg/api/openapi_types.gen.go
generated
@ -84,6 +84,8 @@ const (
|
||||
|
||||
JobStatusFailed JobStatus = "failed"
|
||||
|
||||
JobStatusPauseRequested JobStatus = "pause-requested"
|
||||
|
||||
JobStatusPaused JobStatus = "paused"
|
||||
|
||||
JobStatusQueued JobStatus = "queued"
|
||||
@ -703,6 +705,9 @@ type SubmittedJob struct {
|
||||
// Storage info of a job, which Flamenco can use to remove job-related files when necessary.
|
||||
Storage *JobStorageInfo `json:"storage,omitempty"`
|
||||
|
||||
// Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention.
|
||||
SubmitAsPaused *bool `json:"submit_as_paused,omitempty"`
|
||||
|
||||
// Operating system of the submitter. This is used to recognise two-way variables. This should be a lower-case version of the platform, like "linux", "windows", "darwin", "openbsd", etc. Should be ompatible with Go's `runtime.GOOS`; run `go tool dist list` to get a list of possible platforms.
|
||||
// As a special case, the platform "manager" can be given, which will be interpreted as "the Manager's platform". This is mostly to make test/debug scripts easier, as they can use a static document on all platforms.
|
||||
SubmitterPlatform string `json:"submitter_platform"`
|
||||
|
@ -8,6 +8,9 @@
|
||||
<button class="btn delete dangerous" v-on:click="onButtonDeleteConfirmed">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn pause" :disabled="!jobs.canPause" v-on:click="onButtonPause">
|
||||
Pause Job
|
||||
</button>
|
||||
<button class="btn cancel" :disabled="!jobs.canCancel" v-on:click="onButtonCancel">
|
||||
Cancel Job
|
||||
</button>
|
||||
|
16
web/app/src/manager-api/model/Job.js
generated
16
web/app/src/manager-api/model/Job.js
generated
@ -100,6 +100,9 @@ class Job {
|
||||
if (data.hasOwnProperty('worker_tag')) {
|
||||
obj['worker_tag'] = ApiClient.convertToType(data['worker_tag'], 'String');
|
||||
}
|
||||
if (data.hasOwnProperty('submit_as_paused')) {
|
||||
obj['submit_as_paused'] = ApiClient.convertToType(data['submit_as_paused'], 'Boolean');
|
||||
}
|
||||
if (data.hasOwnProperty('id')) {
|
||||
obj['id'] = ApiClient.convertToType(data['id'], 'String');
|
||||
}
|
||||
@ -175,6 +178,13 @@ Job.prototype['storage'] = undefined;
|
||||
*/
|
||||
Job.prototype['worker_tag'] = undefined;
|
||||
|
||||
/**
|
||||
* Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention.
|
||||
* @member {Boolean} submit_as_paused
|
||||
* @default false
|
||||
*/
|
||||
Job.prototype['submit_as_paused'] = false;
|
||||
|
||||
/**
|
||||
* UUID of the Job
|
||||
* @member {String} id
|
||||
@ -253,6 +263,12 @@ SubmittedJob.prototype['storage'] = undefined;
|
||||
* @member {String} worker_tag
|
||||
*/
|
||||
SubmittedJob.prototype['worker_tag'] = undefined;
|
||||
/**
|
||||
* Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention.
|
||||
* @member {Boolean} submit_as_paused
|
||||
* @default false
|
||||
*/
|
||||
SubmittedJob.prototype['submit_as_paused'] = false;
|
||||
// Implement JobAllOf interface:
|
||||
/**
|
||||
* UUID of the Job
|
||||
|
7
web/app/src/manager-api/model/JobStatus.js
generated
7
web/app/src/manager-api/model/JobStatus.js
generated
@ -54,6 +54,13 @@ export default class JobStatus {
|
||||
"paused" = "paused";
|
||||
|
||||
|
||||
/**
|
||||
* value: "pause-requested"
|
||||
* @const
|
||||
*/
|
||||
"pause-requested" = "pause-requested";
|
||||
|
||||
|
||||
/**
|
||||
* value: "queued"
|
||||
* @const
|
||||
|
10
web/app/src/manager-api/model/SubmittedJob.js
generated
10
web/app/src/manager-api/model/SubmittedJob.js
generated
@ -84,6 +84,9 @@ class SubmittedJob {
|
||||
if (data.hasOwnProperty('worker_tag')) {
|
||||
obj['worker_tag'] = ApiClient.convertToType(data['worker_tag'], 'String');
|
||||
}
|
||||
if (data.hasOwnProperty('submit_as_paused')) {
|
||||
obj['submit_as_paused'] = ApiClient.convertToType(data['submit_as_paused'], 'Boolean');
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
@ -141,6 +144,13 @@ SubmittedJob.prototype['storage'] = undefined;
|
||||
*/
|
||||
SubmittedJob.prototype['worker_tag'] = undefined;
|
||||
|
||||
/**
|
||||
* Whether to submit this job as paused. This is useful for jobs that should not start immediately, but only after manual intervention.
|
||||
* @member {Boolean} submit_as_paused
|
||||
* @default false
|
||||
*/
|
||||
SubmittedJob.prototype['submit_as_paused'] = false;
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -18,6 +18,9 @@ export const useTasks = defineStore('tasks', {
|
||||
activeTaskID: '',
|
||||
}),
|
||||
getters: {
|
||||
canPause() {
|
||||
return this._anyTaskWithStatus(['active', 'queued', 'cancelled']);
|
||||
},
|
||||
canCancel() {
|
||||
return this._anyTaskWithStatus(['queued', 'active', 'soft-failed']);
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user