From 134e371f12e923d24698daf9eb7414ae3ac20867 Mon Sep 17 00:00:00 2001 From: Vasileios Katopodis <vkatopodis@ubitech.eu> Date: Mon, 3 Oct 2022 14:48:25 +0300 Subject: [PATCH] Remove PolicyRule in case of PolicyDelete call --- .../java/eu/teraflow/policy/PolicyServiceImpl.java | 7 ++++++- .../eu/teraflow/policy/context/ContextGateway.java | 3 +++ .../teraflow/policy/context/ContextGatewayImpl.java | 11 +++++++++++ .../eu/teraflow/policy/context/ContextService.java | 3 +++ .../teraflow/policy/context/ContextServiceImpl.java | 6 ++++++ 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java index ffc9aabf1..cc2bed0ee 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java +++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java @@ -209,9 +209,14 @@ public class PolicyServiceImpl implements PolicyService { var empty = monitoringService.deleteKpi(policy.getKpiId()); empty .subscribe() - .with(emptyMessage -> LOGGER.infof("Policy [%s] has been deleted.\n", policyRuleId)); + .with(emptyMessage -> LOGGER.infof("Kpi [%s] has been deleted.\n", policyRuleId)); } + var empty = contextService.removePolicyRule(policyRuleId); + empty + .subscribe() + .with(emptyMessage -> LOGGER.infof("Policy [%s] has been removed.\n", policyRuleId)); + policyRuleBasic.setPolicyRuleState(REMOVED_POLICYRULE_STATE); contextService.setPolicyRule(policyRuleBasic); diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java b/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java index 1f1c2446a..4e90fe7b6 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java +++ b/src/policy/src/main/java/eu/teraflow/policy/context/ContextGateway.java @@ -17,6 +17,7 @@ package eu.teraflow.policy.context; import eu.teraflow.policy.context.model.Device; +import eu.teraflow.policy.context.model.Empty; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; @@ -35,4 +36,6 @@ public interface ContextGateway { Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId); Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic); + + Uni<Empty> removePolicyRule(String policyRuleId); } diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java b/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java index 568ff449a..8b8f981d0 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java +++ b/src/policy/src/main/java/eu/teraflow/policy/context/ContextGatewayImpl.java @@ -20,6 +20,7 @@ import context.MutinyContextServiceGrpc.MutinyContextServiceStub; import context_policy.MutinyContextPolicyServiceGrpc.MutinyContextPolicyServiceStub; import eu.teraflow.policy.Serializer; import eu.teraflow.policy.context.model.Device; +import eu.teraflow.policy.context.model.Empty; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; @@ -97,4 +98,14 @@ public class ContextGatewayImpl implements ContextGateway { .onItem() .transform(serializer::deserialize); } + + @Override + public Uni<Empty> removePolicyRule(String policyRuleId) { + final var serializedPolicyRuleId = serializer.serializePolicyRuleId(policyRuleId); + + return streamingDelegateContextPolicy + .removePolicyRule(serializedPolicyRuleId) + .onItem() + .transform(serializer::deserializeEmpty); + } } diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java b/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java index 133318a05..41290e52a 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java +++ b/src/policy/src/main/java/eu/teraflow/policy/context/ContextService.java @@ -17,6 +17,7 @@ package eu.teraflow.policy.context; import eu.teraflow.policy.context.model.Device; +import eu.teraflow.policy.context.model.Empty; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; @@ -33,4 +34,6 @@ public interface ContextService { Uni<PolicyRuleBasic> getPolicyRule(String policyRuleId); Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic); + + Uni<Empty> removePolicyRule(String policyRuleId); } diff --git a/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java index bb5c8d61b..b8ffc44a4 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java +++ b/src/policy/src/main/java/eu/teraflow/policy/context/ContextServiceImpl.java @@ -17,6 +17,7 @@ package eu.teraflow.policy.context; import eu.teraflow.policy.context.model.Device; +import eu.teraflow.policy.context.model.Empty; import eu.teraflow.policy.context.model.Service; import eu.teraflow.policy.context.model.ServiceId; import eu.teraflow.policy.model.PolicyRuleBasic; @@ -58,4 +59,9 @@ public class ContextServiceImpl implements ContextService { public Uni<String> setPolicyRule(PolicyRuleBasic policyRuleBasic) { return contextGateway.setPolicyRule(policyRuleBasic); } + + @Override + public Uni<Empty> removePolicyRule(String policyRuleId) { + return contextGateway.removePolicyRule(policyRuleId); + } } -- GitLab