From bcbf25ba43869c53dc84242ac3c4f95226e1c322 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 8 Jul 2024 18:50:22 +0200 Subject: [PATCH 01/18] modified readme --- README.md | 52 ++-------------------------------------------------- 1 file changed, 2 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 1d7c75260a..035bca2891 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,2 @@ -# Addon template -This is a boilerplate git repository for creating new ayon addons. - -## Folder structure -All addons must have server code which is located in `server` subfolder. Server side addon definition is entrypoint for each addon. Can define settings, frontend, custom endpoints, etc. Root by default contains `create_package.py` which is a helper script that prepares package structure for server. The script may be modified or expanded by needs of addon (e.g. when frontend needs to be build first). File with `version.py` is kept at the root and is copied to server and client code with script -> The reason is to make sure both parts contain same version. - -### Server content -Default base of server addon is `__init__.py` file in root of repository which define addon for server. Most of addons have settings that's why `settings.py` is by default in the structure. Settings can be changed to folder/module when more than one file is needed. - -### Server frontend -Addons may have their frontend. By default, server looks into `/frontend/dist` for `index.html` and addon have to have specified scopes where the frontend should be showed (check documentation of `frontend_scopes` on server addon implementation for more information). - -### Private server files -Root of addon may contain subfolder `private` where can be added files that are accessible via ayon server. Url schema is `{server url}/addons/{addon name}/{addon_version}/private/*`. By default it is place where client zip file is created (during package creation). The endpoint requires authorized user. - -### Public server files -Public files works the same as private files but does not require authorized user. Subfolder name is `public`. Url schema is `{server url}/addons/{addon name}/{addon_version}/public/*`. Endpoint is helpful for images/icons or other static content. - -### Client content -Addons that have code for desktop client application should create subfolder `client` where a client content is located. It is expected the directory has only one file or folder in it which is named the way how should be imported on a client side (e.g. `ayon_core`). - - -### Example strucutre -``` -├─ server -│ ├─ __init__.py -│ └─ settings.py -│ -├─ frontend -│ └─ dist -│ └─ index.html -│ -├─ public -│ └─ my_icon.png -│ -├─ private -│ └─ kittens.png -│ -├─ client -│ ├─ ayon_core -│ │ ├─ pipeline -│ │ ├─ lib -│ │ └─ ... -│ └─ pyproject.toml -│ -├─ create_package.py -├─ LICENSE -├─ package.py -└─ README.md -``` +# Deadline addon +Deadline integration for AYON. From c386aeb2e83f8e484c19d373d57e6ff561ff14b7 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 9 Jul 2024 00:10:19 +0200 Subject: [PATCH 02/18] Fix #4: Register host-specific Deadline plugins only on install of the host --- client/ayon_deadline/addon.py | 9 +++++++++ .../{ => aftereffects}/submit_aftereffects_deadline.py | 0 .../publish/{ => blender}/submit_blender_deadline.py | 0 .../publish/{ => celaction}/submit_celaction_deadline.py | 0 .../publish/{ => fusion}/submit_fusion_deadline.py | 0 .../publish/{ => harmony}/submit_harmony_deadline.py | 0 .../{ => houdini}/submit_houdini_cache_deadline.py | 0 .../{ => houdini}/submit_houdini_render_deadline.py | 0 .../plugins/publish/{ => max}/submit_max_deadline.py | 0 .../plugins/publish/{ => maya}/submit_maya_deadline.py | 0 .../plugins/publish/{ => nuke}/submit_nuke_deadline.py | 0 11 files changed, 9 insertions(+) rename client/ayon_deadline/plugins/publish/{ => aftereffects}/submit_aftereffects_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => blender}/submit_blender_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => celaction}/submit_celaction_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => fusion}/submit_fusion_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => harmony}/submit_harmony_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => houdini}/submit_houdini_cache_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => houdini}/submit_houdini_render_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => max}/submit_max_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => maya}/submit_maya_deadline.py (100%) rename client/ayon_deadline/plugins/publish/{ => nuke}/submit_nuke_deadline.py (100%) diff --git a/client/ayon_deadline/addon.py b/client/ayon_deadline/addon.py index 87fc2ad665..c3e1728ed6 100644 --- a/client/ayon_deadline/addon.py +++ b/client/ayon_deadline/addon.py @@ -7,6 +7,8 @@ from ayon_core.lib import Logger from ayon_core.addon import AYONAddon, IPluginPaths +import pyblish.api + from .version import __version__ @@ -42,6 +44,13 @@ def get_plugin_paths(self): "publish": [os.path.join(current_dir, "plugins", "publish")] } + def on_host_install(self, host, host_name, project_name): + print(f"Registering deadline publish plug-ins for host {host_name}..") + # Register host-specific publish plugins + current_dir = os.path.dirname(os.path.abspath(__file__)) + path = os.path.join(current_dir, "plugins", "publish", host_name) + pyblish.api.register_plugin_path(path) + @staticmethod def get_deadline_pools(webservice, auth=None, log=None): """Get pools from Deadline. diff --git a/client/ayon_deadline/plugins/publish/submit_aftereffects_deadline.py b/client/ayon_deadline/plugins/publish/aftereffects/submit_aftereffects_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_aftereffects_deadline.py rename to client/ayon_deadline/plugins/publish/aftereffects/submit_aftereffects_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_blender_deadline.py b/client/ayon_deadline/plugins/publish/blender/submit_blender_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_blender_deadline.py rename to client/ayon_deadline/plugins/publish/blender/submit_blender_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_celaction_deadline.py b/client/ayon_deadline/plugins/publish/celaction/submit_celaction_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_celaction_deadline.py rename to client/ayon_deadline/plugins/publish/celaction/submit_celaction_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_fusion_deadline.py b/client/ayon_deadline/plugins/publish/fusion/submit_fusion_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_fusion_deadline.py rename to client/ayon_deadline/plugins/publish/fusion/submit_fusion_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_harmony_deadline.py b/client/ayon_deadline/plugins/publish/harmony/submit_harmony_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_harmony_deadline.py rename to client/ayon_deadline/plugins/publish/harmony/submit_harmony_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_houdini_cache_deadline.py b/client/ayon_deadline/plugins/publish/houdini/submit_houdini_cache_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_houdini_cache_deadline.py rename to client/ayon_deadline/plugins/publish/houdini/submit_houdini_cache_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_houdini_render_deadline.py b/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_houdini_render_deadline.py rename to client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_max_deadline.py b/client/ayon_deadline/plugins/publish/max/submit_max_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_max_deadline.py rename to client/ayon_deadline/plugins/publish/max/submit_max_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_maya_deadline.py b/client/ayon_deadline/plugins/publish/maya/submit_maya_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_maya_deadline.py rename to client/ayon_deadline/plugins/publish/maya/submit_maya_deadline.py diff --git a/client/ayon_deadline/plugins/publish/submit_nuke_deadline.py b/client/ayon_deadline/plugins/publish/nuke/submit_nuke_deadline.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_nuke_deadline.py rename to client/ayon_deadline/plugins/publish/nuke/submit_nuke_deadline.py From 56050cdd20552d34fc3bd7f75338773920889cec Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Tue, 9 Jul 2024 00:20:33 +0200 Subject: [PATCH 03/18] Fix missing `settings_category = "deadline"` attribute for plug-ins that do appear in settings --- .../plugins/publish/submit_aftereffects_deadline.py | 1 + .../plugins/publish/validate_expected_and_rendered_files.py | 1 + 2 files changed, 2 insertions(+) diff --git a/client/ayon_deadline/plugins/publish/submit_aftereffects_deadline.py b/client/ayon_deadline/plugins/publish/submit_aftereffects_deadline.py index 45d907cbba..1cbffa787b 100644 --- a/client/ayon_deadline/plugins/publish/submit_aftereffects_deadline.py +++ b/client/ayon_deadline/plugins/publish/submit_aftereffects_deadline.py @@ -37,6 +37,7 @@ class AfterEffectsSubmitDeadline( families = ["render.farm"] # cannot be "render' as that is integrated use_published = True targets = ["local"] + settings_category = "deadline" priority = 50 chunk_size = 1000000 diff --git a/client/ayon_deadline/plugins/publish/validate_expected_and_rendered_files.py b/client/ayon_deadline/plugins/publish/validate_expected_and_rendered_files.py index 3fd13cfa10..4a8d3b3b34 100644 --- a/client/ayon_deadline/plugins/publish/validate_expected_and_rendered_files.py +++ b/client/ayon_deadline/plugins/publish/validate_expected_and_rendered_files.py @@ -14,6 +14,7 @@ class ValidateExpectedFiles(pyblish.api.InstancePlugin): order = pyblish.api.ValidatorOrder families = ["render"] targets = ["deadline"] + settings_category = "deadline" # check if actual frame range on render job wasn't different # case when artists wants to render only subset of frames From 9de57af3f7f1ef4a2ad5a179c4ea7e7af7df7309 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 9 Jul 2024 12:44:21 +0200 Subject: [PATCH 04/18] Pass staging as settings variant If -use-staging is used in published job, this will propagate it to the AYON process. Must use command line argument, environment variable won't get picked up. --- .../repository/custom/plugins/GlobalJobPreLoad.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py b/client/ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py index dbd1798608..247b3ac349 100644 --- a/client/ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py +++ b/client/ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py @@ -13,7 +13,7 @@ FileUtils, DirectoryUtils, ) -__version__ = "1.1.1" +__version__ = "1.1.2" VERSION_REGEX = re.compile( r"(?P0|[1-9]\d*)" r"\.(?P0|[1-9]\d*)" @@ -496,6 +496,12 @@ def inject_ayon_environment(deadlinePlugin): "extractenvironments", export_url ] + + # staging requires passing argument + settings_variant = job.GetJobEnvironmentKeyValue("AYON_DEFAULT_SETTINGS_VARIANT") # noqa + if settings_variant == "staging": + args.append("--use-staging") + # Backwards compatibility for older versions legacy_args = [ "--headless", From 8a7f3b0dcca346c781331d7a350d957f4a93e559 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Tue, 9 Jul 2024 17:29:12 +0200 Subject: [PATCH 05/18] Added comment when refactor Could be refactored after launcher will fix usage of env var. Release cycle for launcher is quite long, though. --- .../ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py | 1 + 1 file changed, 1 insertion(+) diff --git a/client/ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py b/client/ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py index 247b3ac349..894049fb2a 100644 --- a/client/ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py +++ b/client/ayon_deadline/repository/custom/plugins/GlobalJobPreLoad.py @@ -498,6 +498,7 @@ def inject_ayon_environment(deadlinePlugin): ] # staging requires passing argument + # TODO could be switched to env var after https://github.com/ynput/ayon-launcher/issues/123 settings_variant = job.GetJobEnvironmentKeyValue("AYON_DEFAULT_SETTINGS_VARIANT") # noqa if settings_variant == "staging": args.append("--use-staging") From 394537c3d2fbd1e9500de7a6c619f15c4fc68c93 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 10 Jul 2024 13:18:50 +0200 Subject: [PATCH 06/18] Added passing settings variant to Houdini render jobs --- .../plugins/publish/submit_houdini_cache_deadline.py | 3 +++ .../plugins/publish/submit_houdini_render_deadline.py | 3 +++ 2 files changed, 6 insertions(+) diff --git a/client/ayon_deadline/plugins/publish/submit_houdini_cache_deadline.py b/client/ayon_deadline/plugins/publish/submit_houdini_cache_deadline.py index ac9ad570c3..f98f7ea0e4 100644 --- a/client/ayon_deadline/plugins/publish/submit_houdini_cache_deadline.py +++ b/client/ayon_deadline/plugins/publish/submit_houdini_cache_deadline.py @@ -101,12 +101,15 @@ def get_job_info(self): "FTRACK_API_USER", "FTRACK_SERVER", "OPENPYPE_SG_USER", + "AYON_BUNDLE_NAME", + "AYON_DEFAULT_SETTINGS_VARIANT", "AYON_PROJECT_NAME", "AYON_FOLDER_PATH", "AYON_TASK_NAME", "AYON_WORKDIR", "AYON_APP_NAME", "AYON_LOG_NO_COLORS", + "AYON_IN_TESTS" ] environment = { diff --git a/client/ayon_deadline/plugins/publish/submit_houdini_render_deadline.py b/client/ayon_deadline/plugins/publish/submit_houdini_render_deadline.py index 7956108e77..1b76ee2e5e 100644 --- a/client/ayon_deadline/plugins/publish/submit_houdini_render_deadline.py +++ b/client/ayon_deadline/plugins/publish/submit_houdini_render_deadline.py @@ -248,12 +248,15 @@ def get_job_info(self, dependency_job_ids=None): "FTRACK_API_USER", "FTRACK_SERVER", "OPENPYPE_SG_USER", + "AYON_BUNDLE_NAME", + "AYON_DEFAULT_SETTINGS_VARIANT", "AYON_PROJECT_NAME", "AYON_FOLDER_PATH", "AYON_TASK_NAME", "AYON_WORKDIR", "AYON_APP_NAME", "AYON_LOG_NO_COLORS", + "AYON_IN_TESTS" ] environment = { From 39cd8f6adc5d8e20ec73b99406ea0b31f40b383d Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Fri, 12 Jul 2024 11:17:28 +0300 Subject: [PATCH 07/18] use get_publish_plugin_paths to add host specific dirs --- client/ayon_deadline/addon.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/client/ayon_deadline/addon.py b/client/ayon_deadline/addon.py index c3e1728ed6..2b5a4a7fb4 100644 --- a/client/ayon_deadline/addon.py +++ b/client/ayon_deadline/addon.py @@ -6,12 +6,14 @@ from ayon_core.lib import Logger from ayon_core.addon import AYONAddon, IPluginPaths - -import pyblish.api +from ayon_core.pipeline.context_tools import get_current_host_name from .version import __version__ +DEADLINE_ADDON_DIR = os.path.dirname(os.path.abspath(__file__)) + + class DeadlineWebserviceError(Exception): """ Exception to throw when connection to Deadline server fails. @@ -39,17 +41,16 @@ def initialize(self, studio_settings): 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")] + "publish": self.get_publish_plugin_paths(), } - - def on_host_install(self, host, host_name, project_name): - print(f"Registering deadline publish plug-ins for host {host_name}..") - # Register host-specific publish plugins - current_dir = os.path.dirname(os.path.abspath(__file__)) - path = os.path.join(current_dir, "plugins", "publish", host_name) - pyblish.api.register_plugin_path(path) + + def get_publish_plugin_paths(self, host_name=None): + paths = [os.path.join(DEADLINE_ADDON_DIR, "plugins", "publish", "default")] + if host_name: + paths.append(os.path.join(DEADLINE_ADDON_DIR, "plugins", "publish", host_name)) + + return paths @staticmethod def get_deadline_pools(webservice, auth=None, log=None): From 22fc7e6e041b8082201c49f3dc319714ab39051a Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Fri, 12 Jul 2024 11:17:56 +0300 Subject: [PATCH 08/18] move deadline default plugins to a default folder --- .../{ => default}/collect_deadline_server_from_instance.py | 0 .../publish/{ => default}/collect_default_deadline_server.py | 0 .../ayon_deadline/plugins/publish/{ => default}/collect_pools.py | 0 .../plugins/publish/{ => default}/collect_user_credentials.py | 0 .../publish/{ => default}/help/validate_deadline_connection.xml | 0 .../publish/{ => default}/help/validate_deadline_pools.xml | 0 .../plugins/publish/{ => default}/submit_publish_cache_job.py | 0 .../plugins/publish/{ => default}/submit_publish_job.py | 0 .../plugins/publish/{ => default}/validate_deadline_connection.py | 0 .../plugins/publish/{ => default}/validate_deadline_pools.py | 0 .../publish/{ => default}/validate_expected_and_rendered_files.py | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename client/ayon_deadline/plugins/publish/{ => default}/collect_deadline_server_from_instance.py (100%) rename client/ayon_deadline/plugins/publish/{ => default}/collect_default_deadline_server.py (100%) rename client/ayon_deadline/plugins/publish/{ => default}/collect_pools.py (100%) rename client/ayon_deadline/plugins/publish/{ => default}/collect_user_credentials.py (100%) rename client/ayon_deadline/plugins/publish/{ => default}/help/validate_deadline_connection.xml (100%) rename client/ayon_deadline/plugins/publish/{ => default}/help/validate_deadline_pools.xml (100%) rename client/ayon_deadline/plugins/publish/{ => default}/submit_publish_cache_job.py (100%) rename client/ayon_deadline/plugins/publish/{ => default}/submit_publish_job.py (100%) rename client/ayon_deadline/plugins/publish/{ => default}/validate_deadline_connection.py (100%) rename client/ayon_deadline/plugins/publish/{ => default}/validate_deadline_pools.py (100%) rename client/ayon_deadline/plugins/publish/{ => default}/validate_expected_and_rendered_files.py (100%) diff --git a/client/ayon_deadline/plugins/publish/collect_deadline_server_from_instance.py b/client/ayon_deadline/plugins/publish/default/collect_deadline_server_from_instance.py similarity index 100% rename from client/ayon_deadline/plugins/publish/collect_deadline_server_from_instance.py rename to client/ayon_deadline/plugins/publish/default/collect_deadline_server_from_instance.py diff --git a/client/ayon_deadline/plugins/publish/collect_default_deadline_server.py b/client/ayon_deadline/plugins/publish/default/collect_default_deadline_server.py similarity index 100% rename from client/ayon_deadline/plugins/publish/collect_default_deadline_server.py rename to client/ayon_deadline/plugins/publish/default/collect_default_deadline_server.py diff --git a/client/ayon_deadline/plugins/publish/collect_pools.py b/client/ayon_deadline/plugins/publish/default/collect_pools.py similarity index 100% rename from client/ayon_deadline/plugins/publish/collect_pools.py rename to client/ayon_deadline/plugins/publish/default/collect_pools.py diff --git a/client/ayon_deadline/plugins/publish/collect_user_credentials.py b/client/ayon_deadline/plugins/publish/default/collect_user_credentials.py similarity index 100% rename from client/ayon_deadline/plugins/publish/collect_user_credentials.py rename to client/ayon_deadline/plugins/publish/default/collect_user_credentials.py diff --git a/client/ayon_deadline/plugins/publish/help/validate_deadline_connection.xml b/client/ayon_deadline/plugins/publish/default/help/validate_deadline_connection.xml similarity index 100% rename from client/ayon_deadline/plugins/publish/help/validate_deadline_connection.xml rename to client/ayon_deadline/plugins/publish/default/help/validate_deadline_connection.xml diff --git a/client/ayon_deadline/plugins/publish/help/validate_deadline_pools.xml b/client/ayon_deadline/plugins/publish/default/help/validate_deadline_pools.xml similarity index 100% rename from client/ayon_deadline/plugins/publish/help/validate_deadline_pools.xml rename to client/ayon_deadline/plugins/publish/default/help/validate_deadline_pools.xml diff --git a/client/ayon_deadline/plugins/publish/submit_publish_cache_job.py b/client/ayon_deadline/plugins/publish/default/submit_publish_cache_job.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_publish_cache_job.py rename to client/ayon_deadline/plugins/publish/default/submit_publish_cache_job.py diff --git a/client/ayon_deadline/plugins/publish/submit_publish_job.py b/client/ayon_deadline/plugins/publish/default/submit_publish_job.py similarity index 100% rename from client/ayon_deadline/plugins/publish/submit_publish_job.py rename to client/ayon_deadline/plugins/publish/default/submit_publish_job.py diff --git a/client/ayon_deadline/plugins/publish/validate_deadline_connection.py b/client/ayon_deadline/plugins/publish/default/validate_deadline_connection.py similarity index 100% rename from client/ayon_deadline/plugins/publish/validate_deadline_connection.py rename to client/ayon_deadline/plugins/publish/default/validate_deadline_connection.py diff --git a/client/ayon_deadline/plugins/publish/validate_deadline_pools.py b/client/ayon_deadline/plugins/publish/default/validate_deadline_pools.py similarity index 100% rename from client/ayon_deadline/plugins/publish/validate_deadline_pools.py rename to client/ayon_deadline/plugins/publish/default/validate_deadline_pools.py diff --git a/client/ayon_deadline/plugins/publish/validate_expected_and_rendered_files.py b/client/ayon_deadline/plugins/publish/default/validate_expected_and_rendered_files.py similarity index 100% rename from client/ayon_deadline/plugins/publish/validate_expected_and_rendered_files.py rename to client/ayon_deadline/plugins/publish/default/validate_expected_and_rendered_files.py From 936c8e7156258ba5cd5e11bf534e17b20e84d498 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Fri, 12 Jul 2024 10:23:55 +0200 Subject: [PATCH 09/18] fix copy in create package --- create_package.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/create_package.py b/create_package.py index 7f9a1909f9..fad0c44e1d 100644 --- a/create_package.py +++ b/create_package.py @@ -132,10 +132,7 @@ def safe_copy_file(src_path: str, dst_path: str): return dst_dir: str = os.path.dirname(dst_path) - try: - os.makedirs(dst_dir) - except Exception: - pass + os.makedirs(dst_dir, exist_ok=True) shutil.copy2(src_path, dst_path) @@ -355,6 +352,8 @@ def copy_addon_package( # Copy server content for src_file, dst_subpath in files_mapping: dst_path: str = os.path.join(addon_output_dir, dst_subpath) + dst_dir: str = os.path.dirname(dst_path) + os.makedirs(dst_dir, exist_ok=True) if isinstance(src_file, io.BytesIO): with open(dst_path, "wb") as stream: stream.write(src_file.getvalue()) From 8511491bff1be04e85ae9b9a8dccda38df19511b Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 12 Jul 2024 10:30:27 +0200 Subject: [PATCH 10/18] Add comment as to why method is still around --- client/ayon_deadline/addon.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/ayon_deadline/addon.py b/client/ayon_deadline/addon.py index 2b5a4a7fb4..7f1677cfc0 100644 --- a/client/ayon_deadline/addon.py +++ b/client/ayon_deadline/addon.py @@ -41,9 +41,11 @@ def initialize(self, studio_settings): def get_plugin_paths(self): """Deadline plugin paths.""" - return { - "publish": self.get_publish_plugin_paths(), - } + # Note: We are not returning `publish` key because we have overridden + # `get_publish_plugin_paths` to return paths host-specific. However, + # `get_plugin_paths` still needs to be implemented because it's + # abstract on the parent class + return {} def get_publish_plugin_paths(self, host_name=None): paths = [os.path.join(DEADLINE_ADDON_DIR, "plugins", "publish", "default")] From 1a2f825ee3ff5331f064fe8ce49703515b87e7f1 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 12 Jul 2024 10:33:19 +0200 Subject: [PATCH 11/18] Remove unused import --- client/ayon_deadline/addon.py | 1 - 1 file changed, 1 deletion(-) diff --git a/client/ayon_deadline/addon.py b/client/ayon_deadline/addon.py index 7f1677cfc0..043a0de08f 100644 --- a/client/ayon_deadline/addon.py +++ b/client/ayon_deadline/addon.py @@ -6,7 +6,6 @@ from ayon_core.lib import Logger from ayon_core.addon import AYONAddon, IPluginPaths -from ayon_core.pipeline.context_tools import get_current_host_name from .version import __version__ From 68507a603be0590f672556f8f14f33e237fa4e40 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 12 Jul 2024 10:33:32 +0200 Subject: [PATCH 12/18] Cosmetics + line length fix --- client/ayon_deadline/addon.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/ayon_deadline/addon.py b/client/ayon_deadline/addon.py index 043a0de08f..728afe4f13 100644 --- a/client/ayon_deadline/addon.py +++ b/client/ayon_deadline/addon.py @@ -47,10 +47,10 @@ def get_plugin_paths(self): return {} def get_publish_plugin_paths(self, host_name=None): - paths = [os.path.join(DEADLINE_ADDON_DIR, "plugins", "publish", "default")] + publish_dir = os.path.join(DEADLINE_ADDON_DIR, "plugins", "publish") + paths = [os.path.join(publish_dir, "default")] if host_name: - paths.append(os.path.join(DEADLINE_ADDON_DIR, "plugins", "publish", host_name)) - + paths.append(os.path.join(publish_dir, host_name)) return paths @staticmethod From 368e2510dc3f8dc904168e51f9afa91c1428986c Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 12 Jul 2024 10:34:00 +0200 Subject: [PATCH 13/18] Rename `default` subfolder to `global` --- client/ayon_deadline/addon.py | 2 +- .../collect_deadline_server_from_instance.py | 0 .../{default => global}/collect_default_deadline_server.py | 0 .../plugins/publish/{default => global}/collect_pools.py | 0 .../publish/{default => global}/collect_user_credentials.py | 0 .../{default => global}/help/validate_deadline_connection.xml | 0 .../{default => global}/help/validate_deadline_pools.xml | 0 .../publish/{default => global}/submit_publish_cache_job.py | 0 .../plugins/publish/{default => global}/submit_publish_job.py | 0 .../publish/{default => global}/validate_deadline_connection.py | 0 .../publish/{default => global}/validate_deadline_pools.py | 0 .../{default => global}/validate_expected_and_rendered_files.py | 0 12 files changed, 1 insertion(+), 1 deletion(-) rename client/ayon_deadline/plugins/publish/{default => global}/collect_deadline_server_from_instance.py (100%) rename client/ayon_deadline/plugins/publish/{default => global}/collect_default_deadline_server.py (100%) rename client/ayon_deadline/plugins/publish/{default => global}/collect_pools.py (100%) rename client/ayon_deadline/plugins/publish/{default => global}/collect_user_credentials.py (100%) rename client/ayon_deadline/plugins/publish/{default => global}/help/validate_deadline_connection.xml (100%) rename client/ayon_deadline/plugins/publish/{default => global}/help/validate_deadline_pools.xml (100%) rename client/ayon_deadline/plugins/publish/{default => global}/submit_publish_cache_job.py (100%) rename client/ayon_deadline/plugins/publish/{default => global}/submit_publish_job.py (100%) rename client/ayon_deadline/plugins/publish/{default => global}/validate_deadline_connection.py (100%) rename client/ayon_deadline/plugins/publish/{default => global}/validate_deadline_pools.py (100%) rename client/ayon_deadline/plugins/publish/{default => global}/validate_expected_and_rendered_files.py (100%) diff --git a/client/ayon_deadline/addon.py b/client/ayon_deadline/addon.py index 728afe4f13..84afa50154 100644 --- a/client/ayon_deadline/addon.py +++ b/client/ayon_deadline/addon.py @@ -48,7 +48,7 @@ def get_plugin_paths(self): def get_publish_plugin_paths(self, host_name=None): publish_dir = os.path.join(DEADLINE_ADDON_DIR, "plugins", "publish") - paths = [os.path.join(publish_dir, "default")] + paths = [os.path.join(publish_dir, "global")] if host_name: paths.append(os.path.join(publish_dir, host_name)) return paths diff --git a/client/ayon_deadline/plugins/publish/default/collect_deadline_server_from_instance.py b/client/ayon_deadline/plugins/publish/global/collect_deadline_server_from_instance.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/collect_deadline_server_from_instance.py rename to client/ayon_deadline/plugins/publish/global/collect_deadline_server_from_instance.py diff --git a/client/ayon_deadline/plugins/publish/default/collect_default_deadline_server.py b/client/ayon_deadline/plugins/publish/global/collect_default_deadline_server.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/collect_default_deadline_server.py rename to client/ayon_deadline/plugins/publish/global/collect_default_deadline_server.py diff --git a/client/ayon_deadline/plugins/publish/default/collect_pools.py b/client/ayon_deadline/plugins/publish/global/collect_pools.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/collect_pools.py rename to client/ayon_deadline/plugins/publish/global/collect_pools.py diff --git a/client/ayon_deadline/plugins/publish/default/collect_user_credentials.py b/client/ayon_deadline/plugins/publish/global/collect_user_credentials.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/collect_user_credentials.py rename to client/ayon_deadline/plugins/publish/global/collect_user_credentials.py diff --git a/client/ayon_deadline/plugins/publish/default/help/validate_deadline_connection.xml b/client/ayon_deadline/plugins/publish/global/help/validate_deadline_connection.xml similarity index 100% rename from client/ayon_deadline/plugins/publish/default/help/validate_deadline_connection.xml rename to client/ayon_deadline/plugins/publish/global/help/validate_deadline_connection.xml diff --git a/client/ayon_deadline/plugins/publish/default/help/validate_deadline_pools.xml b/client/ayon_deadline/plugins/publish/global/help/validate_deadline_pools.xml similarity index 100% rename from client/ayon_deadline/plugins/publish/default/help/validate_deadline_pools.xml rename to client/ayon_deadline/plugins/publish/global/help/validate_deadline_pools.xml diff --git a/client/ayon_deadline/plugins/publish/default/submit_publish_cache_job.py b/client/ayon_deadline/plugins/publish/global/submit_publish_cache_job.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/submit_publish_cache_job.py rename to client/ayon_deadline/plugins/publish/global/submit_publish_cache_job.py diff --git a/client/ayon_deadline/plugins/publish/default/submit_publish_job.py b/client/ayon_deadline/plugins/publish/global/submit_publish_job.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/submit_publish_job.py rename to client/ayon_deadline/plugins/publish/global/submit_publish_job.py diff --git a/client/ayon_deadline/plugins/publish/default/validate_deadline_connection.py b/client/ayon_deadline/plugins/publish/global/validate_deadline_connection.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/validate_deadline_connection.py rename to client/ayon_deadline/plugins/publish/global/validate_deadline_connection.py diff --git a/client/ayon_deadline/plugins/publish/default/validate_deadline_pools.py b/client/ayon_deadline/plugins/publish/global/validate_deadline_pools.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/validate_deadline_pools.py rename to client/ayon_deadline/plugins/publish/global/validate_deadline_pools.py diff --git a/client/ayon_deadline/plugins/publish/default/validate_expected_and_rendered_files.py b/client/ayon_deadline/plugins/publish/global/validate_expected_and_rendered_files.py similarity index 100% rename from client/ayon_deadline/plugins/publish/default/validate_expected_and_rendered_files.py rename to client/ayon_deadline/plugins/publish/global/validate_expected_and_rendered_files.py From 87d43d95cd609be0ab1fd6ec523453424ad74082 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 12 Jul 2024 10:57:18 +0200 Subject: [PATCH 14/18] Label plug-in better so it's clearer in UI which plug-in is which --- .../plugins/publish/houdini/submit_houdini_render_deadline.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py b/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py index 1b76ee2e5e..fd2827482a 100644 --- a/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py +++ b/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py @@ -399,8 +399,10 @@ def _get_husk_standalone_plugin_info(self, instance, hou_major_minor): class HoudiniSubmitDeadlineUsdRender(HoudiniSubmitDeadline): + label = "Submit Render to Deadline (USD)" + families = ["usdrender"] + # Do not use published workfile paths for USD Render ROP because the # Export Job doesn't seem to occur using the published path either, so # output paths then do not match the actual rendered paths use_published = False - families = ["usdrender"] From 35fd98130ff31ec50f04d976e15966e5066131c4 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Fri, 12 Jul 2024 12:33:03 +0200 Subject: [PATCH 15/18] Refactor variable name Co-authored-by: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> --- client/ayon_deadline/addon.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_deadline/addon.py b/client/ayon_deadline/addon.py index 84afa50154..3af92dffeb 100644 --- a/client/ayon_deadline/addon.py +++ b/client/ayon_deadline/addon.py @@ -10,7 +10,7 @@ from .version import __version__ -DEADLINE_ADDON_DIR = os.path.dirname(os.path.abspath(__file__)) +DEADLINE_ADDON_ROOT = os.path.dirname(os.path.abspath(__file__)) class DeadlineWebserviceError(Exception): @@ -47,7 +47,7 @@ def get_plugin_paths(self): return {} def get_publish_plugin_paths(self, host_name=None): - publish_dir = os.path.join(DEADLINE_ADDON_DIR, "plugins", "publish") + publish_dir = os.path.join(DEADLINE_ADDON_ROOT, "plugins", "publish") paths = [os.path.join(publish_dir, "global")] if host_name: paths.append(os.path.join(publish_dir, host_name)) From d6b4984b829c608f1add5b5d74866cb975999530 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 15 Jul 2024 17:50:55 +0200 Subject: [PATCH 16/18] bump version to '0.2.4' --- client/ayon_deadline/version.py | 2 +- package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_deadline/version.py b/client/ayon_deadline/version.py index b443a47e77..9fdeacfb92 100644 --- a/client/ayon_deadline/version.py +++ b/client/ayon_deadline/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'deadline' version.""" -__version__ = "0.2.4-dev.1" +__version__ = "0.2.4" diff --git a/package.py b/package.py index e5c4cec4f5..56615773a8 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "deadline" title = "Deadline" -version = "0.2.4-dev.1" +version = "0.2.4" client_dir = "ayon_deadline" From fa891aa393a7455fcbd837e4896e12705701de61 Mon Sep 17 00:00:00 2001 From: Jakub Trllo <43494761+iLLiCiTiT@users.noreply.github.com> Date: Mon, 15 Jul 2024 17:53:20 +0200 Subject: [PATCH 17/18] bump version to '0.2.5-dev.1' --- client/ayon_deadline/version.py | 2 +- package.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ayon_deadline/version.py b/client/ayon_deadline/version.py index 9fdeacfb92..264f4f5ad8 100644 --- a/client/ayon_deadline/version.py +++ b/client/ayon_deadline/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- """Package declaring AYON addon 'deadline' version.""" -__version__ = "0.2.4" +__version__ = "0.2.5-dev.1" diff --git a/package.py b/package.py index 56615773a8..531815cb3b 100644 --- a/package.py +++ b/package.py @@ -1,6 +1,6 @@ name = "deadline" title = "Deadline" -version = "0.2.4" +version = "0.2.5-dev.1" client_dir = "ayon_deadline" From d21fa4263677b5a64d03604d79bf47a667eda23e Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Fri, 19 Jul 2024 15:31:22 +0300 Subject: [PATCH 18/18] get group names from attribute_values --- .../publish/houdini/submit_houdini_render_deadline.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py b/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py index fd2827482a..9772329ab1 100644 --- a/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py +++ b/client/ayon_deadline/plugins/publish/houdini/submit_houdini_render_deadline.py @@ -224,7 +224,9 @@ def get_job_info(self, dependency_job_ids=None): job_info.ChunkSize = attribute_values.get( "export_chunk", self.export_chunk_size ) - job_info.Group = self.export_group + job_info.Group = attribute_values.get( + "export_group", self.export_group + ) else: job_info.Priority = attribute_values.get( "priority", self.priority @@ -232,7 +234,9 @@ def get_job_info(self, dependency_job_ids=None): job_info.ChunkSize = attribute_values.get( "chunk", self.chunk_size ) - job_info.Group = self.group + job_info.Group = attribute_values.get( + "group", self.group + ) # Apply render globals, like e.g. data from collect machine list render_globals = instance.data.get("renderGlobals", {})