Deadline: correct webservice couldn't be selected in Ayon (#6007)

* Refactor necessary for Ayon changes in Setting model

* Removed unnecessary configuration

MongoDB is not a thing in Ayon.

* Changed DL model to use dynamic enum

Enum values are set in Studio Settings, in Project settings will be selected from.
Used this way to be close to OP variant and support both until OP is deprecated.

* Hound

* Refactor with use of AYON_SERVER_ENABLED

This will make it simpler to remove obsolete code in the future.

---------

Co-authored-by: Libor Batek <112623825+LiborBatek@users.noreply.github.com>
This commit is contained in:
Petr Kalis 2023-12-06 16:40:24 +01:00 committed by GitHub
parent 0ed8a66fb8
commit f9509f3613
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 35 deletions

View file

@ -2,6 +2,8 @@
"""Collect default Deadline server."""
import pyblish.api
from openpype import AYON_SERVER_ENABLED
class CollectDefaultDeadlineServer(pyblish.api.ContextPlugin):
"""Collect default Deadline Webservice URL.
@ -30,24 +32,26 @@ class CollectDefaultDeadlineServer(pyblish.api.ContextPlugin):
self.log.error("Cannot get OpenPype Deadline module.")
raise AssertionError("OpenPype Deadline module not found.")
# get default deadline webservice url from deadline module
self.log.debug(deadline_module.deadline_urls)
context.data["defaultDeadline"] = deadline_module.deadline_urls["default"] # noqa: E501
deadline_settings = context.data["project_settings"]["deadline"]
deadline_server_name = None
if AYON_SERVER_ENABLED:
deadline_server_name = deadline_settings["deadline_server"]
else:
deadline_servers = deadline_settings["deadline_servers"]
if deadline_servers:
deadline_server_name = deadline_servers[0]
context.data["deadlinePassMongoUrl"] = self.pass_mongo_url
context.data["deadlinePassMongoUrl"] = self.pass_mongo_url
deadline_servers = (context.data
["project_settings"]
["deadline"]
["deadline_servers"])
if deadline_servers:
deadline_server_name = deadline_servers[0]
deadline_webservice = None
if deadline_server_name:
deadline_webservice = deadline_module.deadline_urls.get(
deadline_server_name)
if deadline_webservice:
context.data["defaultDeadline"] = deadline_webservice
self.log.debug("Overriding from project settings with {}".format( # noqa: E501
deadline_webservice))
context.data["defaultDeadline"] = \
context.data["defaultDeadline"].strip().rstrip("/")
default_deadline_webservice = deadline_module.deadline_urls["default"]
deadline_webservice = (
deadline_webservice
or default_deadline_webservice
)
context.data["defaultDeadline"] = deadline_webservice.strip().rstrip("/") # noqa

View file

@ -14,15 +14,35 @@ class ServerListSubmodel(BaseSettingsModel):
value: str = Field(title="Value")
async def defined_deadline_ws_name_enum_resolver(
addon: "BaseServerAddon",
settings_variant: str = "production",
project_name: str | None = None,
) -> list[str]:
"""Provides list of names of configured Deadline webservice urls."""
if addon is None:
return []
settings = await addon.get_studio_settings(variant=settings_variant)
ws_urls = []
for deadline_url_item in settings.deadline_urls:
ws_urls.append(deadline_url_item.name)
return ws_urls
class DeadlineSettings(BaseSettingsModel):
deadline_urls: list[ServerListSubmodel] = Field(
default_factory=list,
title="System Deadline Webservice URLs",
scope=["studio"],
)
deadline_servers: list[str] = Field(
title="Project deadline servers",
deadline_server: str = Field(
title="Project deadline server",
section="---",
scope=["project"],
enum_resolver=defined_deadline_ws_name_enum_resolver
)
publish: PublishPluginsModel = Field(
default_factory=PublishPluginsModel,
@ -42,7 +62,6 @@ DEFAULT_VALUES = {
"value": "http://127.0.0.1:8082"
}
],
# TODO: this needs to be dynamic from "deadline_urls"
"deadline_servers": [],
"deadline_server": "default",
"publish": DEFAULT_DEADLINE_PLUGINS_SETTINGS
}

View file

@ -3,12 +3,6 @@ from pydantic import Field, validator
from ayon_server.settings import BaseSettingsModel, ensure_unique_names
class CollectDefaultDeadlineServerModel(BaseSettingsModel):
"""Settings for event handlers running in ftrack service."""
pass_mongo_url: bool = Field(title="Pass Mongo url to job")
class CollectDeadlinePoolsModel(BaseSettingsModel):
"""Settings Deadline default pools."""
@ -286,12 +280,6 @@ class ProcessSubmittedJobOnFarmModel(BaseSettingsModel):
class PublishPluginsModel(BaseSettingsModel):
CollectDefaultDeadlineServer: CollectDefaultDeadlineServerModel = Field(
default_factory=CollectDefaultDeadlineServerModel,
title="Default Deadline Webservice")
CollectDefaultDeadlineServer: CollectDefaultDeadlineServerModel = Field(
default_factory=CollectDefaultDeadlineServerModel,
title="Default Deadline Webservice")
CollectDeadlinePools: CollectDeadlinePoolsModel = Field(
default_factory=CollectDeadlinePoolsModel,
title="Default Pools")
@ -332,9 +320,6 @@ class PublishPluginsModel(BaseSettingsModel):
DEFAULT_DEADLINE_PLUGINS_SETTINGS = {
"CollectDefaultDeadlineServer": {
"pass_mongo_url": True
},
"CollectDeadlinePools": {
"primary_pool": "",
"secondary_pool": ""