Merge branch 'enhancement/OP-8218_Loader-OTIO-export-action' of https://github.com/ynput/ayon-core into enhancement/OP-8218_Loader-OTIO-export-action

This commit is contained in:
Jakub Jezek 2024-06-07 12:16:47 +02:00
commit c76eed6476
No known key found for this signature in database
GPG key ID: 06DBD609ADF27FD9
47 changed files with 88 additions and 65 deletions

View file

@ -54,6 +54,7 @@ MOVED_ADDON_MILESTONE_VERSIONS = {
"blender": VersionInfo(0, 2, 0),
"celaction": VersionInfo(0, 2, 0),
"clockify": VersionInfo(0, 2, 0),
"deadline": VersionInfo(0, 2, 0),
"flame": VersionInfo(0, 2, 0),
"fusion": VersionInfo(0, 2, 0),
"harmony": VersionInfo(0, 2, 0),

View file

@ -1 +0,0 @@
__version__ = "0.1.12"

View file

@ -80,10 +80,10 @@ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
exclude = [
"client/ayon_core/hosts/unreal/integration/*",
"client/ayon_core/modules/deadline/repository/custom/plugins/CelAction/*",
"client/ayon_core/modules/deadline/repository/custom/plugins/HarmonyAYON/*",
"client/ayon_core/modules/click_wrap.py",
"client/ayon_core/scripts/slates/__init__.py",
"server_addon/deadline/client/ayon_deadline/repository/custom/plugins/CelAction/*",
"server_addon/deadline/client/ayon_deadline/repository/custom/plugins/HarmonyAYON/*",
"server_addon/hiero/client/ayon_hiero/api/startup/*",
"server_addon/aftereffects/client/ayon_aftereffects/api/extension/js/libs/*"
]

View file

@ -1,8 +1,8 @@
from .deadline_module import DeadlineModule
from .addon import DeadlineAddon
from .version import __version__
__all__ = (
"DeadlineModule",
"DeadlineAddon",
"__version__"
)

View file

@ -5,7 +5,7 @@ import requests
import six
from ayon_core.lib import Logger
from ayon_core.modules import AYONAddon, IPluginPaths
from ayon_core.addon import AYONAddon, IPluginPaths
from .version import __version__
@ -16,28 +16,23 @@ class DeadlineWebserviceError(Exception):
"""
class DeadlineModule(AYONAddon, IPluginPaths):
class DeadlineAddon(AYONAddon, IPluginPaths):
name = "deadline"
version = __version__
def initialize(self, studio_settings):
# This module is always enabled
deadline_servers_info = {}
enabled = self.name in studio_settings
if enabled:
deadline_settings = studio_settings[self.name]
deadline_servers_info = {
url_item["name"]: url_item
for url_item in deadline_settings["deadline_urls"]
}
deadline_settings = studio_settings[self.name]
deadline_servers_info = {
url_item["name"]: url_item
for url_item in deadline_settings["deadline_urls"]
}
if enabled and not deadline_servers_info:
enabled = False
if not deadline_servers_info:
self.enabled = False
self.log.warning((
"Deadline Webservice URLs are not specified. Disabling addon."
))
self.enabled = enabled
self.deadline_servers_info = deadline_servers_info
def get_plugin_paths(self):

View file

@ -24,7 +24,7 @@ class CollectDefaultDeadlineServer(pyblish.api.ContextPlugin):
def process(self, context):
try:
deadline_module = context.data["ayonAddonsManager"]["deadline"]
deadline_addon = context.data["ayonAddonsManager"]["deadline"]
except AttributeError:
self.log.error("Cannot get AYON Deadline addon.")
raise AssertionError("AYON Deadline addon not found.")
@ -34,13 +34,13 @@ class CollectDefaultDeadlineServer(pyblish.api.ContextPlugin):
dl_server_info = None
if deadline_server_name:
dl_server_info = deadline_module.deadline_servers_info.get(
dl_server_info = deadline_addon.deadline_servers_info.get(
deadline_server_name)
if dl_server_info:
deadline_url = dl_server_info["value"]
else:
default_dl_server_info = deadline_module.deadline_servers_info[0]
default_dl_server_info = deadline_addon.deadline_servers_info[0]
deadline_url = default_dl_server_info["value"]
context.data["deadline"] = {}

View file

@ -86,7 +86,7 @@ class CollectDeadlinePools(pyblish.api.InstancePlugin,
# but the Deadline server URL can be dynamic and
# can be set per render instance. Since get_attribute_defs
# can't be dynamic unfortunately EnumDef isn't possible (yet?)
# pool_names = self.deadline_module.get_deadline_pools(deadline_url,
# pool_names = self.deadline_addon.get_deadline_pools(deadline_url,
# self.log)
# secondary_pool_names = ["-"] + pool_names

View file

@ -13,8 +13,6 @@ Provides:
import pyblish.api
from ayon_api import get_server_api_connection
from ayon_core.modules.deadline.deadline_module import DeadlineModule
from ayon_core.modules.deadline import __version__
class CollectDeadlineUserCredentials(pyblish.api.InstancePlugin):
@ -81,10 +79,13 @@ class CollectDeadlineUserCredentials(pyblish.api.InstancePlugin):
if not deadline_info["require_authentication"]:
return
# TODO import 'get_addon_site_settings' when available
addons_manager = instance.context.data["ayonAddonsManager"]
deadline_addon = addons_manager["deadline"]
# TODO import 'get_addon_site_settings' when available
# in public 'ayon_api'
local_settings = get_server_api_connection().get_addon_site_settings(
DeadlineModule.name, __version__)
deadline_addon.name, deadline_addon.version)
local_settings = local_settings["local_settings"]
for server_info in local_settings:
if deadline_server_name == server_info["server_name"]:

View file

@ -9,8 +9,8 @@ from ayon_core.lib import (
collect_frames,
is_in_tests,
)
from openpype_modules.deadline import abstract_submit_deadline
from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo
from ayon_deadline import abstract_submit_deadline
from ayon_deadline.abstract_submit_deadline import DeadlineJobInfo
@attr.s

View file

@ -15,8 +15,8 @@ from ayon_core.lib import (
from ayon_core.pipeline.publish import AYONPyblishPluginMixin
from ayon_core.pipeline.farm.tools import iter_expected_files
from openpype_modules.deadline import abstract_submit_deadline
from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo
from ayon_deadline import abstract_submit_deadline
from ayon_deadline.abstract_submit_deadline import DeadlineJobInfo
@attr.s
@ -31,6 +31,7 @@ class BlenderSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
label = "Submit Render to Deadline"
hosts = ["blender"]
families = ["render"]
settings_category = "deadline"
use_published = True
priority = 50

View file

@ -4,7 +4,7 @@ import json
import getpass
import pyblish.api
from openpype_modules.deadline.abstract_submit_deadline import requests_post
from ayon_deadline.abstract_submit_deadline import requests_post
class CelactionSubmitDeadline(pyblish.api.InstancePlugin):
@ -18,6 +18,7 @@ class CelactionSubmitDeadline(pyblish.api.InstancePlugin):
order = pyblish.api.IntegratorOrder + 0.1
hosts = ["celaction"]
families = ["render.farm"]
settings_category = "deadline"
deadline_department = ""
deadline_priority = 50

View file

@ -4,7 +4,7 @@ import getpass
import pyblish.api
from openpype_modules.deadline.abstract_submit_deadline import requests_post
from ayon_deadline.abstract_submit_deadline import requests_post
from ayon_core.pipeline.publish import (
AYONPyblishPluginMixin
)
@ -27,6 +27,7 @@ class FusionSubmitDeadline(
hosts = ["fusion"]
families = ["render"]
targets = ["local"]
settings_category = "deadline"
# presets
plugin = None

View file

@ -10,8 +10,8 @@ from datetime import datetime
import attr
import pyblish.api
from openpype_modules.deadline import abstract_submit_deadline
from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo
from ayon_deadline import abstract_submit_deadline
from ayon_deadline.abstract_submit_deadline import DeadlineJobInfo
from ayon_core.lib import is_in_tests
@ -240,6 +240,7 @@ class HarmonySubmitDeadline(
hosts = ["harmony"]
families = ["render.farm"]
targets = ["local"]
settings_category = "deadline"
optional = True
use_published = False

View file

@ -12,8 +12,8 @@ from ayon_core.lib import (
from ayon_core.pipeline import (
AYONPyblishPluginMixin
)
from openpype_modules.deadline import abstract_submit_deadline
from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo
from ayon_deadline import abstract_submit_deadline
from ayon_deadline.abstract_submit_deadline import DeadlineJobInfo
@attr.s
@ -43,6 +43,7 @@ class HoudiniCacheSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline
hosts = ["houdini"]
families = ["publish.hou"]
targets = ["local"]
settings_category = "deadline"
priority = 50
chunk_size = 999999

View file

@ -6,13 +6,13 @@ from datetime import datetime
import pyblish.api
from ayon_core.pipeline import AYONPyblishPluginMixin
from openpype_modules.deadline import abstract_submit_deadline
from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo
from ayon_core.lib import (
is_in_tests,
TextDef,
NumberDef
)
from ayon_deadline import abstract_submit_deadline
from ayon_deadline.abstract_submit_deadline import DeadlineJobInfo
@attr.s
@ -76,6 +76,7 @@ class HoudiniSubmitDeadline(
"karma_rop",
"vray_rop"]
targets = ["local"]
settings_category = "deadline"
use_published = True
# presets

View file

@ -20,8 +20,8 @@ from ayon_max.api.lib import (
get_multipass_setting
)
from ayon_max.api.lib_rendersettings import RenderSettings
from openpype_modules.deadline import abstract_submit_deadline
from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo
from ayon_deadline import abstract_submit_deadline
from ayon_deadline.abstract_submit_deadline import DeadlineJobInfo
@attr.s
@ -39,6 +39,7 @@ class MaxSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
hosts = ["max"]
families = ["maxrender"]
targets = ["local"]
settings_category = "deadline"
use_published = True
priority = 50

View file

@ -42,10 +42,11 @@ from ayon_core.lib import (
from ayon_maya.api.lib_rendersettings import RenderSettings
from ayon_maya.api.lib import get_attr_in_layer
from openpype_modules.deadline import abstract_submit_deadline
from openpype_modules.deadline.abstract_submit_deadline import DeadlineJobInfo
from ayon_core.pipeline.farm.tools import iter_expected_files
from ayon_deadline import abstract_submit_deadline
from ayon_deadline.abstract_submit_deadline import DeadlineJobInfo
def _validate_deadline_bool_value(instance, attribute, value):
if not isinstance(value, (str, bool)):
@ -105,6 +106,7 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline,
hosts = ["maya"]
families = ["renderlayer"]
targets = ["local"]
settings_category = "deadline"
tile_assembler_plugin = "OpenPypeTileAssembler"
priority = 50

View file

@ -6,7 +6,6 @@ from datetime import datetime
import pyblish.api
from openpype_modules.deadline.abstract_submit_deadline import requests_post
from ayon_core.pipeline.publish import (
AYONPyblishPluginMixin
)
@ -15,6 +14,7 @@ from ayon_core.lib import (
BoolDef,
NumberDef
)
from ayon_deadline.abstract_submit_deadline import requests_post
class NukeSubmitDeadline(pyblish.api.InstancePlugin,
@ -32,6 +32,7 @@ class NukeSubmitDeadline(pyblish.api.InstancePlugin,
families = ["render", "prerender"]
optional = True
targets = ["local"]
settings_category = "deadline"
# presets
priority = 50

View file

@ -8,11 +8,9 @@ from copy import deepcopy
import ayon_api
import pyblish.api
from openpype_modules.deadline.abstract_submit_deadline import requests_post
from ayon_core.pipeline import publish
from ayon_core.lib import EnumDef, is_in_tests
from ayon_core.pipeline.version_start import get_versioning_start
from ayon_core.pipeline.farm.pyblish_functions import (
create_skeleton_instance_cache,
create_instances_for_cache,
@ -20,6 +18,7 @@ from ayon_core.pipeline.farm.pyblish_functions import (
prepare_cache_representations,
create_metadata_path
)
from ayon_deadline.abstract_submit_deadline import requests_post
class ProcessSubmittedCacheJobOnFarm(pyblish.api.InstancePlugin,
@ -54,6 +53,7 @@ class ProcessSubmittedCacheJobOnFarm(pyblish.api.InstancePlugin,
label = "Submit cache jobs to Deadline"
order = pyblish.api.IntegratorOrder + 0.2
icon = "tractor"
settings_category = "deadline"
targets = ["local"]

View file

@ -9,7 +9,6 @@ import clique
import ayon_api
import pyblish.api
from openpype_modules.deadline.abstract_submit_deadline import requests_post
from ayon_core.pipeline import publish
from ayon_core.lib import EnumDef, is_in_tests
from ayon_core.pipeline.version_start import get_versioning_start
@ -21,6 +20,7 @@ from ayon_core.pipeline.farm.pyblish_functions import (
prepare_representations,
create_metadata_path
)
from ayon_deadline.abstract_submit_deadline import requests_post
def get_resource_files(resources, frame_range=None):
@ -95,6 +95,7 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin,
"arnold_rop", "mantra_rop",
"karma_rop", "vray_rop",
"redshift_rop"]
settings_category = "deadline"
aov_filter = [
{

View file

@ -2,7 +2,7 @@ import pyblish.api
from ayon_core.pipeline import PublishXmlValidationError
from openpype_modules.deadline.abstract_submit_deadline import requests_get
from ayon_deadline.abstract_submit_deadline import requests_get
class ValidateDeadlineConnection(pyblish.api.InstancePlugin):

View file

@ -4,7 +4,6 @@ from ayon_core.pipeline import (
PublishXmlValidationError,
OptionalPyblishPluginMixin
)
from ayon_core.modules.deadline.deadline_module import DeadlineModule
class ValidateDeadlinePools(OptionalPyblishPluginMixin,
@ -38,8 +37,13 @@ class ValidateDeadlinePools(OptionalPyblishPluginMixin,
return
deadline_url = instance.data["deadline"]["url"]
pools = self.get_pools(deadline_url,
instance.data["deadline"].get("auth"))
addons_manager = instance.context.data["ayonAddonsManager"]
deadline_addon = addons_manager["deadline"]
pools = self.get_pools(
deadline_addon,
deadline_url,
instance.data["deadline"].get("auth")
)
invalid_pools = {}
primary_pool = instance.data.get("primaryPool")
@ -62,15 +66,15 @@ class ValidateDeadlinePools(OptionalPyblishPluginMixin,
formatting_data={"pools_str": ", ".join(pools)}
)
def get_pools(self, deadline_url, auth):
def get_pools(self, deadline_addon, deadline_url, auth):
if deadline_url not in self.pools_per_url:
self.log.debug(
"Querying available pools for Deadline url: {}".format(
deadline_url)
)
pools = DeadlineModule.get_deadline_pools(deadline_url,
auth=auth,
log=self.log)
pools = deadline_addon.get_deadline_pools(
deadline_url, auth=auth, log=self.log
)
# some DL return "none" as a pool name
if "none" not in pools:
pools.append("none")

View file

@ -4,7 +4,7 @@ import requests
import pyblish.api
from ayon_core.lib import collect_frames
from openpype_modules.deadline.abstract_submit_deadline import requests_get
from ayon_deadline.abstract_submit_deadline import requests_get
class ValidateExpectedFiles(pyblish.api.InstancePlugin):

View file

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
"""Package declaring AYON addon 'deadline' version."""
__version__ = "0.2.0"

View file

@ -1,3 +1,10 @@
name = "deadline"
title = "Deadline"
version = "0.1.12"
version = "0.2.0"
client_dir = "ayon_deadline"
ayon_required_addons = {
"core": ">0.3.2",
}
ayon_compatible_addons = {}

View file

@ -2,25 +2,27 @@ from ayon_server.settings import (
BaseSettingsModel,
SettingsField,
)
from .main import defined_deadline_ws_name_enum_resolver
class CredentialPerServerModel(BaseSettingsModel):
"""Provide credentials for configured DL servers"""
_layout = "expanded"
server_name: str = SettingsField("",
server_name: str = SettingsField(
"",
title="DL server name",
enum_resolver=defined_deadline_ws_name_enum_resolver)
username: str = SettingsField("",
title="Username")
password: str = SettingsField("",
title="Password")
enum_resolver=defined_deadline_ws_name_enum_resolver
)
username: str = SettingsField("", title="Username")
password: str = SettingsField("", title="Password")
class DeadlineSiteSettings(BaseSettingsModel):
local_settings: list[CredentialPerServerModel] = SettingsField(
default_factory=list,
title="Local setting",
description="Please provide credentials for configured Deadline servers",
description=(
"Please provide credentials for configured Deadline servers"
),
)