added missing deadline events folder

This commit is contained in:
Jakub Trllo 2022-03-02 11:25:10 +01:00
parent 465a99171c
commit a252865b9e
2 changed files with 228 additions and 0 deletions

View file

@ -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=

View file

@ -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