Bases: OptionalPyblishPluginMixin, InstancePlugin
Validate collected values for JobInfo section in Deadline submission
Source code in client/ayon_deadline/plugins/publish/global/validate_deadline_jobinfo.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 | class ValidateDeadlineJobInfo(
OptionalPyblishPluginMixin,
pyblish.api.InstancePlugin
):
"""Validate collected values for JobInfo section in Deadline submission
"""
label = "Validate Deadline JobInfo"
order = pyblish.api.ValidatorOrder
families = FARM_FAMILIES
optional = True
targets = ["local"]
settings_category = "deadline"
# cache
pools_by_url = {}
def process(self, instance):
if not self.is_active(instance.data):
return
if not instance.data.get("farm"):
self.log.debug("Skipping local instance.")
return
priority = instance.data["deadline"]["job_info"].Priority
if priority is not None and (priority < 0 or priority > 100):
raise PublishValidationError(
f"Priority:'{priority}' must be between 0-100")
custom_frames = instance.data["deadline"]["job_info"].Frames
if not custom_frames:
return
context = instance.context
frame_start = _first_not_none(
instance.data.get("frameStartHandle"),
instance.data.get("frameStart"),
context.data.get("frameStartHandle"),
context.data.get("frameStart"),
)
frame_end = _first_not_none(
instance.data.get("frameEndHandle"),
instance.data.get("frameEnd"),
context.data.get("frameEndHandle"),
context.data.get("frameEnd"),
)
if frame_start is None or frame_end is None:
self.log.info("Unable to get frame range, skip validation.")
return
frames_to_render = convert_frames_str_to_list(custom_frames)
if (
min(frames_to_render) < frame_start
or max(frames_to_render) > frame_end
):
raise PublishValidationError(
f"Custom frames '{custom_frames}' are outside of "
f"expected frame range '{frame_start}'-'{frame_end}'"
)
|