This commit is contained in:
kirillius 2026-07-15 11:12:34 +03:00
parent ab24066f81
commit fe71aae7aa
4 changed files with 20 additions and 20 deletions

View File

@ -2,7 +2,7 @@ package ru.kirillius.pf.sdn.api.flow;
import lombok.*;
import ru.kirillius.pf.sdn.api.Networking.NetworkScope;
import ru.kirillius.pf.sdn.entity.PipelineConfig;
import ru.kirillius.pf.sdn.entity.FlowConfig;
import java.util.ArrayList;
import java.util.List;
@ -13,7 +13,7 @@ import java.util.concurrent.atomic.AtomicReference;
@RequiredArgsConstructor()
public class Flow {
@Getter
private final PipelineConfig config;
private final FlowConfig config;
private final List<FlowAction> actions;
private final AtomicBoolean running = new AtomicBoolean(false);

View File

@ -16,7 +16,7 @@ import java.util.UUID;
@NoArgsConstructor
@Builder
@AllArgsConstructor
public class PipelineConfig {
public class FlowConfig {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ -29,7 +29,7 @@ public class PipelineConfig {
@Override
public boolean equals(Object o) {
if (!(o instanceof PipelineConfig that)) return false;
if (!(o instanceof FlowConfig that)) return false;
return Objects.equals(id, that.id) && Objects.equals(name, that.name);
}

View File

@ -1,11 +1,11 @@
package ru.kirillius.pf.sdn.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import ru.kirillius.pf.sdn.entity.PipelineConfig;
import ru.kirillius.pf.sdn.entity.FlowConfig;
import java.util.UUID;
public interface PipelineConfigRepository extends JpaRepository<PipelineConfig, Long> {
public interface PipelineConfigRepository extends JpaRepository<FlowConfig, Long> {
boolean existsByGuid(UUID guid);
}

View File

@ -12,7 +12,7 @@ import ru.kirillius.pf.sdn.api.flow.FlowFunction;
import ru.kirillius.pf.sdn.api.flow.Flow;
import ru.kirillius.pf.sdn.api.flow.TriggerType;
import ru.kirillius.pf.sdn.entity.ActionConfig;
import ru.kirillius.pf.sdn.entity.PipelineConfig;
import ru.kirillius.pf.sdn.entity.FlowConfig;
import ru.kirillius.pf.sdn.flow.DummyFunction;
import ru.kirillius.pf.sdn.repository.PipelineConfigRepository;
@ -32,7 +32,7 @@ public class FlowService {
private final SubscriptionService subscriptionService;
private final ExecutorService executorService;
private final Map<PipelineConfig, Flow> pipelines = new ConcurrentHashMap<>();
private final Map<FlowConfig, Flow> pipelines = new ConcurrentHashMap<>();
private final Map<String, Class<? extends FlowFunction>> functions = new ConcurrentHashMap<>();
private EventListener<Flow> executedListener;
private EventListener<Subscription> subscriptionUpdateListener;
@ -48,9 +48,9 @@ public class FlowService {
pipelines.keySet().stream().filter(config -> config.getId().equals(id)).findFirst().ifPresent(this::trigger);
}
public void trigger(PipelineConfig pipelineConfig) {
if (pipelines.containsKey(pipelineConfig)) {
trigger(pipelines.get(pipelineConfig));
public void trigger(FlowConfig flowConfig) {
if (pipelines.containsKey(flowConfig)) {
trigger(pipelines.get(flowConfig));
}
}
@ -69,20 +69,20 @@ public class FlowService {
}
public void update(PipelineConfig pipelineConfig) {
if (configRepository.existsByGuid(pipelineConfig.getGuid())) {
load(pipelineConfig);
public void update(FlowConfig flowConfig) {
if (configRepository.existsByGuid(flowConfig.getGuid())) {
load(flowConfig);
} else {
flowExecutorService.cancel(pipelines.get(pipelineConfig));
pipelines.remove(pipelineConfig);
flowExecutorService.cancel(pipelines.get(flowConfig));
pipelines.remove(flowConfig);
}
}
private void load(PipelineConfig pipelineConfig) {
if (pipelines.containsKey(pipelineConfig)) {
flowExecutorService.cancel(pipelines.get(pipelineConfig));
private void load(FlowConfig flowConfig) {
if (pipelines.containsKey(flowConfig)) {
flowExecutorService.cancel(pipelines.get(flowConfig));
}
pipelines.put(pipelineConfig, new Flow(pipelineConfig, pipelineConfig.getActions().stream().map(this::buildAction).toList()));
pipelines.put(flowConfig, new Flow(flowConfig, flowConfig.getActions().stream().map(this::buildAction).toList()));
}
private FlowAction buildAction(ActionConfig config) {