Deadline Command

Note

This plugin is deemed a potential security risk because it allows users to submit Deadline command arguments or arbitrary Python scripts to Deadline, which are then executed on the render nodes. Customers are encouraged to read the AWS Thinkbox Deadline Shared Responsibility Model before using this plugin in their environment.

Job Submission

You can submit Deadline command arguments or Python script jobs from the Monitor.

../_images/sub_deadline_command.png

Submission Options

The general Deadline options are explained in the Job Submission documentation. The Deadline Command specific options are:

  • Job Type: Choose a normal job or maintenance job. A normal job will let you specify an arbitrary frame list, but a maintenance job requires a start frame and an end frame.

  • Single Frames Only: If enabled, the plugin will only render one frame at a time even if a single task contains a chunk of frames.

  • Python Script File (Optional): The Python script you want to submit.

  • Arguments (Optional): The arguments to pass to the Deadline Command executable or Python script (if one is declared). Use the Start Frame Tag, End Frame Tag and Quote Tag buttons to add their corresponding tags to the end of the current arguments.

  • Argument Tags: See the Manual Job Submission documentation for more information on these tags.

  • Frame Tag Padding: Determines the amount of frame padding to be added to the Start and End Frame tags.

Plugin Configuration

You can configure the Deadline Command plugin settings from the Monitor. While in power user mode, select Tools -> Configure Plugins and select the Deadline Command plugin from the list on the left. To get a description of each setting, simply hover the mouse cursor over a setting and a tool tip will be displayed.

../_images/cp_deadline_command.png

Configuration

None. The Deadline Command plugin purposefully avoids the need for any plugin configuration to ensure it works on any Deadline render farm.

FAQ

Can I use Deadline Command plugin to validate my new Deadline render farm install?

Yes! A Deadline Command job can be submitted from the Deadline Monitor with no Python script and a simple Deadline Command argument such as GetVersion or GetFarmStatistics which will print StdOut to the task log, which you can view in the Job Report once the task has completed in Deadline Monitor. This technique provides customers with the ability to show “Proof of Life” and validate their Deadline farm installation.

Why use this Deadline Command plugin instead of the Python plugin in Deadline?

  • Python does not need to be installed on the Worker. Deadline Command plugin targets the packaged version of Python already part of the client installer in Deadline.

  • No executable needs to be defined in the Deadline Command plugin configuration as it is resolved at execution time and relative to the location of the already running Deadline Worker executable.

  • Executing an arbitrary Python Script via Deadline Command allows you to import Deadline’s Scripting API for advanced use cases.

Which versions of Python are supported?

The only version of Python supported via Deadline Command is the currently shipping version of Python in Deadline. To confirm Python version, open Deadline Monitor and inspect the “Console” panel (or Monitor log file), which prints the Python version on startup.

How do I handle paths in the arguments with spaces in them?

Use double-quotes around the path. For example, “T:\projects\path with spaces\project.ext”.

Can I execute (Load-Once) a Python script file once on each of my Deadline Workers?

Yes. Select Maintenance as the Job Type.

How can I report % progress of the task?

The Deadline Command plugin ships with a basic StdOut handler to report progress based on StdOut/print statements from the Python script you are executing. You can customize this StdOut handler in the DeadlineCommand.py plugin file to your needs or create additional ones. The default regular expression based handler expects to see StdOut with the syntax:

Progress: 10%
Progress: 22%
Progress: 33%
...

Basic usage from your Python script would be:

progress = 20
print("Progress: {}%".format(progress))