diff --git a/assemblyline_core/updater/helper.py b/assemblyline_core/updater/helper.py index 9cd2e5fd..15741cc9 100644 --- a/assemblyline_core/updater/helper.py +++ b/assemblyline_core/updater/helper.py @@ -63,7 +63,7 @@ def _get_proprietary_registry_tags(self, server, image_name, auth, verify): resp = requests.get(url, headers=headers, verify=verify) if resp.ok: - return [tag['name'] for image in resp.json() for tag in image['tags']] + return [tag['name'] for image in resp.json() if image['tags'] for tag in image['tags']] return [] diff --git a/assemblyline_core/updater/run_updater.py b/assemblyline_core/updater/run_updater.py index 2aafdd65..4504b26d 100644 --- a/assemblyline_core/updater/run_updater.py +++ b/assemblyline_core/updater/run_updater.py @@ -17,8 +17,10 @@ V1ConfigMapVolumeSource, V1Secret, V1LocalObjectReference from kubernetes import client, config from kubernetes.client.rest import ApiException +from assemblyline.odm.messages.changes import Operation from assemblyline.odm.models.service import DockerConfig +from assemblyline.remote.datatypes.events import EventSender from assemblyline.remote.datatypes.hash import Hash from assemblyline_core.scaler.controllers.kubernetes_ctl import create_docker_auth_config from assemblyline_core.server_base import CoreBase @@ -370,6 +372,7 @@ def __init__(self, redis_persist=None, redis=None, logger=None, datastore=None): self.container_update: Hash[dict[str, Any]] = Hash('container-update', self.redis_persist) self.latest_service_tags: Hash[dict[str, str]] = Hash('service-tags', self.redis_persist) + self.service_events = EventSender('changes.services', host=self.redis) # Prepare a single threaded scheduler self.scheduler = sched.scheduler() @@ -431,6 +434,10 @@ def container_updates(self): operations = [(self.datastore.service_delta.UPDATE_SET, 'version', latest_tag)] if self.datastore.service_delta.update(service_name, operations): # Update completed, cleanup + self.service_events.send(service_name, { + 'operation': Operation.Modified, + 'name': service_name + }) self.log.info(f"Service {service_name} update successful!") else: self.log.error(f"Service {service_name} has failed to update because it cannot set "