From 01f606fe31b4096c410d473c4ac61bbb3bfcfabc Mon Sep 17 00:00:00 2001 From: Ondrej Samohel Date: Wed, 8 Sep 2021 18:55:25 +0200 Subject: [PATCH] initial wip --- openpype/modules/base.py | 1 - .../default_modules/royal_render/__init__.py | 0 .../plugins/collect_default_rr_path.py | 23 +++++++++ .../plugins/collect_rr_path_from_instance.py | 49 +++++++++++++++++++ .../royal_render/royal_render_module.py | 27 ++++++++++ 5 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 openpype/modules/default_modules/royal_render/__init__.py create mode 100644 openpype/modules/default_modules/royal_render/plugins/collect_default_rr_path.py create mode 100644 openpype/modules/default_modules/royal_render/plugins/collect_rr_path_from_instance.py create mode 100644 openpype/modules/default_modules/royal_render/royal_render_module.py diff --git a/openpype/modules/base.py b/openpype/modules/base.py index 01c3cebe60..2e4b042a4c 100644 --- a/openpype/modules/base.py +++ b/openpype/modules/base.py @@ -417,7 +417,6 @@ class OpenPypeModule: """ pass - @abstractmethod def connect_with_modules(self, enabled_modules): """Connect with other enabled modules.""" pass diff --git a/openpype/modules/default_modules/royal_render/__init__.py b/openpype/modules/default_modules/royal_render/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/openpype/modules/default_modules/royal_render/plugins/collect_default_rr_path.py b/openpype/modules/default_modules/royal_render/plugins/collect_default_rr_path.py new file mode 100644 index 0000000000..cdca03bef0 --- /dev/null +++ b/openpype/modules/default_modules/royal_render/plugins/collect_default_rr_path.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +"""Collect default Deadline server.""" +import pyblish.api + + +class CollectDefaultRRPath(pyblish.api.ContextPlugin): + """Collect default Royal Render path.""" + + order = pyblish.api.CollectorOrder + 0.01 + label = "Default Royal Render Path" + + def process(self, context): + try: + rr_module = context.data.get( + "openPypeModules")["royalrender"] + except AttributeError: + msg = "Cannot get OpenPype Royal Render module." + self.log.error(msg) + raise AssertionError(msg) + + # get default deadline webservice url from deadline module + self.log.debug(rr_module.rr_paths) + context.data["defaultRRPath"] = rr_module.rr_paths["default"] # noqa: E501 diff --git a/openpype/modules/default_modules/royal_render/plugins/collect_rr_path_from_instance.py b/openpype/modules/default_modules/royal_render/plugins/collect_rr_path_from_instance.py new file mode 100644 index 0000000000..939b7c6e00 --- /dev/null +++ b/openpype/modules/default_modules/royal_render/plugins/collect_rr_path_from_instance.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +import pyblish.api + + +class CollectRRPathFromInstance(pyblish.api.InstancePlugin): + """Collect RR Path from instance.""" + + order = pyblish.api.CollectorOrder + label = "Deadline Webservice from the Instance" + families = ["rendering"] + + def process(self, instance): + instance.data["rrPath"] = self._collect_rr_path(instance) + self.log.info( + "Using {} for submission.".format(instance.data["rrPath"])) + + @staticmethod + def _collect_rr_path(render_instance): + # type: (pyblish.api.Instance) -> str + """Get Royal Render path from render instance.""" + rr_settings = ( + render_instance.context.data + ["system_settings"] + ["modules"] + ["royalrender"] + ) + try: + default_servers = rr_settings["rr_paths"] + project_servers = ( + render_instance.context.data + ["project_settings"] + ["royalrender"] + ["rr_paths"] + ) + rr_servers = { + k: default_servers[k] + for k in project_servers + if k in default_servers + } + + except AttributeError: + # Handle situation were we had only one url for deadline. + return render_instance.context.data["defaultRRPath"] + + return rr_servers[ + list(rr_servers.keys())[ + int(render_instance.data.get("rrPaths")) + ] + ] diff --git a/openpype/modules/default_modules/royal_render/royal_render_module.py b/openpype/modules/default_modules/royal_render/royal_render_module.py new file mode 100644 index 0000000000..1c34c4aef2 --- /dev/null +++ b/openpype/modules/default_modules/royal_render/royal_render_module.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +"""Module providing support for Royal Render.""" +import os +from openpype.modules import OpenPypeModule +from openpype_interfaces import IPluginPaths + + +class RoyalRenderModule(OpenPypeModule, IPluginPaths): + """Class providing basic Royal Render implementation logic.""" + name = "royalrender" + + def __init__(self, manager, settings): + self.rr_paths = {} + super(RoyalRenderModule, self).__init__(manager, settings) + + def initialize(self, module_settings): + rr_settings = module_settings[self.name] + self.enabled = rr_settings["enabled"] + self.rr_paths = rr_settings.get("rr_paths") + + @staticmethod + def get_plugin_paths(self): + """Deadline plugin paths.""" + current_dir = os.path.dirname(os.path.abspath(__file__)) + return { + "publish": [os.path.join(current_dir, "plugins", "publish")] + }