diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java b/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java new file mode 100644 index 0000000000000000000000000000000000000000..4de1743d0178d5f61737a2830b49370068156c8f --- /dev/null +++ b/src/policy/src/main/java/eu/teraflow/policy/model/BooleanOperator.java @@ -0,0 +1,7 @@ +package eu.teraflow.policy.model; + +public enum BooleanOperator { + POLICYRULE_CONDITION_BOOLEAN_UNDEFINED, + POLICYRULE_CONDITION_BOOLEAN_AND, + POLICYRULE_CONDITION_BOOLEAN_OR +} diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java b/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java new file mode 100644 index 0000000000000000000000000000000000000000..ccd424a02ba771edc215ee92e7bfc0125a5b5c27 --- /dev/null +++ b/src/policy/src/main/java/eu/teraflow/policy/model/NumericalOperator.java @@ -0,0 +1,11 @@ +package eu.teraflow.policy.model; + +public enum NumericalOperator { + POLICY_RULE_CONDITION_NUMERICAL_UNDEFINED, + POLICY_RULE_CONDITION_NUMERICAL_EQUAL, + POLICY_RULE_CONDITION_NUMERICAL_NOT_EQUAL, + POLICY_RULE_CONDITION_NUMERICAL_LESS_THAN, + POLICY_RULE_CONDITION_NUMERICAL_LESS_THAN_EQUAL, + POLICY_RULE_CONDITION_NUMERICAL_GREATER_THAN, + POLICY_RULE_CONDITION_NUMERICAL_GREATER_THAN_EQUAL +} diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java index 20f78eb817aca50fb0d711bee032deec1a43068e..18dbfa73d396770e71f0e1c864e2440f10b28a55 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java +++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRule.java @@ -16,40 +16,44 @@ package eu.teraflow.policy.model; -import eu.teraflow.policy.context.model.ContextId; import eu.teraflow.policy.context.model.ServiceId; +import java.util.List; +import java.util.stream.Collectors; public class PolicyRule { - private final PolicyRuleId policyRuleId; + private final String policyRuleId; private final PolicyRuleType policyRuleType; - private final PolicyRulePriority policyRulePriority; - private final PolicyRuleEvent policyRuleEvent; - private final PolicyRuleCondition policyRuleCondition; - private final PolicyRuleAction policyRuleAction; + private final int priority; + private final PolicyRuleEvent event; + private final List<PolicyRuleCondition> policyRuleConditions; + private final BooleanOperator booleanOperator; + private final List<PolicyRuleAction> policyRuleActions; private final ServiceId serviceId; - private final ContextId contextId; + private final List<String> deviceIds; public PolicyRule( - PolicyRuleId policyRuleId, + String policyRuleId, PolicyRuleType policyRuleType, - PolicyRulePriority policyRulePriority, - PolicyRuleEvent policyRuleEvent, - PolicyRuleCondition policyRuleCondition, - PolicyRuleAction policyRuleAction, + int priority, + PolicyRuleEvent event, + List<PolicyRuleCondition> policyRuleConditions, + BooleanOperator booleanOperator, + List<PolicyRuleAction> policyRuleActions, ServiceId serviceId, - ContextId contextId) { + List<String> deviceIds) { this.policyRuleId = policyRuleId; this.policyRuleType = policyRuleType; - this.policyRulePriority = policyRulePriority; - this.policyRuleEvent = policyRuleEvent; - this.policyRuleCondition = policyRuleCondition; - this.policyRuleAction = policyRuleAction; + this.priority = priority; + this.event = event; + this.policyRuleConditions = policyRuleConditions; + this.booleanOperator = booleanOperator; + this.policyRuleActions = policyRuleActions; this.serviceId = serviceId; - this.contextId = contextId; + this.deviceIds = deviceIds; } - public PolicyRuleId getPolicyRuleId() { + public String getPolicyRuleId() { return policyRuleId; } @@ -57,27 +61,51 @@ public class PolicyRule { return policyRuleType; } - public PolicyRulePriority getPolicyRulePriority() { - return policyRulePriority; + public int getPriority() { + return priority; } - public PolicyRuleEvent getPolicyRuleEvent() { - return policyRuleEvent; + public PolicyRuleEvent getEvent() { + return event; } - public PolicyRuleCondition getPolicyRuleCondition() { - return policyRuleCondition; + public List<PolicyRuleCondition> getPolicyRuleConditions() { + return policyRuleConditions; } - public PolicyRuleAction getPolicyRuleAction() { - return policyRuleAction; + public BooleanOperator getBooleanOperator() { + return booleanOperator; + } + + public List<PolicyRuleAction> getPolicyRuleActions() { + return policyRuleActions; } public ServiceId getServiceId() { return serviceId; } - public ContextId getContextId() { - return contextId; + public List<String> getDeviceIds() { + return deviceIds; + } + + @Override + public String toString() { + return String.format( + "%s:{policyRuleId:\"%s\", policyRuleType:\"%s\", priority:%d, %s, [%s], booleanOperator:\"%s\", [%s], %s, [%s]}", + getClass().getSimpleName(), + policyRuleId, + policyRuleType.toString(), + priority, + event, + toString(policyRuleConditions), + booleanOperator.toString(), + toString(policyRuleActions), + serviceId, + toString(deviceIds)); + } + + private <T> String toString(List<T> list) { + return list.stream().map(T::toString).collect(Collectors.joining(", ")); } } diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java index 8592262aea9b8a82aaef9a348b7e215958414705..baa19cb8d0016895de9d5eccf5bd0e36d9659b61 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java +++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleAction.java @@ -16,22 +16,36 @@ package eu.teraflow.policy.model; +import java.util.List; +import java.util.stream.Collectors; + public class PolicyRuleAction { - private final PolicyRuleVariable policyRuleVariable; - private final PolicyRuleValue policyRuleValue; + private final PolicyRuleActionEnum policyRuleActionEnum; + private final List<String> parameters; + + public PolicyRuleAction(PolicyRuleActionEnum policyRuleActionEnum, List<String> parameters) { - public PolicyRuleAction(PolicyRuleVariable policyRuleVariable, PolicyRuleValue policyRuleValue) { + this.policyRuleActionEnum = policyRuleActionEnum; + this.parameters = parameters; + } + + public PolicyRuleActionEnum getPolicyRuleActionEnum() { + return policyRuleActionEnum; + } - this.policyRuleVariable = policyRuleVariable; - this.policyRuleValue = policyRuleValue; + public List<String> getPolicyRuleActionParameters() { + return parameters; } - public PolicyRuleVariable getPolicyRuleVariable() { - return policyRuleVariable; + @Override + public String toString() { + return String.format( + "%s:{policyRuleActionEnum:\"%s\", [%s]}", + getClass().getSimpleName(), policyRuleActionEnum.toString(), toString(parameters)); } - public PolicyRuleValue getPolicyRuleValue() { - return policyRuleValue; + private <T> String toString(List<T> list) { + return list.stream().map(T::toString).collect(Collectors.joining(", ")); } } diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..317daa02939bfe21c267b758999bae9d20f294af --- /dev/null +++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleActionEnum.java @@ -0,0 +1,8 @@ +package eu.teraflow.policy.model; + +public enum PolicyRuleActionEnum { + POLICY_RULE_ACTION_NO_ACTION, + POLICY_RULE_ACTION_SET_DEVICE_STATUS, + POLICY_RULE_ACTION_ADD_SERVICE_CONFIGRULE, + POLICY_RULE_ACTION_ADD_SERVICE_CONSTRAINT +} diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java index 22d65124c44be3ba1b93683c009860a6dc223da4..714cc5582cce4ce3e606851acb2f2f2b62614e29 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java +++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleCondition.java @@ -16,23 +16,36 @@ package eu.teraflow.policy.model; +import eu.teraflow.policy.monitoring.model.KpiValue; + public class PolicyRuleCondition { - private final PolicyRuleVariable policyRuleVariable; - private final PolicyRuleValue policyRuleValue; + private final String kpiId; + private final NumericalOperator numericalOperator; + private final KpiValue<?> kpiValue; + + public PolicyRuleCondition(String kpiId, NumericalOperator numericalOperator, KpiValue kpiValue) { + this.kpiId = kpiId; + this.numericalOperator = numericalOperator; + this.kpiValue = kpiValue; + } - public PolicyRuleCondition( - PolicyRuleVariable policyRuleVariable, PolicyRuleValue policyRuleValue) { + public String getKpiId() { + return kpiId; + } - this.policyRuleVariable = policyRuleVariable; - this.policyRuleValue = policyRuleValue; + public NumericalOperator getNumericalOperator() { + return numericalOperator; } - public PolicyRuleVariable getPolicyRuleVariable() { - return policyRuleVariable; + public KpiValue getKpiValue() { + return kpiValue; } - public PolicyRuleValue getPolicyRuleValue() { - return policyRuleValue; + @Override + public String toString() { + return String.format( + "%s:{kpiId:\"%s\", numericalOperator:\"%s\", %s}", + getClass().getSimpleName(), kpiId, numericalOperator.toString(), kpiValue); } } diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleEvent.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleEvent.java index 476d1948215f502d7791ca95648e6a2089aa9434..412c6c7183250aae26de75a945bf57164634bc32 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleEvent.java +++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleEvent.java @@ -29,4 +29,9 @@ public class PolicyRuleEvent { public Event getEvent() { return event; } + + @Override + public String toString() { + return String.format("%s:{%s}", getClass().getSimpleName(), event); + } } diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleId.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleId.java deleted file mode 100644 index cc95d9e5d6ecd6ff583b68dbed5236eee26e8348..0000000000000000000000000000000000000000 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleId.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package eu.teraflow.policy.model; - -import eu.teraflow.policy.context.model.Uuid; - -public class PolicyRuleId { - - private final Uuid policyRuleId; - - public PolicyRuleId(Uuid policyRuleId) { - this.policyRuleId = policyRuleId; - } - - public Uuid getPolicyRuleId() { - return policyRuleId; - } -} diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRulePriority.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRulePriority.java deleted file mode 100644 index c85bb9a3657265ca28e195cf4477c9ce6fd43df2..0000000000000000000000000000000000000000 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRulePriority.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package eu.teraflow.policy.model; - -public class PolicyRulePriority { - - private final int policyRulePriority; - - public PolicyRulePriority(int policyRulePriority) { - this.policyRulePriority = policyRulePriority; - } - - public int getPolicyRulePriority() { - return policyRulePriority; - } -} diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java index 43b93403073fcc78a614b721bd4a169894322841..38ee0a73b187420cfdd3f0bd7527d5196d7bad9f 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java +++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleState.java @@ -16,23 +16,28 @@ package eu.teraflow.policy.model; -import eu.teraflow.policy.context.model.Uuid; - public class PolicyRuleState { - private final Uuid policeRuleId; + private final String policeRuleId; private final RuleState ruleState; - public PolicyRuleState(Uuid policeRuleId, RuleState ruleState) { + public PolicyRuleState(String policeRuleId, RuleState ruleState) { this.policeRuleId = policeRuleId; this.ruleState = ruleState; } - public Uuid getPolicyRuleId() { + public String getPolicyRuleId() { return policeRuleId; } public RuleState getRuleState() { return ruleState; } + + @Override + public String toString() { + return String.format( + "%s:{policeRuleId:\"%s\", ruleState:\"%s\"}", + getClass().getSimpleName(), policeRuleId, ruleState); + } } diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java index 6becad243c2ab3d0bbe4cdb3a943fc0ab2ad9bd3..321220176adb7a336870b4845d3883e367c12078 100644 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java +++ b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleType.java @@ -17,6 +17,6 @@ package eu.teraflow.policy.model; public enum PolicyRuleType { - DEVICE, - NETWORK + POLICYTYPE_DEVICE, + POLICYTYPE_NETWORK } diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleValue.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleValue.java deleted file mode 100644 index 9a928c4a22158ec2691acc4486ea9acd21ff28f8..0000000000000000000000000000000000000000 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleValue.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package eu.teraflow.policy.model; - -public class PolicyRuleValue { - - private final String policyRuleValue; - - public PolicyRuleValue(String policyRuleValue) { - this.policyRuleValue = policyRuleValue; - } - - public String getPolicyRuleValue() { - return policyRuleValue; - } -} diff --git a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleVariable.java b/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleVariable.java deleted file mode 100644 index fa35d270a7cd00ec9772f6d3678d38f67972eea5..0000000000000000000000000000000000000000 --- a/src/policy/src/main/java/eu/teraflow/policy/model/PolicyRuleVariable.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/) -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package eu.teraflow.policy.model; - -public class PolicyRuleVariable { - - private final String policyRuleVariable; - - public PolicyRuleVariable(String policyRuleVariable) { - this.policyRuleVariable = policyRuleVariable; - } - - public String getPolicyRuleVariable() { - return policyRuleVariable; - } -}