Add Target Poll Event in Service Events (#2981)
* Add Target Poll Event in Service Events Signed-off-by: strailov <Stanislav.Trailov@bosch.io> * Target poll event to service event Signed-off-by: strailov <Stanislav.Trailov@bosch.io> --------- Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
This commit is contained in:
committed by
GitHub
parent
5aafdaca6f
commit
ba3a08e560
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Copyright (c) 2026 Contributors to the Eclipse Foundation
|
||||
*
|
||||
* This program and the accompanying materials are made
|
||||
* available under the terms of the Eclipse Public License 2.0
|
||||
* which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.eclipse.hawkbit.repository.event.remote.service;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetPollEvent;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* Service event for {@link TargetPollEvent}. Event that needs single replica processing
|
||||
*/
|
||||
public class TargetPollServiceEvent extends AbstractServiceRemoteEvent<TargetPollEvent> {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@JsonCreator
|
||||
public TargetPollServiceEvent(@JsonProperty("payload") TargetPollEvent remoteEvent) {
|
||||
super(remoteEvent);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -70,6 +70,7 @@ import org.eclipse.hawkbit.repository.event.remote.service.TargetAssignDistribut
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetAttributesRequestedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetCreatedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetDeletedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetPollServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetUpdatedServiceEvent;
|
||||
|
||||
/**
|
||||
@@ -181,6 +182,7 @@ public class EventType {
|
||||
TYPES.put(1005, CancelTargetAssignmentServiceEvent.class);
|
||||
TYPES.put(1008, ActionCreatedServiceEvent.class);
|
||||
TYPES.put(1009, ActionUpdatedServiceEvent.class);
|
||||
TYPES.put(1010, TargetPollServiceEvent.class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.eclipse.hawkbit.repository.event.remote.CancelTargetAssignmentEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetAssignDistributionSetEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetAttributesRequestedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetDeletedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetPollEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.ActionCreatedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.ActionUpdatedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.TargetCreatedEvent;
|
||||
@@ -31,6 +32,7 @@ import org.eclipse.hawkbit.repository.event.remote.service.TargetAssignDistribut
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetAttributesRequestedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetCreatedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetDeletedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetPollServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetUpdatedServiceEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -74,7 +76,8 @@ public final class EventPublisherHolder {
|
||||
CancelTargetAssignmentEvent.class,
|
||||
TargetAttributesRequestedEvent.class,
|
||||
ActionCreatedEvent.class,
|
||||
ActionUpdatedEvent.class
|
||||
ActionUpdatedEvent.class,
|
||||
TargetPollEvent.class
|
||||
);
|
||||
|
||||
@Autowired
|
||||
@@ -181,6 +184,8 @@ public final class EventPublisherHolder {
|
||||
return new ActionCreatedServiceEvent(actionCreatedEvent);
|
||||
} else if (event instanceof ActionUpdatedEvent actionUpdatedEvent) {
|
||||
return new ActionUpdatedServiceEvent(actionUpdatedEvent);
|
||||
} else if (event instanceof TargetPollEvent targetPollEvent) {
|
||||
return new TargetPollServiceEvent(targetPollEvent);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.eclipse.hawkbit.repository.event.ApplicationEventFilter;
|
||||
import org.eclipse.hawkbit.repository.event.remote.EventEntityManager;
|
||||
import org.eclipse.hawkbit.repository.event.remote.EventEntityManagerHolder;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetPollEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetPollServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.jpa.acm.AccessController;
|
||||
import org.eclipse.hawkbit.repository.jpa.aspects.ExceptionMappingAspectHandler;
|
||||
import org.eclipse.hawkbit.repository.jpa.autocleanup.AutoActionCleanup;
|
||||
@@ -277,7 +278,9 @@ public class JpaRepositoryConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
ApplicationEventFilter applicationEventFilter(final RepositoryProperties repositoryProperties) {
|
||||
return e -> e instanceof TargetPollEvent && !repositoryProperties.isPublishTargetPollEvent();
|
||||
return e ->
|
||||
(e instanceof TargetPollEvent || e instanceof TargetPollServiceEvent)
|
||||
&& !repositoryProperties.isPublishTargetPollEvent();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.eclipse.hawkbit.repository.event.remote.service.TargetAssignDistribut
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetAttributesRequestedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetCreatedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetDeletedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetPollServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.model.Action;
|
||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||
import org.eclipse.hawkbit.repository.model.Target;
|
||||
@@ -78,7 +79,8 @@ class ServiceEventsTest {
|
||||
CancelTargetAssignmentEvent.class,
|
||||
TargetAttributesRequestedEvent.class,
|
||||
ActionCreatedEvent.class,
|
||||
ActionUpdatedEvent.class
|
||||
ActionUpdatedEvent.class,
|
||||
TargetPollEvent.class
|
||||
);
|
||||
assertEquals(EventPublisherHolder.SERVICE_EVENTS, expected);
|
||||
}
|
||||
@@ -130,6 +132,14 @@ class ServiceEventsTest {
|
||||
verify(streamBridge).send(eq("group"), any(CancelTargetAssignmentServiceEvent.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testTargetPollEventIsSent() {
|
||||
TargetPollEvent event = new TargetPollEvent();
|
||||
publisher.publishEvent(event);
|
||||
verify(streamBridge).send("fanout", event);
|
||||
verify(streamBridge).send(eq("group"), any(TargetPollServiceEvent.class));
|
||||
}
|
||||
|
||||
private Action mockAction() {
|
||||
final Action actionMock = mock(Action.class);
|
||||
final Target targetMock = mock(Target.class);
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.eclipse.hawkbit.repository.event.remote.RemoteTenantAwareEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetAssignDistributionSetEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetAttributesRequestedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetDeletedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.TargetPollEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.ActionCreatedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.ActionUpdatedEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.entity.TargetCreatedEvent;
|
||||
@@ -49,6 +50,7 @@ import org.eclipse.hawkbit.repository.event.remote.service.TargetAssignDistribut
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetAttributesRequestedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetCreatedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetDeletedServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetPollServiceEvent;
|
||||
import org.eclipse.hawkbit.repository.event.remote.service.TargetUpdatedServiceEvent;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
@@ -180,6 +182,8 @@ public class EventVerifier extends AbstractTestExecutionListener {
|
||||
modifiedEvents.add(new DynamicExpect(ActionCreatedServiceEvent.class, event.count()));
|
||||
} else if (type.isAssignableFrom(ActionUpdatedEvent.class)) {
|
||||
modifiedEvents.add(new DynamicExpect(ActionUpdatedServiceEvent.class, event.count()));
|
||||
} else if (type.isAssignableFrom(TargetPollEvent.class)) {
|
||||
modifiedEvents.add(new DynamicExpect(TargetPollServiceEvent.class, event.count()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user