0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

deadline api nuke

Posted at
# nuke_ui.py
def _submit_deadline():
    sys.path.append(r'I:\script\bin\td\deadline\submit\python_api')
    
    import submit
    from submit import GetInfoTxtNuke, submit_to_deadline

    pool = _get_pool_str()

    p = nuke.Panel('Submit to Deadline')
    # p.addClipnameSearch('clip path', '/tmp')
    # p.addFilenameSearch('file path', '/tmp')
    # p.addTextFontPulldown('font browser', '/myFonts/')
    # p.addRGBColorChip('some pretty color', '')
    # p.addExpressionInput('enter an expression', '4*25')
    # p.addBooleanCheckBox('yes or no?', True)
    p.addEnumerationPulldown('pool', pool)
    # p.addScriptCommand('tcl or python code', '')
    p.addSingleLineInput('FrameRange', si['tStart'].value()+'-'+si['tEnd'].value())
    # p.addMultilineTextInput('multiple lines of user input text', 'lineA\nlineB')
    # p.addNotepad('write something', 'some very long text could go in here. For now this is just some random default value')
    # p.addPasswordInput('password', 'donttellanyone')
    # p.addButton('push here')
    # p.addButton('or here')
    # p.addButton('or even here')
    p.addSingleLineInput('ChunkSize', "1")
    p.addSingleLineInput('ExcuteNodes', "REN_EXR")
    p.addSingleLineInput('priority', "50")
    p.addSingleLineInput('machineLimit', "40")
    ret = p.show()
    
    if not ret: return

    # iKeyFrame = si['tKeyFrames'].value()
    # frames = iKeyFrame.replace(",", "-")
    # root_name = nuke.Root().name()
    # excuteNodes = "REN_EXR"

    frames = p.value('FrameRange')
    root_name = nuke.Root().name()
    chunkSize = p.value('ChunkSize')
    excuteNodes = p.value('ExcuteNodes')
    pool = p.value('pool')
    priority = p.value('priority')
    machineLimit = p.value('machineLimit')

    job_info_txt, plugin_info_txt = GetInfoTxtNuke(root_name, frames, chunkSize, excuteNodes, pool, priority, machineLimit)
    nuke.message(job_info_txt+""+plugin_info_txt)
    submit_to_deadline(job_info_txt, plugin_info_txt)
# submit.py
import os
import sys
import subprocess
import json

def job_info(info_txt):
    job_info_file = r'{}\job_info.job'.format(os.getenv('TEMP'))
    with open(job_info_file, 'w') as job_file:
        job_file.write(info_txt)
    return job_info_file


def plugin_info(info_txt):
    plugin_info_file = r'{}\plugin_info.job'.format(os.getenv('TEMP'))
    with open(plugin_info_file, 'w') as job_file:
        job_file.write(info_txt)
    return plugin_info_file


def submit_to_deadline(job_info_txt, plugin_info_txt):
    # Change deadline exe root
    deadline_cmd = r"C:\Program Files\Thinkbox\Deadline10\bin\deadlinecommand.exe"
    job_file = job_info(job_info_txt)
    info_file = plugin_info(plugin_info_txt)
    command = '{deadline_cmd} "{job_file}" "{info_file}"'.format(**vars())
    process = subprocess.Popen(command, stdout=subprocess.PIPE)
    lines_iterator = iter(process.stdout.readline, b"")
    #  Lets print the output log to see the Error / Success 
    for line in lines_iterator:
        print(line)
        sys.stdout.flush()

def GetInfoTxtNuke(filePath, frames, chunkSize=1, excuteNodes="REN_EXR", pool="nuke", priority=50, machineLimit=30):
    job_info_txt = f"""
    Frames={frames}
    MachineLimit={machineLimit}
    ChunkSize={chunkSize}
    Group=nuke_13
    Name={os.path.basename(filePath)}
    OverrideTaskExtraInfoNames=False
    Plugin=CommandLine
    Pool={pool}
    Priority={priority}
    ScheduledStartDateTime=15/09/2022 16:08
    SecondaryPool=all
    UserName={os.getlogin()}
    MachineName=OA-MIS-18888
    """

    plugin_info_txt = f"""
    Arguments= -t -x -X {excuteNodes} -- {filePath} <STARTFRAME>,<ENDFRAME>,1
    Executable=I:/script/bin/td/bin/vd2_nuke13.0v2.bat
    Shell=default
    ShellExecute=False
    SingleFramesOnly=False
    StartupDirectory=
    """

    return str(job_info_txt.strip()), str(plugin_info_txt)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?