@@ -34,6 +34,20 @@ class FilterType(str, Enum):
3434 CONTAINS = "contains"
3535
3636
37+ class FilterFields (BaseModel ):
38+ tags : List [str ] = []
39+ models : List [str ] = []
40+ owners : List [str ] = []
41+ statuses : List [str ] = []
42+ resource_types : List [ResourceType ] = []
43+ node_names : List [str ] = []
44+ test_ids : List [str ] = []
45+
46+ @property
47+ def normalized_status (self ) -> List [Status ]:
48+ return [Status (status ) for status in self .statuses if status in list (Status )]
49+
50+
3751def apply_filter (filter_type : FilterType , value : Any , filter_value : Any ) -> bool :
3852 if filter_type == FilterType .IS :
3953 return value == filter_value
@@ -113,6 +127,7 @@ class FiltersSchema(BaseModel):
113127 models : List [FilterSchema ] = Field (default_factory = list )
114128 statuses : List [StatusFilterSchema ] = Field (default = _get_default_statuses_filter ())
115129 resource_types : List [ResourceTypeFilterSchema ] = Field (default_factory = list )
130+ test_ids : List [FilterSchema [str ]] = Field (default_factory = list )
116131
117132 @validator ("invocation_time" , pre = True )
118133 def format_invocation_time (cls , invocation_time ) -> Optional [str ]:
@@ -249,41 +264,40 @@ def to_selector_filter_schema(self) -> "SelectorFilterSchema":
249264
250265 def apply (
251266 self ,
252- tags : List [str ],
253- models : List [str ],
254- owners : List [str ],
255- statuses : List [Status ],
256- resource_types : List [ResourceType ],
257- node_names : List [str ],
267+ filter_fields : FilterFields ,
258268 ) -> bool :
259269 return (
260270 all (
261- filter_schema .apply_filter_on_values (tags )
271+ filter_schema .apply_filter_on_values (filter_fields . tags )
262272 for filter_schema in self .tags
263273 )
264274 and all (
265- filter_schema .apply_filter_on_values (models )
275+ filter_schema .apply_filter_on_values (filter_fields . models )
266276 for filter_schema in self .models
267277 )
268278 and all (
269- filter_schema .apply_filter_on_values (owners )
279+ filter_schema .apply_filter_on_values (filter_fields . owners )
270280 for filter_schema in self .owners
271281 )
272282 and all (
273- filter_schema .apply_filter_on_values (statuses )
283+ filter_schema .apply_filter_on_values (filter_fields . normalized_status )
274284 for filter_schema in self .statuses
275285 )
276286 and all (
277- filter_schema .apply_filter_on_values (resource_types )
287+ filter_schema .apply_filter_on_values (filter_fields . resource_types )
278288 for filter_schema in self .resource_types
279289 )
280290 and (
281291 FilterSchema (
282292 values = self .node_names , type = FilterType .IS
283- ).apply_filter_on_values (node_names )
293+ ).apply_filter_on_values (filter_fields . node_names )
284294 if self .node_names
285295 else True
286296 )
297+ and all (
298+ filter_schema .apply_filter_on_values (filter_fields .test_ids )
299+ for filter_schema in self .test_ids
300+ )
287301 )
288302
289303
0 commit comments