Merge branch 'develop' into enhancement/movement-cleanups
|
|
@ -47,6 +47,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),
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
__version__ = "0.1.12"
|
||||
|
|
@ -79,10 +79,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/*"
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
from .deadline_module import DeadlineModule
|
||||
from .addon import DeadlineAddon
|
||||
from .version import __version__
|
||||
|
||||
|
||||
__all__ = (
|
||||
"DeadlineModule",
|
||||
"DeadlineAddon",
|
||||
"__version__"
|
||||
)
|
||||
|
|
@ -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):
|
||||
|
|
@ -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"] = {}
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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"]:
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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"]
|
||||
|
||||
|
|
@ -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 = [
|
||||
{
|
||||
|
|
@ -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):
|
||||
|
|
@ -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")
|
||||
|
|
@ -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):
|
||||
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 124 KiB |
3
server_addon/deadline/client/ayon_deadline/version.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Package declaring AYON addon 'deadline' version."""
|
||||
__version__ = "0.2.0"
|
||||
|
|
@ -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 = {}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||