Introduction
GridMarkets Envoy client is Python library which enables users to upload project files, submit the project for processing and lookup status of submissions by interfacing with the Envoy service.
Concepts
Envoy
Envoy is a tool which end users install on their machines to manage project files uploaded to GridMarkets, watch and download results.
Envoy consists of a user interface portion and an underlying local web service typically running at http://localhost:8090
. Both Envoy user interface and the Envoy client library uses the web service to interact with GridMarkets system.
When the user opens the Envoy user interface, Envoy web service will automatically get started and keeps running in the background.
Project
A project defines a group of one or more jobs which need to be processed together.
Job
Job defines the product type, version and other parameters required for processing the same in GridMarkets. A job will be always be defined with a project.
Product types and plugins
Each job can be defined to run on a specific product version along with a list of compatible product plugins.
The following table shows the list of supported product types and their compatible plugins:
Note: Value in brackets are the short code to be used while defining the product type ina job
Product Type | Compatible Plugins |
---|---|
Blender (blender) | V-Ray (blender_vray) |
Cinema 4D (c4d) | Arnold (arnold), Redshift (redshift), V-Ray (vray) |
Houdini (hou) | Arnold (htoa), Nuke (hton), Redshift (hou_redshift), Renderman (prman), FFMPEG Transcode (htot), V-Ray (hou_vray) |
Maya (hou) | Arnold (mtoa), Redshift (maya_redshift), Renderman (maya_prman), V-Ray (maya_vray) |
Nuke (nuke) | |
V-Ray (vray) |
All the currently active list of product types and compatible plugins including versions can be fetched via the product resolver explained further in a separate section.
Machine types
CPU or a GPU machine type can be chosen to run a job depending on your requirement. Fetching the available machine types based on the product type and plugins are covered in a separate section.
Instances
This defines the requested number of concurrent tasks/frames to run for the job. Note that the instances are constrained by your service plan applied across all your jobs.
Operation Types
Each job has to define a operation type to use. This is also used for fetching machine types to use as well.
The following are the operation types supported:
Operation type | Description |
---|---|
render | Defines a render operation |
sim | Defines a simulation operation |
composite | Defines a composite operation |
transcode | Defines a transcode operation |
Each product type defines the operation types supported.
Installation
The Envoy Python client library is available as a universal Wheel package for Python 2.6, 2.7 and 3.3+. Users can install it using pip
or easy_install
as a global module or to a specific folder path to use and package with product plugins.
Pre-requisites
This has dependency on Python future and requests 2.x libraries. When using pip
or easy_install
, dependencies are automatically installed.
Using in Python 2.6, 2.7 and 3.3+
# Install as python global module
pip install https://gm-envoy-client-docs.netlify.com/downloads/gridmarkets_envoy_client-7.1.10-py2.py3-none-any.whl
# Install to a folder location to package with plugin
pip install https://gm-envoy-client-docs.netlify.com/downloads/gridmarkets_envoy_client-7.1.10-py2.py3-none-any.whl -t <target_dir>
Creating an Envoy client instance
from gridmarkets import EnvoyClient
# create an instance of Envoy client
envoy_client = EnvoyClient()
Authentication
Authenticate user using authenticate
method as below. AuthenticationError
is thrown if authemtication is not successful.
envoy_client.authenticate('[email protected]', 'your_password')
Getting user details including credits balance
# get get user info
user_info = envoy_client.get_user_info()
Response
{
"created": "2019-07-01T15:27:48",
"credits_available": 1000.0,
"credits_consumed": 200.0,
"email_address": "email_address",
"job_throughput_limit": 30,
"max_throughput": 30,
"name": "your_name",
"service_plan": "Standard"
}
Discovering product types and supported product type plugins
Envoy client provides a product resolver which enables the user to do the following:
- Get the list of all product types and their supported plugins.
- Get the list of versions for a specific product type or plugin
- Get compatible combination for one or more product types and/or plugins
Every product and product plugin has an associated code and version to identify a specific product. Few examples below:
hou
represents a Houdini product typehou_redshift
represents a Houdini Redshift pluginhou:17.0.459
represents Houdini version 17.0.459
Above formats can be used to perform searches using the methods available in product resolver.
Get all product types using product resolver
# get product resolver
resolver = envoy_client.get_product_resolver()
# get all products including plugins
products = resolver.get_all_types()
# get all products excluding plugins
products = resolver.get_all_types(False)
Response
{
"hou": {
"versions": ["17.5.173", "17.5.229"],
"is_plugin": false,
"name": "Houdini",
"business_vertical": "media"
},
"hou_redshift": {
"versions": ["2.6.38", "2.6.39"],
"is_plugin": true,
"name": "hou_redshift",
"business_vertical": "media"
}
}
Get the list of versions by product type or plugin type
# get product resolver
resolver = envoy_client.get_product_resolver()
# get products for Houdini product type
qry = 'hou'
products = resolver.get_versions_by_type(qry)
# get products supporting Houdini Redshift plugin
qry = 'hou_redshift'
products = resolver.get_versions_by_type(qry)
Response
["14.0.395", "15.0.459"]
Get compatible combination for a specific product type and version
# get product resolver
resolver = envoy_client.get_product_resolver()
# get compatible combinations for a specific Houdini version
# query type can be a list of tuple, the example below uses a tuple
qry = ('hou:17.5.173',) # or qry = ['hou:17.5.173']
products = resolver.get_compatible_combinations(qry)
Response
{
"hou_redshift": {
"versions": ["2.6.37", "2.6.38", "2.6.39"],
"is_plugin": true,
"name": "Houdini",
"business_vertical": "media"
},
"htoa": {
"versions": ["4.0.1", "4.0.2"],
"is_plugin": true,
"name": "htoa",
"business_vertical": "media"
}
}
Get compatible combination for one or more product type and versions
# get product resolver
resolver = envoy_client.get_product_resolver()
# get compatible combinations for Houdini versions 17.5.173 and 17.5.229
# query type can be a list of tuple, the example below uses a tuple
qry = ('hou:17.5.173', 'hou:17.5.229') # or qry = ['hou:17.5.173', 'hou:17.5.229']
products = resolver.get_compatible_combinations(qry)
Response
{
"hou_redshift": {
"versions": ["2.6.37", "2.6.38", "2.6.39"],
"is_plugin": true,
"name": "hou_redshift",
"business_vertical": "media"
}
}
Note that the queries can be one or more product types or the short code which is a combination of product type and version.
Fetching machine types
# get the CPU machines for say Cinema 4D
# Refer to the product types and plugins section to know about the codes to be used
envoy_client.get_machines('c4d', 'render', category=EnvoyClient.MACHINE_CATEGORY_CPU)
# get the GPU machines for say Cinema 4D and Arnold plugin
envoy_client.get_machines('c4d', 'render', category=EnvoyClient.MACHINE_CATEGORY_CPU, ['arnold'])
# get all machine types for say Cinema 4D
envoy_client.get_machines('c4d', 'render', category=EnvoyClient.MACHINE_CATEGORY_ALL)
Response
[
{
"gpu": false,
"id": "gm4800",
"is_default": true,
"name": "GM4800"
},
{
"gpu": false,
"id": "gm6400",
"is_default": false,
"name": "GM6400"
},
{
"gpu": true,
"id": "1xp100-ob220",
"is_default": true,
"name": "1xP100 : OB220"
},
{
"gpu": true,
"id": "1xv100-ob330",
"is_default": false,
"name": "1xV100 : OB330"
}
]
Uploading and submitting project together
Uploading of files and submission of the project for processing can be done together by following the steps below. This will be the common and most used method to send the project for processing in GridMarkets.
Uploading and submitting can be performed separately as well, this is more useful when you would want to run multiple jobs with different parameters on the same job files. This is covered in a separate section.
Create a instance of EnvoyClient
from gridmarkets import EnvoyClient
from gridmarkets import Project
from gridmarkets import Job
from gridmarkets import WatchFile
# create an instance of Envoy client
envoy_client = EnvoyClient()
# authenticate user
envoy_client.authenticate('[email protected]', 'your_password')
Create a project
# create a project
# project files root folder path
project_folder = "c:\\sample_project"
# name of the project is optional, if not passed inferred from the project root folder
# this is also used the as name for the remote root folder so ensure it is a valid file system folder name
project_name = "sample_project"
# submission name
# this is optional argument, if not passed, a timestamp based submission name is automatically set
submission_name = "submission 1"
# results output folder name
# this is optional argument to override the results folder name which is by default the submission name
results_folder_name = "my_results"
project = Project(project_folder, name=project_name, submission_name=submission_name, output_folder_name=results_folder_name)
Add project files for upload
# add files to project
# only files and folders within the project path can be added, use relative or full path
# any other paths passed will be ignored
# set the local folder, you can use path set in the project or can use a different folder path
local_folder = "c:\\sample_project" # or project.LocalRoot
# set the remote path, this path is either the remote folder or a folder within the remote folder path
remote_folder = project.RemoteRoot
# add 2 files from local folder into remote folder
project.add_files(local_folder, remote_folder, ['sample.c4d', 'another_file.ext'])
# add assets folder
local_folder = "c:\\sample_project\\assets"
# remote folders always use forward slashes as path separator
remote_folder = project.RemoteRoot + '/assets'
# all the files/folders in the local folder is added to the remote folder
project.add_files(local_folder, remote_folder)
Add job
# define the jobs
# create a Cinema4D job
job = Job(
name="test job", # job name
app="c4d", # product/app type
app_version="R19", # product type version
operation="render", # operation
path="sample_project/sample.c4d", # job file to be run, note that the path is relative to the project name which is also the remote folder name
instances=5, # instances - number of instances to to be used for processing the job
machine_type='gm4800', # machine type to be used, check the section which describes fetching available machine types. If passed empty string then GridMarkets will select the default based on your profile settings
plugins=None,
# rest of the params are job specific params
frames="0 0 1",
output_height=600,
output_width=400,
output_format='tiff'
)
# add job to project
project.add_jobs(job)
Add watch files to auto download results
# setting watch files to auto download results
# Note that if watch files are not set, by default, results will get downloaded to the result folder argument `results_folder_name` set for the project.
# results regex pattern to download
# `project.remote_output_folder` provides the remote root folder under which results are available
# below is the regex to look for all folders and files under `project.remote_output_folder`
output_pattern = '{0}/.+'.format(project.remote_output_folder)
# download path
download_path = 'c:\\sample_project\my_results'
# create a watch file
watch_file = WatchFile(output_pattern, download_path)
# add watch files, this will auto download results to the defined `download_path`
project.add_watch_files(watch_file)
Submit project
# submit project
resp = envoy_client.submit_project(project) # returns project name
Uploading just the project files
There are cases where users might want to upload files and then run multiple submission based on the already uploaded files. The code below details the step to upload project files.
# upload files project
response = envoy_client.upload_project_files(project) # returns project name
Submitting a project skipping upload of files
As indicated in the prior section, users can perform multiple submissions with different parameters based on the already uploaded files. Note that all project files should be available in GridMarkets system for running jobs successfully. Follow the steps below to submit a project for processing in GridMarkets system.
# submit project
skip_upload = True
envoy_client.submit_project(project, skip_upload)
Setting up a project with job dependencies
Users can setup inter-job dependencies to enable GridMarkets system to pipeline the job processing accordingly.
job1 = Job(...)
job2 = Job(...)
job3 = Job(...)
# setting up job1 and job2 as dependencies to job3
# GridMarkets system will process job1 and job2 followed by job3.
job3.add_dependencies(job1, job2)
Setting credits budget limit and action trigger for a job
# create a job
job = Job(...)
# set credits limit for job and stop the job if consumed credits reaches 50
job.set_credits_budget(value=50.00,action=Job.CREDITS_BUDGET_ACTION_STOP)
# set credits limit for job and suspend the job if consumed credits reaches 50
# When a job gets suspended, already running tasks are allowed to complete and non-started tasks are stopped
job.set_credits_budget(value=50.00,action=Job.CREDITS_BUDGET_ACTION_SUSPEND)
# set credits limit for job and send an email alert if consumed credits reaches 50
job.set_credits_budget(value=50.00,action=Job.CREDITS_BUDGET_ACTION_ALERT)
Fetching status of the project
# project name
project_name = "sample_project"
resp = envoy_client.get_project_status(project_name)
Response
{
"Code": 200,
"State": "Uploading",
"Message": "File uploads in progress.",
"BytesDone": 0,
"BytesTotal": 2971998,
"Details": {
"/sample project/test.c4d": {
"Name": "/sample project/test.c4d",
"State": "Uploading",
"BytesDone": 0,
"BytesTotal": 2971998,
"Speed": 0
}
},
"Speed": 0
}
{
"Code": 200,
"State": "Submitted",
"Message": "Job submission successful.",
"BytesDone": 2971998,
"BytesTotal": 2971998,
"Details": {
"/sample project/test.c4d": {
"Name": "/sample project/test.c4d",
"State": "Completed",
"BytesDone": 2971998,
"BytesTotal": 2971998,
"Speed": "0.00"
}
},
"Speed": 0
}
Error handling
This section outlines the possible error/exceptions thrown by EnvoyClient
while instantiating and calling the methods on it. It is always a good idea to wrap the instantiation and call to EnvoyClient
functions within a try... except..
block.
AuthenticationError
This exception is thrown by Envoy client when user credentials are incorrect.
InsufficientCreditsError
This exception is thrown when the user credits is not positive while doing a submission using the Envoy client.
InvalidRequestError
If any of the Job data is incorrect then InvalidRequestError
is thrown.
APIError
This is a generic error/exception thrown when EnvoyClient
is not able to communicate with Envoy service or any other errors.
All exceptions in try..catch.. block
from gridmarkets import EnvoyClient
from gridmarkets import Project
from gridmarkets import Job
from gridmarkets import *
try:
# create an instance of Envoy client
envoy_client = EnvoyClient(email="EMAIL_ADDRESS", access_key="ACCESS_KEY")
...
...
...
# any other calls on Envoy client
except AuthenticationError as e:
# handle the exception pertaining to AuthenticationError
except InsufficientCreditsError as e:
# handle the exception pertaining to InsufficientCreditsError
except InvalidRequestError as e:
# handle the exception pertaining to InvalidRequestError
except ApIError as e:
# handle the exception pertaining to APIError
Getting package version
Use the code below to get the current package version
version = envoy_client.version
Validating authentication
For some cases like usage within a plugin, you would want to explicitly validate whether the user credentials are valid. You can use the code below to validate authentication
try:
is_auth_valid = envoy_client.validate_auth()
except AuthenticationError as e:
# handle exception, this means that the user credentials are not valid
Validating user credits
For some cases like usage within a plugin, you would want to explicitly validate user credits. You can use the code below.
try:
is_valid_credits = envoy_client.validate_credits()
except InsufficientCreditsError as e:
# handle exception, this means that the user credits is not positive
Blender job
from gridmarkets import Job
job = Job(
name=JOB_NAME, # job name
app=PRODUCT_TYPE, # product type
app_version=PRODUCT_VERSION, # product version
operation=OPERATION, # operation
path=RENDER_FILE, # job file to be run, note that the path is relative to the project name which is also the remote folder name
instances=5, # requested concurrent machines
machine_type=MACHINE_TYPE, # machine type to use
plugins=PLUGINS, # plugins to be used
frames=FRAMES, # rest are all job specific params
output_prefix=OUTPUT_PREFIX,
output_format=OUTPUT_FORMAT,
engine=RENDER_ENGINE, # optional param
gpu=GPU # optional param
)
Name | Type | Description |
---|---|---|
JOB_NAME |
string |
Job name is the first argument passed to Job instance |
PRODUCT_TYPE |
string |
blender should be passed for Blender |
PRODUCT_VERSION |
string |
Supported Blender version should be passed, fetched via product resolver |
OPERATION |
string |
render is the only supported operation |
RENDER_FILE |
string |
Path to .blend file expressed relative to the remote project folder. If your project name is sample_project then remote root becomes /sample project . Render file path example is /sample project/sample.blend |
INSTANCES |
number |
Requested number of concurrent machine to process job |
MACHINE_TYPE |
string |
Machine type to use, see section fetching machine types |
PLUGINS |
string list |
Plugins to use |
FRAMES |
string |
Defines the frame range in format start [end] [step],[start [end] [step]],... |
OUTPUT_PREFIX |
string |
Defines the render output file prefix |
OUTPUT_FORMAT |
string |
Defines the render output format |
RENDER_ENGINE |
string (optional) |
Defines the render engine to be used |
GPU |
bool (optional) |
Defines if a GPU is required for running the job. |
Cinema4D job
from gridmarkets import Job
job = Job(
name=JOB_NAME, # job name
app=PRODUCT_TYPE, # product type
app_version=PRODUCT_VERSION, # product version
operation=OPERATION, # operation
path=RENDER_FILE, # job file to be run, note that the path is relative to the project name which is also the remote folder name
instances=5, # requested concurrent machines
machine_type=MACHINE_TYPE, # machine type to use
plugins=PLUGINS, # plugins to be used
frames=FRAMES, # rest are all job specific params
output_height=OUTPUT_HEIGHT,
output_width=OUTPUT_WIDTH,
output_prefix=OUTPUT_PREFIX,
output_format=OUTPUT_FORMAT,
output_multipass_prefix=OUTPUT_MULTIPASS_PREFIX # optional param,
gpu=GPU
)
Name | Type | Description |
---|---|---|
JOB_NAME |
string |
Job name is the first argument passed to Job instance |
PRODUCT_TYPE |
string |
c4d should be passed for Cinema4D |
PRODUCT_VERSION |
string |
Supported Cinema4D version should be passed fetched via product resolver |
OPERATION |
string |
render is the only supported operation |
RENDER_FILE |
string |
Path to .c4d file expressed relative to the remote project folder. If your project name is sample_project then remote root becomes /sample project . Render file path example is /sample project/sample.c4d |
INSTANCES |
number |
Requested number of concurrent machine to process job |
MACHINE_TYPE |
string |
Machine type to use, see section fetching machine types |
PLUGINS |
string list |
Plugins to use |
FRAMES |
string |
Defines the frame range in format start [end] [step],[start [end] [step]],... |
OUTPUT_WIDTH |
number |
Defines the render output file width |
OUTPUT_HEIGHT |
number |
Defines the render output file height |
OUTPUT_PREFIX |
string |
Defines the render output file prefix |
OUTPUT_FORMAT |
string |
Defines the render output file format |
OUTPUT_MULTIPASS_PREFIX |
string (optional) |
Defines the multipass render output file prefix |
GPU |
bool (optional) |
Defines if a GPU is required for running the job. |
Houdini Job
Project level parameters
# create a project
project = Project(SRC_PATH, PROJECT_NAME,
project_summary_log_file=PROJECT_SUMMARY_LOG_FILE,
project_param_output=PROJECT_PARAM_OUTPUT,
project_param=PROJECT_PARAM,
project_env=PROJECT_ENV)
Project level parameters are common and shared across all jobs in the project.
Name | Type | Description |
---|---|---|
PROJECT_SUMMARY_LOG_FILE |
string |
Defines the path of the summary log files generated by Houdini plugin |
PROJECT_PARAM_OUTPUT |
list |
Defines the list of project output parameters |
PROJECT_PARAM |
dict |
Defines the project output parameter mappings |
PROJECT_ENV |
dict |
Defines the project level environment variable mappings |
PROJECT_PARAM |
dict |
Defines the project parameters |
Job level parameters
# create Houdini job
job = Job(
name=JOB_NAME, # job name
app=PRODUCT_TYPE, # product type
app_version=PRODUCT_VERSION, # product version
operation=OPERATION, # operation
path=RENDER_FILE, # job file to be run, note that the path is relative to the project name which is also the remote folder name
instances=5, # requested concurrent machines
machine_type=MACHINE_TYPE, # machine type to use
plugins=PLUGINS, # plugins to be used
frames=FRAMES,
take=TAKE,
rop_nodetype=ROP_NODE_TYPE,
rop_nodepath=ROP_NODE_PATH,
output_upload=OUTPUT_UPLOAD,
disk_output_ext=DISK_OUTPUT_EXT,
disk_output_mode=DISK_OUTPUT_MODE,
disk_output_parm=DISK_OUTPUT_PARM,
disk_output_path=DISK_OUTPUT_PATH,
disk_output_renderer=DISK_OUTPUT_RENDERER,
disk_output_path_parm=DISK_OUTPUT_PATH_PARM
gpu=GPU)
Name | Type | Description |
---|---|---|
JOB_NAME |
string |
Job name is the first argument passed to Job instance. |
PRODUCT_TYPE |
string |
hou should be passed for Houdini.; |
PRODUCT_VERSION |
string |
Supported Houdini version should be passed fetched via product resolver. |
OPERATION |
string (optional) |
render , batch are supported operations. Default is render if this parameter is not passed. |
RENDER_FILE |
string |
Path to .hip , .hipnc , .hiplc file expressed relative to the remote project folder. If your project name is sample_project then remote root becomes /sample project . Render file path example is /sample project/sample.hip . |
INSTANCES |
number |
Requested number of concurrent machine to process job |
MACHINE_TYPE |
string |
Machine type to use, see section fetching machine types |
PLUGINS |
string list |
Plugins to use |
FRAMES |
string |
Defines the frame range in format start [end] [step],[start [end] [step]],... |
ROP_NODE_TYPE |
string |
Defines the render operation node type. |
ROP_NODE_PATH |
string |
Defines the render operation node path. |
OUTPUT_UPLOAD |
list |
Defines the output pattern to be uploaded to long time storage (LTS). |
DISK_OUTPUT_EXT |
string (optional) |
Defines the disk output extension. |
DISK_OUTPUT_MODE |
string (optional) |
Defines the disk output mode. |
DISK_OUTPUT_PARM |
string (optional) |
Defines the disk output parameter. |
DISK_OUTPUT_PATH |
string (optional) |
Defines the disk output path. |
DISK_OUTPUT_RENDERER |
string (optional) |
Defines the disk output renderer. |
DISK_OUTPUT_PATH_PARM |
string (optional) |
Defines the disk output path parameter. |
GPU |
bool (optional) |
Defines if a GPU is required for running the job. |
Maya job
# create Maya job
job = Job(
name=JOB_NAME, # job name
app=PRODUCT_TYPE, # product type
app_version=PRODUCT_VERSION, # product version
operation=OPERATION, # operation
path=RENDER_FILE, # job file to be run, note that the path is relative to the project name which is also the remote folder name
instances=5, # requested concurrent machines
machine_type=MACHINE_TYPE, # machine type to use
plugins=PLUGINS, # plugins to be used
## Maya specific parameters
frames=FRAMES,
output_height=OUTPUT_HEIGHT,
output_width=OUTPUT_WIDTH,
output_prefix=OUTPUT_PREFIX,
output_format=OUTPUT_FORMAT,
camera=CAMERA,
renderer=RENDERER,
gpu=GPU
Name | Type | Description |
---|---|---|
JOB_NAME |
string |
Job name is the first argument passed to Job instance |
PRODUCT_TYPE |
string |
maya should be passed for V-Ray |
PRODUCT_VERSION |
string |
Supported V-Ray version should be passed fetched via product resolver |
OPERATION |
string |
render is the only supported operation |
RENDER_FILE |
string |
Path to .ma or .mb file expressed relative to the remote project folder. If your project name is sample_project then remote root becomes /sample project . Render file path example is /sample project/sample.vrscene |
INSTANCES |
number |
Requested number of concurrent machine to process job |
MACHINE_TYPE |
string |
Machine type to use, see section fetching machine types |
PLUGINS |
string list |
Plugins to use |
FRAMES |
string |
Defines the frame range in format start [end] [step],[start [end] [step]],... |
OUTPUT_WIDTH |
number |
Defines the render output width |
OUTPUT_HEIGHT |
number |
Defines the render output height |
OUTPUT_PREFIX |
string |
Defines the render output file prefix |
OUTPUT_FORMAT |
string |
Defines the render output format |
GPU |
bool (optional) |
Defines if a GPU is required for running the job. |
Nuke job
# create Nuke job
job = Job(
name=JOB_NAME, # job name
app=PRODUCT_TYPE, # product type
app_version=PRODUCT_VERSION, # product version
operation=OPERATION, # operation
path=RENDER_FILE, # job file to be run, note that the path is relative to the project name which is also the remote folder name
instances=5, # requested concurrent machines
machine_type=MACHINE_TYPE, # machine type to use
plugins=PLUGINS, # plugins to be used
frames=FRAMES,
gpu=GPU # optional param
Name | Type | Description |
---|---|---|
JOB_NAME |
string |
Job name is the first argument passed to Job instance. |
PRODUCT_TYPE |
string |
nuke should be passed for Nuke.; |
PRODUCT_VERSION |
string |
Supported Nuke version should be passed fetched via product resolver. |
OPERATION |
string (optional) |
render is the only supported operations. Default is render if this parameter is not passed. |
RENDER_FILE |
string |
Path to .nk file expressed relative to the remote project folder. If your project name is sample_project then remote root becomes /sample project . Render file path example is /sample project/sample.nk . |
INSTANCES |
number |
Requested number of concurrent machine to process job |
MACHINE_TYPE |
string |
Machine type to use, see section fetching machine types |
PLUGINS |
string list |
Plugins to use |
FRAMES |
string |
Defines the frame range in format start [end] [step],[start [end] [step]],... |
GPU |
bool (optional) |
Defines if a GPU is required for running the job. |
V-Ray job
from gridmarkets import Job
job = Job(
name=JOB_NAME, # job name
app=PRODUCT_TYPE, # product type
app_version=PRODUCT_VERSION, # product version
operation=OPERATION, # operation
path=RENDER_FILE, # job file to be run, note that the path is relative to the project name which is also the remote folder name
instances=5, # requested concurrent machines
machine_type=MACHINE_TYPE, # machine type to use
plugins=PLUGINS, # plugins to be used
frames=FRAMES, # rest are all job specific params
output_height=OUTPUT_HEIGHT,
output_width=OUTPUT_WIDTH,
output_prefix=OUTPUT_PREFIX,
output_format=OUTPUT_FORMAT,
rt_engine=RT_ENGINE, # optional param
sampling_type=SAMPLING_TYPE # optional param
remap_file=REMAP_FILE # optional param
)
Name | Type | Description |
---|---|---|
JOB_NAME |
string |
Job name is the first argument passed to Job instance |
PRODUCT_TYPE |
string |
vray should be passed for V-Ray |
PRODUCT_VERSION |
string |
Supported V-Ray version should be passed fetched via product resolver |
OPERATION |
string |
render is the only supported operation |
RENDER_FILE |
string |
Path to .vrscene file expressed relative to the remote project folder. If your project name is sample_project then remote root becomes /sample project . Render file path example is /sample project/sample.vrscene |
INSTANCES |
number |
Requested number of concurrent machine to process job |
MACHINE_TYPE |
string |
Machine type to use, see section fetching machine types |
PLUGINS |
string list |
Plugins to use |
FRAMES |
string |
Defines the frame range in format start [end] [step],[start [end] [step]],... |
OUTPUT_WIDTH |
number |
Defines the render output width |
OUTPUT_HEIGHT |
number |
Defines the render output height |
OUTPUT_PREFIX |
string |
Defines the render output file prefix |
OUTPUT_FORMAT |
string |
Defines the render output format |
RT_ENGINE |
number |
Defines the RT engine, supported values are regular render (0), CPU RT (1), GPU RT on OpenCL (3), GPU RT on CUDA (5) |
SAMPLING_TYPE |
number |
Defines the sampling type, progressive or bucket |
REMAP_FILE |
number |
XML file path which maps absolute paths to server folder resolved paths |