If I have a custom event listener whose module only defines the GetDeadlineEventListenerWithJobs entry point, it seems that no client applications can load it:
Events plugin 'LumaEvents' could not be loaded from the repository because: An error occurred in function "GetDeadlineEventListener" the event plugin script file "/luma/assets/production/deadline/repo-mel-8/custom/events/LumaEvents/LumaEvents.py": AttributeError : 'module' object has no attribute 'GetDeadlineEventListener' (Deadline.Events.DeadlineEventPluginException)
Event error:
2016-10-27 17:25:38: An error occurred in the "OnSlaveStartingJob" function in events plugin 'LumaEvents': An error occurred in function "OnSlaveStartingJob" the event plugin script file "/luma/assets/production/deadline/repo-mel-8/custom/events/LumaEvents/LumaEvents.py": Object reference not set to an instance of an object (Deadline.Events.DeadlineEventPluginException)
2016-10-27 17:25:38: at Deadline.Events.DeadlineEventPlugin.a (System.String A_0, System.Exception A_1) <0x41815430 + 0x00133> in <filename unknown>:0
2016-10-27 17:25:38: at Deadline.Events.DeadlineEventPlugin.OnSlaveStartingJob (System.String slaveName, Deadline.Jobs.Job job) <0x418291c0 + 0x0010f> in <filename unknown>:0
2016-10-27 17:25:38: at Deadline.Events.DeadlineEventManager.OnSlaveStartingJob (System.String slaveName, Deadline.Jobs.Job job, Deadline.Controllers.DataController dataController) <0x418286e0 + 0x00463> in <filename unknown>:0
2016-10-27 17:25:38: ---------- Inner Stack Trace (System.NullReferenceException) ----------
2016-10-27 17:25:38: at Deadline.Events.DeadlineEventPlugin.OnSlaveStartingJob (System.String slaveName, Deadline.Jobs.Job job) <0x418291c0 + 0x00037> in <filename unknown>:0
I’ve stripped the listener code down to be about as compact as possible, while still showing signs of life:
[code]from Deadline.Events import *
class LumaEventListener(DeadlineEventListener):
def init(self):
self.OnJobStartedCallback += self.jobStarted
self.OnJobFinishedCallback += self.jobFinished
self.OnJobFailedCallback += self.jobFinished
self.OnSlaveStartedCallback += self.slaveStarted
def jobStarted(self, job):
self.LogInfo('-- Job Started Event -- ')
def jobFinished(self, job):
self.LogInfo('-- Job Finished Event -- ')
def slaveStarted(self, slave):
self.LogInfo('-- Slave Started Event --')
def doCleanup(self):
del self.OnJobStartedCallback
del self.OnJobFinishedCallback
del self.OnJobFailedCallback
del self.OnSlaveStartedCallback
def GetDeadlineEventListenerWithJobs(jobs):
return LumaEventListener()
def CleanupDeadlineEventListener(listener):
listener.doCleanup()[/code]
If I define GetDeadlineEventListener and just have it call GetDeadlineEventListenerWithJobs, things seem to work.