mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
submit to deadline sends project, metadatafile is with {root} key in value and deadline has mount path in OutputDirectory0
This commit is contained in:
parent
1f2d1a55dc
commit
9cc0b99338
3 changed files with 41 additions and 16 deletions
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue