mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Merge pull request #2827 from pypeclub/bugfix/deadline_missing_events
Deadline: Added missing events folder
This commit is contained in:
commit
7b1821238d
2 changed files with 228 additions and 0 deletions
|
|
@ -0,0 +1,37 @@
|
|||
[State]
|
||||
Type=Enum
|
||||
Items=Global Enabled;Opt-In;Disabled
|
||||
Category=Options
|
||||
CategoryOrder=0
|
||||
CategoryIndex=0
|
||||
Label=State
|
||||
Default=Global Enabled
|
||||
Description=How this event plug-in should respond to events. If Global, all jobs and slaves will trigger the events for this plugin. If Opt-In, jobs and slaves can choose to trigger the events for this plugin. If Disabled, no events are triggered for this plugin.
|
||||
|
||||
[PythonSearchPaths]
|
||||
Type=MultiLineMultiFolder
|
||||
Label=Additional Python Search Paths
|
||||
Category=Options
|
||||
CategoryOrder=0
|
||||
CategoryIndex=1
|
||||
Default=
|
||||
Description=The list of paths to append to the PYTHONPATH environment variable. This allows the Python job to find custom modules in non-standard locations.
|
||||
|
||||
[LoggingLevel]
|
||||
Type=Enum
|
||||
Label=Logging Level
|
||||
Category=Options
|
||||
CategoryOrder=0
|
||||
CategoryIndex=2
|
||||
Items=DEBUG;INFO;WARNING;ERROR
|
||||
Default=DEBUG
|
||||
Description=Logging level where printing will start.
|
||||
|
||||
[OpenPypeExecutable]
|
||||
Type=multilinemultifilename
|
||||
Label=Path to OpenPype executable
|
||||
Category=Job Plugins
|
||||
CategoryOrder=1
|
||||
CategoryIndex=1
|
||||
Default=
|
||||
Description=
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
import Deadline.Events
|
||||
import Deadline.Scripting
|
||||
|
||||
|
||||
def GetDeadlineEventListener():
|
||||
return OpenPypeEventListener()
|
||||
|
||||
|
||||
def CleanupDeadlineEventListener(eventListener):
|
||||
eventListener.Cleanup()
|
||||
|
||||
|
||||
class OpenPypeEventListener(Deadline.Events.DeadlineEventListener):
|
||||
"""
|
||||
Called on every Deadline plugin event, used for injecting OpenPype
|
||||
environment variables into rendering process.
|
||||
|
||||
Expects that job already contains env vars:
|
||||
AVALON_PROJECT
|
||||
AVALON_ASSET
|
||||
AVALON_TASK
|
||||
AVALON_APP_NAME
|
||||
Without these only global environment would be pulled from OpenPype
|
||||
|
||||
Configure 'Path to OpenPype executable dir' in Deadlines
|
||||
'Tools > Configure Events > openpype '
|
||||
Only directory path is needed.
|
||||
|
||||
"""
|
||||
def __init__(self):
|
||||
self.OnJobSubmittedCallback += self.OnJobSubmitted
|
||||
self.OnJobStartedCallback += self.OnJobStarted
|
||||
self.OnJobFinishedCallback += self.OnJobFinished
|
||||
self.OnJobRequeuedCallback += self.OnJobRequeued
|
||||
self.OnJobFailedCallback += self.OnJobFailed
|
||||
self.OnJobSuspendedCallback += self.OnJobSuspended
|
||||
self.OnJobResumedCallback += self.OnJobResumed
|
||||
self.OnJobPendedCallback += self.OnJobPended
|
||||
self.OnJobReleasedCallback += self.OnJobReleased
|
||||
self.OnJobDeletedCallback += self.OnJobDeleted
|
||||
self.OnJobErrorCallback += self.OnJobError
|
||||
self.OnJobPurgedCallback += self.OnJobPurged
|
||||
|
||||
self.OnHouseCleaningCallback += self.OnHouseCleaning
|
||||
self.OnRepositoryRepairCallback += self.OnRepositoryRepair
|
||||
|
||||
self.OnSlaveStartedCallback += self.OnSlaveStarted
|
||||
self.OnSlaveStoppedCallback += self.OnSlaveStopped
|
||||
self.OnSlaveIdleCallback += self.OnSlaveIdle
|
||||
self.OnSlaveRenderingCallback += self.OnSlaveRendering
|
||||
self.OnSlaveStartingJobCallback += self.OnSlaveStartingJob
|
||||
self.OnSlaveStalledCallback += self.OnSlaveStalled
|
||||
|
||||
self.OnIdleShutdownCallback += self.OnIdleShutdown
|
||||
self.OnMachineStartupCallback += self.OnMachineStartup
|
||||
self.OnThermalShutdownCallback += self.OnThermalShutdown
|
||||
self.OnMachineRestartCallback += self.OnMachineRestart
|
||||
|
||||
def Cleanup(self):
|
||||
del self.OnJobSubmittedCallback
|
||||
del self.OnJobStartedCallback
|
||||
del self.OnJobFinishedCallback
|
||||
del self.OnJobRequeuedCallback
|
||||
del self.OnJobFailedCallback
|
||||
del self.OnJobSuspendedCallback
|
||||
del self.OnJobResumedCallback
|
||||
del self.OnJobPendedCallback
|
||||
del self.OnJobReleasedCallback
|
||||
del self.OnJobDeletedCallback
|
||||
del self.OnJobErrorCallback
|
||||
del self.OnJobPurgedCallback
|
||||
|
||||
del self.OnHouseCleaningCallback
|
||||
del self.OnRepositoryRepairCallback
|
||||
|
||||
del self.OnSlaveStartedCallback
|
||||
del self.OnSlaveStoppedCallback
|
||||
del self.OnSlaveIdleCallback
|
||||
del self.OnSlaveRenderingCallback
|
||||
del self.OnSlaveStartingJobCallback
|
||||
del self.OnSlaveStalledCallback
|
||||
|
||||
del self.OnIdleShutdownCallback
|
||||
del self.OnMachineStartupCallback
|
||||
del self.OnThermalShutdownCallback
|
||||
del self.OnMachineRestartCallback
|
||||
|
||||
def set_openpype_executable_path(self, job):
|
||||
"""
|
||||
Sets configurable OpenPypeExecutable value to job extra infos.
|
||||
|
||||
GlobalJobPreLoad takes this value, pulls env vars for each task
|
||||
from specific worker itself. GlobalJobPreLoad is not easily
|
||||
configured, so we are configuring Event itself.
|
||||
"""
|
||||
openpype_execs = self.GetConfigEntryWithDefault("OpenPypeExecutable",
|
||||
"")
|
||||
job.SetJobExtraInfoKeyValue("openpype_executables", openpype_execs)
|
||||
|
||||
Deadline.Scripting.RepositoryUtils.SaveJob(job)
|
||||
|
||||
def updateFtrackStatus(self, job, statusName, createIfMissing=False):
|
||||
"""Updates version status on ftrack"""
|
||||
pass
|
||||
|
||||
def OnJobSubmitted(self, job):
|
||||
# self.LogInfo("OnJobSubmitted LOGGING")
|
||||
# for 1st time submit
|
||||
self.set_openpype_executable_path(job)
|
||||
self.updateFtrackStatus(job, "Render Queued")
|
||||
|
||||
def OnJobStarted(self, job):
|
||||
# self.LogInfo("OnJobStarted")
|
||||
self.set_openpype_executable_path(job)
|
||||
self.updateFtrackStatus(job, "Rendering")
|
||||
|
||||
def OnJobFinished(self, job):
|
||||
# self.LogInfo("OnJobFinished")
|
||||
self.updateFtrackStatus(job, "Artist Review")
|
||||
|
||||
def OnJobRequeued(self, job):
|
||||
# self.LogInfo("OnJobRequeued LOGGING")
|
||||
self.set_openpype_executable_path(job)
|
||||
|
||||
def OnJobFailed(self, job):
|
||||
pass
|
||||
|
||||
def OnJobSuspended(self, job):
|
||||
# self.LogInfo("OnJobSuspended LOGGING")
|
||||
self.updateFtrackStatus(job, "Render Queued")
|
||||
|
||||
def OnJobResumed(self, job):
|
||||
# self.LogInfo("OnJobResumed LOGGING")
|
||||
self.set_openpype_executable_path(job)
|
||||
self.updateFtrackStatus(job, "Rendering")
|
||||
|
||||
def OnJobPended(self, job):
|
||||
# self.LogInfo("OnJobPended LOGGING")
|
||||
pass
|
||||
|
||||
def OnJobReleased(self, job):
|
||||
pass
|
||||
|
||||
def OnJobDeleted(self, job):
|
||||
pass
|
||||
|
||||
def OnJobError(self, job, task, report):
|
||||
# self.LogInfo("OnJobError LOGGING")
|
||||
pass
|
||||
|
||||
def OnJobPurged(self, job):
|
||||
pass
|
||||
|
||||
def OnHouseCleaning(self):
|
||||
pass
|
||||
|
||||
def OnRepositoryRepair(self, job, *args):
|
||||
pass
|
||||
|
||||
def OnSlaveStarted(self, job):
|
||||
# self.LogInfo("OnSlaveStarted LOGGING")
|
||||
pass
|
||||
|
||||
def OnSlaveStopped(self, job):
|
||||
pass
|
||||
|
||||
def OnSlaveIdle(self, job):
|
||||
pass
|
||||
|
||||
def OnSlaveRendering(self, host_name, job):
|
||||
# self.LogInfo("OnSlaveRendering LOGGING")
|
||||
pass
|
||||
|
||||
def OnSlaveStartingJob(self, host_name, job):
|
||||
# self.LogInfo("OnSlaveStartingJob LOGGING")
|
||||
self.set_openpype_executable_path(job)
|
||||
|
||||
def OnSlaveStalled(self, job):
|
||||
pass
|
||||
|
||||
def OnIdleShutdown(self, job):
|
||||
pass
|
||||
|
||||
def OnMachineStartup(self, job):
|
||||
pass
|
||||
|
||||
def OnThermalShutdown(self, job):
|
||||
pass
|
||||
|
||||
def OnMachineRestart(self, job):
|
||||
pass
|
||||
Loading…
Add table
Add a link
Reference in a new issue