From 27773fbbf16fa8c9fa48678f1ec438d5f65f3b8d Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 2 Feb 2023 18:23:51 +0100 Subject: [PATCH 01/10] OP-4822 - added profile to disble check to Settings --- .../defaults/project_settings/deadline.json | 3 +- .../schema_project_deadline.json | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/openpype/settings/defaults/project_settings/deadline.json b/openpype/settings/defaults/project_settings/deadline.json index ceb0b2e39a..11bb1aee2e 100644 --- a/openpype/settings/defaults/project_settings/deadline.json +++ b/openpype/settings/defaults/project_settings/deadline.json @@ -33,7 +33,8 @@ "limit": [], "jobInfo": {}, "pluginInfo": {}, - "scene_patches": [] + "scene_patches": [], + "disable_strict_check_profiles": [] }, "NukeSubmitDeadline": { "enabled": true, diff --git a/openpype/settings/entities/schemas/projects_schema/schema_project_deadline.json b/openpype/settings/entities/schemas/projects_schema/schema_project_deadline.json index 08a505bd47..d38358773a 100644 --- a/openpype/settings/entities/schemas/projects_schema/schema_project_deadline.json +++ b/openpype/settings/entities/schemas/projects_schema/schema_project_deadline.json @@ -195,6 +195,36 @@ ] } + }, + { + "type": "list", + "collapsible": true, + "key": "disable_strict_check_profiles", + "label": "Disable Strict Error Check profiles", + "use_label_wrap": true, + "docstring": "Set profile for disabling 'Strict Error Checking'", + "object_type": { + "type": "dict", + "children": [ + { + "key": "task_types", + "label": "Task types", + "type": "task-types-enum" + }, + { + "key": "task_names", + "label": "Task names", + "type": "list", + "object_type": "text" + }, + { + "key": "subsets", + "label": "Subset names", + "type": "list", + "object_type": "text" + } + ] + } } ] }, From bd77b30c5c3fc3f21d8732d9309ec6c8f5d776f4 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 2 Feb 2023 18:25:24 +0100 Subject: [PATCH 02/10] OP-4822 - added possibility to disable strict checking DL by default has Strict error checking, but some errors are not fatal. This allows to set profile based on Task and Subset values to temporarily disable Strict Error Checks --- .../plugins/publish/submit_maya_deadline.py | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index 070d4eab18..a59738979c 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -35,6 +35,7 @@ from openpype.pipeline import legacy_io from openpype.hosts.maya.api.lib_rendersettings import RenderSettings from openpype.hosts.maya.api.lib import get_attr_in_layer +from openpype.lib.profiles_filtering import filter_profiles from openpype_modules.deadline import abstract_submit_deadline from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo from openpype.tests.lib import is_in_tests @@ -64,6 +65,7 @@ class MayaPluginInfo(object): # Include all lights flag RenderSetupIncludeLights = attr.ib( default="1", validator=_validate_deadline_bool_value) + StrictErrorChecking = attr.ib(default="1") @attr.s @@ -104,6 +106,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): jobInfo = {} pluginInfo = {} group = "none" + disable_strict_check_profiles = [] def get_job_info(self): job_info = DeadlineJobInfo(Plugin="MayaBatch") @@ -219,6 +222,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): "renderSetupIncludeLights", default_rs_include_lights) if rs_include_lights not in {"1", "0", True, False}: rs_include_lights = default_rs_include_lights + strict_checking = self._get_strict_checking(instance) plugin_info = MayaPluginInfo( SceneFile=self.scene_path, Version=cmds.about(version=True), @@ -227,6 +231,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): RenderSetupIncludeLights=rs_include_lights, # noqa ProjectPath=context.data["workspaceDir"], UsingRenderLayers=True, + StrictErrorChecking=strict_checking ) plugin_payload = attr.asdict(plugin_info) @@ -748,6 +753,32 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): for file in exp: yield file + def _get_strict_checking(self, plugin_info, instance): + """Find profile to disable Strict Error Checking + + Args: + instance (dict) + Returns: + (int) - 1 if Strict (DL default), 0 for disabled Strict + """ + strict_checking = 1 + if not self.disable_strict_check_profiles: + return strict_checking + + task_data = instance.data["anatomyData"].get("task", {}) + key_values = { + "task_names": task_data.get("name"), + "task_types": task_data.get("type"), + "subsets": instance.data["subset"] + } + profile = filter_profiles(self.profiles, key_values, + logger=self.log) + + if profile: + strict_checking = 0 + + return strict_checking + def _format_tiles( filename, index, tiles_x, tiles_y, From f29c46f7c1cea1b0a9f3cf5b889394ab8bf03afd Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 2 Feb 2023 18:44:00 +0100 Subject: [PATCH 03/10] OP-4822 - fix arguments --- .../modules/deadline/plugins/publish/submit_maya_deadline.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index a59738979c..a2a80c319b 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -753,7 +753,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): for file in exp: yield file - def _get_strict_checking(self, plugin_info, instance): + def _get_strict_checking(self, instance): """Find profile to disable Strict Error Checking Args: From 8a2cf2e6d93d1d9ed0887a84315e13608e859060 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 2 Feb 2023 18:44:24 +0100 Subject: [PATCH 04/10] OP-4822 - fix wrong variable --- .../modules/deadline/plugins/publish/submit_maya_deadline.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index a2a80c319b..c353e0b109 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -771,7 +771,8 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): "task_types": task_data.get("type"), "subsets": instance.data["subset"] } - profile = filter_profiles(self.profiles, key_values, + profile = filter_profiles(self.disable_strict_check_profiles, + key_values, logger=self.log) if profile: From 5df388912abba15c5a477aa47f06807cce0cf8fb Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Thu, 2 Feb 2023 18:44:43 +0100 Subject: [PATCH 05/10] OP-4822 - added logging --- .../modules/deadline/plugins/publish/submit_maya_deadline.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index c353e0b109..3d1b9bcbf6 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -776,6 +776,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): logger=self.log) if profile: + self.log.debug("Disabling Strict Error Checking") strict_checking = 0 return strict_checking From 3a8c36e0570e5554d0d9ae7afd073fdde43294ff Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 3 Feb 2023 18:28:29 +0100 Subject: [PATCH 06/10] OP-4822 - updated settings After discussion profile is too complicated, removed, replaced with simple boolean --- .../defaults/project_settings/deadline.json | 2 +- .../schema_project_deadline.json | 32 +++---------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/openpype/settings/defaults/project_settings/deadline.json b/openpype/settings/defaults/project_settings/deadline.json index 11bb1aee2e..0a4318a659 100644 --- a/openpype/settings/defaults/project_settings/deadline.json +++ b/openpype/settings/defaults/project_settings/deadline.json @@ -34,7 +34,7 @@ "jobInfo": {}, "pluginInfo": {}, "scene_patches": [], - "disable_strict_check_profiles": [] + "strict_error_checking": true }, "NukeSubmitDeadline": { "enabled": true, diff --git a/openpype/settings/entities/schemas/projects_schema/schema_project_deadline.json b/openpype/settings/entities/schemas/projects_schema/schema_project_deadline.json index d38358773a..03f6489a41 100644 --- a/openpype/settings/entities/schemas/projects_schema/schema_project_deadline.json +++ b/openpype/settings/entities/schemas/projects_schema/schema_project_deadline.json @@ -197,34 +197,10 @@ } }, { - "type": "list", - "collapsible": true, - "key": "disable_strict_check_profiles", - "label": "Disable Strict Error Check profiles", - "use_label_wrap": true, - "docstring": "Set profile for disabling 'Strict Error Checking'", - "object_type": { - "type": "dict", - "children": [ - { - "key": "task_types", - "label": "Task types", - "type": "task-types-enum" - }, - { - "key": "task_names", - "label": "Task names", - "type": "list", - "object_type": "text" - }, - { - "key": "subsets", - "label": "Subset names", - "type": "list", - "object_type": "text" - } - ] - } + "type": "boolean", + "key": "strict_error_checking", + "label": "Strict Error Checking", + "default": true } ] }, From 214ef5104dfe17619c5f04e466d2bb70a9fbd195 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 3 Feb 2023 18:33:40 +0100 Subject: [PATCH 07/10] OP-4822 - changed strict error checking to boolean flag Added boolean flag to render instance to allow artist to change it. --- .../maya/plugins/create/create_render.py | 4 +++ .../plugins/publish/submit_maya_deadline.py | 35 +++---------------- 2 files changed, 8 insertions(+), 31 deletions(-) diff --git a/openpype/hosts/maya/plugins/create/create_render.py b/openpype/hosts/maya/plugins/create/create_render.py index 8375149442..387b7321b9 100644 --- a/openpype/hosts/maya/plugins/create/create_render.py +++ b/openpype/hosts/maya/plugins/create/create_render.py @@ -54,6 +54,7 @@ class CreateRender(plugin.Creator): tileRendering (bool): Instance is set to tile rendering mode. We won't submit actual render, but we'll make publish job to wait for Tile Assembly job done and then publish. + strict_error_checking (bool): Enable/disable error checking on DL See Also: https://pype.club/docs/artist_hosts_maya#creating-basic-render-setup @@ -271,6 +272,9 @@ class CreateRender(plugin.Creator): secondary_pool = pool_setting["secondary_pool"] self.data["secondaryPool"] = self._set_default_pool(pool_names, secondary_pool) + strict_error_checking = maya_submit_dl.get("strict_error_checking", + True) + self.data["strict_error_checking"] = strict_error_checking if muster_enabled: self.log.info(">>> Loading Muster credentials ...") diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index 3d1b9bcbf6..9fef816e1c 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -65,7 +65,7 @@ class MayaPluginInfo(object): # Include all lights flag RenderSetupIncludeLights = attr.ib( default="1", validator=_validate_deadline_bool_value) - StrictErrorChecking = attr.ib(default="1") + StrictErrorChecking = attr.ib(default=True) @attr.s @@ -222,7 +222,8 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): "renderSetupIncludeLights", default_rs_include_lights) if rs_include_lights not in {"1", "0", True, False}: rs_include_lights = default_rs_include_lights - strict_checking = self._get_strict_checking(instance) + strict_error_checking = instance.data.get("strict_error_checking", + True) plugin_info = MayaPluginInfo( SceneFile=self.scene_path, Version=cmds.about(version=True), @@ -231,7 +232,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): RenderSetupIncludeLights=rs_include_lights, # noqa ProjectPath=context.data["workspaceDir"], UsingRenderLayers=True, - StrictErrorChecking=strict_checking + StrictErrorChecking=strict_error_checking ) plugin_payload = attr.asdict(plugin_info) @@ -753,34 +754,6 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): for file in exp: yield file - def _get_strict_checking(self, instance): - """Find profile to disable Strict Error Checking - - Args: - instance (dict) - Returns: - (int) - 1 if Strict (DL default), 0 for disabled Strict - """ - strict_checking = 1 - if not self.disable_strict_check_profiles: - return strict_checking - - task_data = instance.data["anatomyData"].get("task", {}) - key_values = { - "task_names": task_data.get("name"), - "task_types": task_data.get("type"), - "subsets": instance.data["subset"] - } - profile = filter_profiles(self.disable_strict_check_profiles, - key_values, - logger=self.log) - - if profile: - self.log.debug("Disabling Strict Error Checking") - strict_checking = 0 - - return strict_checking - def _format_tiles( filename, index, tiles_x, tiles_y, From 463f770f2d19dcb1bfb184412d1664a8134b7502 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Fri, 3 Feb 2023 18:40:53 +0100 Subject: [PATCH 08/10] OP-4822 - Hound --- .../modules/deadline/plugins/publish/submit_maya_deadline.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index 9fef816e1c..e7c1899513 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -35,7 +35,6 @@ from openpype.pipeline import legacy_io from openpype.hosts.maya.api.lib_rendersettings import RenderSettings from openpype.hosts.maya.api.lib import get_attr_in_layer -from openpype.lib.profiles_filtering import filter_profiles from openpype_modules.deadline import abstract_submit_deadline from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo from openpype.tests.lib import is_in_tests From 21d745cc3cc9ad288a1aa0d7eb6329a5aeea7f9e Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 8 Feb 2023 12:25:29 +0100 Subject: [PATCH 09/10] OP-4822 - remove unwanted variable Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- .../modules/deadline/plugins/publish/submit_maya_deadline.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index e7c1899513..ed37ff1897 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -105,7 +105,6 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): jobInfo = {} pluginInfo = {} group = "none" - disable_strict_check_profiles = [] def get_job_info(self): job_info = DeadlineJobInfo(Plugin="MayaBatch") From 2b78c9404c587e4a3f3f19402e30c4741a07b3db Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 8 Feb 2023 15:01:02 +0100 Subject: [PATCH 10/10] OP-4822 - push property to render instance render instance is created from collected instance explicitly. --- openpype/hosts/maya/plugins/publish/collect_render.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/maya/plugins/publish/collect_render.py b/openpype/hosts/maya/plugins/publish/collect_render.py index b1ad3ca58e..fc297ef612 100644 --- a/openpype/hosts/maya/plugins/publish/collect_render.py +++ b/openpype/hosts/maya/plugins/publish/collect_render.py @@ -318,7 +318,9 @@ class CollectMayaRender(pyblish.api.ContextPlugin): "aovSeparator": layer_render_products.layer_data.aov_separator, # noqa: E501 "renderSetupIncludeLights": render_instance.data.get( "renderSetupIncludeLights" - ) + ), + "strict_error_checking": render_instance.data.get( + "strict_error_checking") } # Collect Deadline url if Deadline module is enabled