From e7529520ffd172d3131ec38209fac551a2e0305e Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Wed, 7 Feb 2024 10:16:01 +0100 Subject: [PATCH] remove OpenPype plugin from deadline --- .../custom/plugins/OpenPype/OpenPype.ico | Bin 126450 -> 0 bytes .../custom/plugins/OpenPype/OpenPype.options | 10 - .../custom/plugins/OpenPype/OpenPype.param | 27 -- .../custom/plugins/OpenPype/OpenPype.py | 236 ------------------ 4 files changed, 273 deletions(-) delete mode 100644 client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.ico delete mode 100644 client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.options delete mode 100644 client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.param delete mode 100644 client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.py diff --git a/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.ico b/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.ico deleted file mode 100644 index f0c15accc44729d95be27d5f5d047249f7065337..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126450 zcmXV11ymeOkltmN#oZ-naCd^c2X}YZ1a}W^0fGc~2yVd_f;++8U4uKve|PiVyqTJ= z{;F!Ky4q#{03ZMY`0oG$$N-_%0D$HDePH1K(X{YDz|s3N5t09=#Q*?I7a)L@_5bKn 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 NveFZ#bJKeA{{tG>5R?D_ diff --git a/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.options b/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.options deleted file mode 100644 index 6908fe865f..0000000000 --- a/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.options +++ /dev/null @@ -1,10 +0,0 @@ -[Arguments] -Type=string -Label=Arguments -Category=Python Options -CategoryOrder=0 -Index=1 -Description=The arguments to pass to the script. If no arguments are required, leave this blank. -Required=false -DisableIfBlank=true - diff --git a/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.param b/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.param deleted file mode 100644 index b3ac18e20c..0000000000 --- a/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.param +++ /dev/null @@ -1,27 +0,0 @@ -[About] -Type=label -Label=About -Category=About Plugin -CategoryOrder=-1 -Index=0 -Default=OpenPype Plugin for Deadline -Description=Not configurable - -[OpenPypeInstallationDirs] -Type=multilinemultifolder -Label=Directories where OpenPype versions are installed -Category=OpenPype Installation Directories -CategoryOrder=0 -Index=0 -Default=C:\Program Files (x86)\OpenPype -Description=Path or paths to directories where multiple versions of OpenPype might be installed. Enter every such path on separate lines. - -[OpenPypeExecutable] -Type=multilinemultifilename -Label=OpenPype Executable -Category=OpenPype Executables -CategoryOrder=1 -Index=0 -Default= -Description=The path to the OpenPype executable. Enter alternative paths on separate lines. - diff --git a/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.py b/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.py deleted file mode 100644 index ea30fbb5d6..0000000000 --- a/client/ayon_core/modules/deadline/repository/custom/plugins/OpenPype/OpenPype.py +++ /dev/null @@ -1,236 +0,0 @@ -#!/usr/bin/env python3 - -from System.IO import Path -from System.Text.RegularExpressions import Regex - -from Deadline.Plugins import PluginType, DeadlinePlugin -from Deadline.Scripting import ( - StringUtils, - FileUtils, - DirectoryUtils, - RepositoryUtils -) - -import re -import os -import platform - - -###################################################################### -# This is the function that Deadline calls to get an instance of the -# main DeadlinePlugin class. -###################################################################### -def GetDeadlinePlugin(): - return OpenPypeDeadlinePlugin() - - -def CleanupDeadlinePlugin(deadlinePlugin): - deadlinePlugin.Cleanup() - - -class OpenPypeDeadlinePlugin(DeadlinePlugin): - """ - Standalone plugin for publishing from ayon_core. - - Calls OpenPype executable 'openpype_console' from first correctly found - file based on plugin configuration. Uses 'publish' command and passes - path to metadata json file, which contains all needed information - for publish process. - """ - def __init__(self): - super().__init__() - self.InitializeProcessCallback += self.InitializeProcess - self.RenderExecutableCallback += self.RenderExecutable - self.RenderArgumentCallback += self.RenderArgument - - def Cleanup(self): - for stdoutHandler in self.StdoutHandlers: - del stdoutHandler.HandleCallback - - del self.InitializeProcessCallback - del self.RenderExecutableCallback - del self.RenderArgumentCallback - - def InitializeProcess(self): - self.PluginType = PluginType.Simple - self.StdoutHandling = True - - self.SingleFramesOnly = self.GetBooleanPluginInfoEntryWithDefault( - "SingleFramesOnly", False) - self.LogInfo("Single Frames Only: %s" % self.SingleFramesOnly) - - self.AddStdoutHandlerCallback( - ".*Progress: (\d+)%.*").HandleCallback += self.HandleProgress - - @staticmethod - def get_openpype_version_from_path(path, build=True): - """Get OpenPype version from provided path. - path (str): Path to scan. - build (bool, optional): Get only builds, not sources - - Returns: - str or None: version of OpenPype if found. - - """ - # fix path for application bundle on macos - if platform.system().lower() == "darwin": - path = os.path.join(path, "MacOS") - - version_file = os.path.join(path, "openpype", "version.py") - if not os.path.isfile(version_file): - return None - - # skip if the version is not build - exe = os.path.join(path, "openpype_console.exe") - if platform.system().lower() in ["linux", "darwin"]: - exe = os.path.join(path, "openpype_console") - - # if only builds are requested - if build and not os.path.isfile(exe): # noqa: E501 - print(f" ! path is not a build: {path}") - return None - - version = {} - with open(version_file, "r") as vf: - exec(vf.read(), version) - - version_match = re.search(r"(\d+\.\d+.\d+).*", version["__version__"]) - return version_match[1] - - def RenderExecutable(self): - job = self.GetJob() - openpype_versions = [] - # if the job requires specific OpenPype version, - # lets go over all available and find compatible build. - requested_version = job.GetJobEnvironmentKeyValue("OPENPYPE_VERSION") - if requested_version: - self.LogInfo(( - "Scanning for compatible requested " - f"version {requested_version}")) - dir_list = self.GetConfigEntry("OpenPypeInstallationDirs") - - # clean '\ ' for MacOS pasting - if platform.system().lower() == "darwin": - dir_list = dir_list.replace("\\ ", " ") - - for dir_list in dir_list.split(","): - install_dir = DirectoryUtils.SearchDirectoryList(dir_list) - if install_dir: - sub_dirs = [ - f.path for f in os.scandir(install_dir) - if f.is_dir() - ] - for subdir in sub_dirs: - version = self.get_openpype_version_from_path(subdir) - if not version: - continue - openpype_versions.append((version, subdir)) - - exe_list = self.GetConfigEntry("OpenPypeExecutable") - # clean '\ ' for MacOS pasting - if platform.system().lower() == "darwin": - exe_list = exe_list.replace("\\ ", " ") - exe = FileUtils.SearchFileList(exe_list) - if openpype_versions: - # if looking for requested compatible version, - # add the implicitly specified to the list too. - version = self.get_openpype_version_from_path( - os.path.dirname(exe)) - if version: - openpype_versions.append((version, os.path.dirname(exe))) - - if requested_version: - # sort detected versions - if openpype_versions: - openpype_versions.sort( - key=lambda ver: [ - int(t) if t.isdigit() else t.lower() - for t in re.split(r"(\d+)", ver[0]) - ]) - requested_major, requested_minor, _ = requested_version.split(".")[:3] # noqa: E501 - compatible_versions = [] - for version in openpype_versions: - v = version[0].split(".")[:3] - if v[0] == requested_major and v[1] == requested_minor: - compatible_versions.append(version) - if not compatible_versions: - self.FailRender(("Cannot find compatible version available " - "for version {} requested by the job. " - "Please add it through plugin configuration " - "in Deadline or install it to configured " - "directory.").format(requested_version)) - # sort compatible versions nad pick the last one - compatible_versions.sort( - key=lambda ver: [ - int(t) if t.isdigit() else t.lower() - for t in re.split(r"(\d+)", ver[0]) - ]) - # create list of executables for different platform and let - # Deadline decide. - exe_list = [ - os.path.join( - compatible_versions[-1][1], "openpype_console.exe"), - os.path.join( - compatible_versions[-1][1], "openpype_console"), - os.path.join( - compatible_versions[-1][1], "MacOS", "openpype_console") - ] - exe = FileUtils.SearchFileList(";".join(exe_list)) - - if exe == "": - self.FailRender( - "OpenPype executable was not found " + - "in the semicolon separated list " + - "\"" + ";".join(exe_list) + "\". " + - "The path to the render executable can be configured " + - "from the Plugin Configuration in the Deadline Monitor.") - return exe - - def RenderArgument(self): - arguments = str(self.GetPluginInfoEntryWithDefault("Arguments", "")) - arguments = RepositoryUtils.CheckPathMapping(arguments) - - arguments = re.sub(r"<(?i)STARTFRAME>", str(self.GetStartFrame()), - arguments) - arguments = re.sub(r"<(?i)ENDFRAME>", str(self.GetEndFrame()), - arguments) - arguments = re.sub(r"<(?i)QUOTE>", "\"", arguments) - - arguments = self.ReplacePaddedFrame(arguments, - "<(?i)STARTFRAME%([0-9]+)>", - self.GetStartFrame()) - arguments = self.ReplacePaddedFrame(arguments, - "<(?i)ENDFRAME%([0-9]+)>", - self.GetEndFrame()) - - count = 0 - for filename in self.GetAuxiliaryFilenames(): - localAuxFile = Path.Combine(self.GetJobsDataDirectory(), filename) - arguments = re.sub(r"<(?i)AUXFILE" + str(count) + r">", - localAuxFile.replace("\\", "/"), arguments) - count += 1 - - return arguments - - def ReplacePaddedFrame(self, arguments, pattern, frame): - frameRegex = Regex(pattern) - while True: - frameMatch = frameRegex.Match(arguments) - if frameMatch.Success: - paddingSize = int(frameMatch.Groups[1].Value) - if paddingSize > 0: - padding = StringUtils.ToZeroPaddedString(frame, - paddingSize, - False) - else: - padding = str(frame) - arguments = arguments.replace(frameMatch.Groups[0].Value, - padding) - else: - break - - return arguments - - def HandleProgress(self): - progress = float(self.GetRegexMatch(1)) - self.SetProgress(progress)