Add filtering onto the images query in get_matching_tags_for_images
Should make the query even faster in the security notification case
This commit is contained in:
parent
d77463cc8b
commit
977bbc20a2
3 changed files with 40 additions and 18 deletions
|
@ -5,7 +5,9 @@ from collections import defaultdict
|
|||
from enum import Enum
|
||||
|
||||
from app import secscan_api
|
||||
from data.model.tag import filter_tags_have_repository_event, get_matching_tags_for_images
|
||||
from data.model.tag import (filter_has_repository_event, filter_tags_have_repository_event,
|
||||
get_matching_tags_for_images)
|
||||
|
||||
from data.database import (Image, ImageStorage, ExternalNotificationEvent, Repository,
|
||||
RepositoryTag)
|
||||
from endpoints.notificationhelper import notification_batch
|
||||
|
@ -159,12 +161,15 @@ class SecurityNotificationHandler(object):
|
|||
pairs = [tuple(layer_id.split('.', 2)) for layer_id in self.layer_ids]
|
||||
|
||||
def filter_notifying_repos(query):
|
||||
query = query.join(ImageStorage)
|
||||
return filter_has_repository_event(query, self.event)
|
||||
|
||||
def filter_and_order(query):
|
||||
return filter_tags_have_repository_event(query, self.event)
|
||||
|
||||
# Find the matching tags.
|
||||
tags = get_matching_tags_for_images(pairs, selections=[RepositoryTag, Image, ImageStorage],
|
||||
filter_query=filter_notifying_repos)
|
||||
filter_images=filter_notifying_repos,
|
||||
filter_tags=filter_and_order)
|
||||
|
||||
cve_id = self.vulnerability_info['Name']
|
||||
for tag in tags:
|
||||
|
|
Reference in a new issue