There is a bug with the Houdini submitter when submitting a job from a fetch node that references a USD Render ROP which might have a LOP Fetch connected to it. Trying to submit the job gives the following error:
File "//10.0.1.98/DeadlineRepository10.3.0.9/submission/Houdini/Main\SubmitDeadlineRop.py", line 164, in _recursive_PrepareNodesForSubmission
fetchRop = self._getFetchedNode(curNode)
File "//10.0.1.98/DeadlineRepository10.3.0.9/submission/Houdini/Main\SubmitDeadlineRop.py", line 260, in _getFetchedNode
fetchedPath = curNode.parm("source").eval()
AttributeError: 'NoneType' object has no attribute 'eval'
It appears that the submitter is checking for a fetch node with its NodeType.name() which for both the ROP Fetch and LOP Fetch is “fetch”
And the function that it is failing at is attempting to evaluate the “source” parameter in the LOP fetch and failing because a LOP Fetch does not have a “source” param.
#Line 256 of SubmitDeadlineRop.py
@staticmethod
def _getFetchedNode(curNode):
# In addition to the normal inputs fetch nodes point to an additional node which we can treat like other input nodes
fetchedPath = curNode.parm("source").eval() # <------ .parm("source") returns None on a LOP fetch
fetchedRop = curNode.node(fetchedPath)
return fetchedRop
In my case I fixed it by encasing the .parm() method within a try block and returning None upon an exception:
@staticmethod
def _getFetchedNode(curNode):
# In addition to the normal inputs fetch nodes point to an additional node which we can treat like other input nodes
try:
fetchedPath = curNode.parm("source").eval()
except:
return None
fetchedRop = curNode.node(fetchedPath)
return fetchedRop