submit to deadline sends project, metadatafile is with {root} key in value and deadline has mount path in OutputDirectory0

This commit is contained in:
iLLiCiTiT 2020-03-30 12:17:28 +02:00
parent 1f2d1a55dc
commit 9cc0b99338
3 changed files with 41 additions and 16 deletions

View file

@ -4,7 +4,7 @@ import json
import pyblish.api
from avalon import api
from pypeapp import PypeLauncher
from pypeapp import PypeLauncher, Roots
class CollectRenderedFiles(pyblish.api.ContextPlugin):
@ -82,8 +82,23 @@ class CollectRenderedFiles(pyblish.api.ContextPlugin):
"Missing `PYPE_PUBLISH_DATA`")
paths = os.environ["PYPE_PUBLISH_DATA"].split(os.pathsep)
project_name = os.environ.get("AVALON_PROJECT")
if project_name is None:
root = None
self.log.warning(
"Environment `AVLAON_PROJECT` was not found."
"Could not set `root` which may cause issues."
)
else:
self.log.info("Getting root setting for project \"{}\"".format(
project_name
))
root = {"root": Roots(project_name)}
session_set = False
for path in paths:
if root:
path = path.format(**root)
data = self._load_json(path)
if not session_set:
self.log.info("Setting session using data from file")

View file

@ -185,15 +185,26 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin):
batch=job["Props"]["Name"], subset=subset
)
metadata_filename = "{}_metadata.json".format(subset)
output_dir = instance.data["outputDir"]
metadata_path = os.path.join(output_dir, metadata_filename)
metadata_path = os.path.normpath(metadata_path)
mount_root = os.path.normpath(os.environ["PYPE_STUDIO_PROJECTS_MOUNT"])
network_root = os.environ["PYPE_STUDIO_PROJECTS_PATH"]
metadata_path = metadata_path.replace(mount_root, network_root)
metadata_path = os.path.normpath(metadata_path)
# Convert output dir to `{root}/rest/of/path/...` with Anatomy
anatomy_obj = instance.context.data["anatomy"]
root_name = anatomy_obj.templates["work"].get("root_name")
success, rootless_path = (
anatomy_obj.roots.find_root_template_from_path(
output_dir, root_name
)
)
if not success:
# `rootless_path` is not set to `output_dir` if none of roots match
self.log.warning((
"Could not find root path for remapping \"{}\"."
" This may cause issues on farm."
).format(output_dirt))
rootless_path = output_dir
else:
# If root was found then use `mount` root for `output_dir`
anatomy_obj.roots._root_key = "mount"
output_dir = rootless_path.format(**{"root": anatomy_obj.roots})
# Generate the payload for Deadline submission
payload = {
@ -221,8 +232,14 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin):
# Transfer the environment from the original job to this dependent
# job so they use the same environment
metadata_filename = "{}_metadata.json".format(subset)
metadata_path = os.path.join(rootless_path, metadata_filename)
"TODO metadata_path replace root with {root[root_name]}
environment = job["Props"].get("Env", {})
environment["PYPE_METADATA_FILE"] = metadata_path
environment["AVALON_PROJECT"] = pyblish.api.Session["AVALON_PROJECT"]
i = 0
for index, key in enumerate(environment):
if key.upper() in self.enviro_filter:

View file

@ -89,13 +89,6 @@ def __main__():
print("Paths: {}".format(kwargs.paths or [os.getcwd()]))
paths = kwargs.paths or [os.environ.get("PYPE_METADATA_FILE")] or [os.getcwd()] # noqa
for path in paths:
data = _load_json(path)
log.info("Setting session using data from file")
os.environ["AVALON_PROJECT"] = data["session"]["AVALON_PROJECT"]
break
args = [
os.path.join(pype_root, pype_command),
"publish",