class CloudEventReporter extends ControllerMaintainer {

    @Override
    protected boolean maintain() {
        int numberOfInfrastructureEvents = 0;
        for (var awsRegion : zonesByCloudNativeRegion.keySet()) {
            List<CloudEvent> events = eventFetcher.getEvents(awsRegion);
            for (var event : events) {
                log.info(String.format("Retrieved event %s, affecting the following instances: %s",
                        event.instanceEventId,
                        event.affectedInstances));
                List<Node> needsManualIntervention = handleInstances(awsRegion, event);
                if (!needsManualIntervention.isEmpty()) {
                    numberOfInfrastructureEvents += needsManualIntervention.size();
                    submitIssue(event);
                }
            }
        }
        metric.set(INFRASTRUCTURE_INSTANCE_EVENTS, numberOfInfrastructureEvents, metric.createContext(Collections.emptyMap()));
        return true;
    }

      CloudEventReporter(Controller controller, Duration interval, Metric metric);

}