diff options
-rw-r--r-- | src/main/java/org/onap/clamp/loop/Loop.java | 35 | ||||
-rw-r--r-- | src/main/resources/clds/camel/rest/clamp-api-v2.xml | 73 | ||||
-rw-r--r-- | src/main/resources/clds/camel/routes/flexible-flow.xml | 78 |
3 files changed, 136 insertions, 50 deletions
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index 83f938dde..0041c589e 100644 --- a/src/main/java/org/onap/clamp/loop/Loop.java +++ b/src/main/java/org/onap/clamp/loop/Loop.java @@ -29,7 +29,9 @@ import com.google.gson.JsonObject; import com.google.gson.annotations.Expose; import java.io.Serializable; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; import javax.persistence.CascadeType; @@ -259,28 +261,43 @@ public class Loop implements Serializable { return buffer.toString().replace('.', '_').replaceAll(" ", ""); } + /** + * Generates the Json that must be sent to policy to add all policies to Active + * PDP group. + * + * @return The json, payload to send + */ public String createPoliciesPayloadPdpGroup() { JsonObject jsonObject = new JsonObject(); JsonArray jsonArray = new JsonArray(); jsonObject.add("policies", jsonArray); - for (OperationalPolicy opPolicy : this.getOperationalPolicies()) { + for (String policyName : this.listPolicyNamesPdpGroup()) { JsonObject policyNode = new JsonObject(); jsonArray.add(policyNode); - policyNode.addProperty("policy-id", opPolicy.getName()); + policyNode.addProperty("policy-id", policyName); + } + return new GsonBuilder().setPrettyPrinting().create().toJson(jsonObject); + } + /** + * Generates the list of policy names that must be send/remove to/from active + * PDP group. + * + * @return A list of policy names + */ + public List<String> listPolicyNamesPdpGroup() { + List<String> policyNamesList = new ArrayList<>(); + for (OperationalPolicy opPolicy : this.getOperationalPolicies()) { + policyNamesList.add(opPolicy.getName()); for (String guardName : opPolicy.createGuardPolicyPayloads().keySet()) { - JsonObject guardPolicyNode = new JsonObject(); - jsonArray.add(guardPolicyNode); - guardPolicyNode.addProperty("policy-id", guardName); + policyNamesList.add(guardName); } } for (MicroServicePolicy microServicePolicy : this.getMicroServicePolicies()) { - JsonObject policyNode = new JsonObject(); - jsonArray.add(policyNode); - policyNode.addProperty("policy-id", microServicePolicy.getName()); + policyNamesList.add(microServicePolicy.getName()); } - return new GsonBuilder().setPrettyPrinting().create().toJson(jsonObject); + return policyNamesList; } @Override diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml index ffa4719f0..e6dc27cec 100644 --- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml +++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml @@ -43,8 +43,14 @@ <route> <to uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" /> + <setHeader headerName="GlobalPropertiesJson"> + <simple>${body}</simple> + </setHeader> + <to uri="direct:load-loop" /> + <to + uri="bean:org.onap.clamp.loop.LoopController?method=updateGlobalPropertiesJson(${header.loopName},${header.GlobalPropertiesJson})" /> <to - uri="bean:org.onap.clamp.loop.LoopController?method=updateGlobalPropertiesJson(${header.loopName},${body})" /> + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Global Properties UPDATED','INFO',${header.LoopObject})" /> </route> </post> <post @@ -56,8 +62,14 @@ <route> <to uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" /> + <setHeader headerName="OperationalPoliciesArray"> + <simple>${body}</simple> + </setHeader> + <to uri="direct:load-loop" /> <to - uri="bean:org.onap.clamp.loop.LoopController?method=updateOperationalPolicies(${header.loopName},${body})" /> + uri="bean:org.onap.clamp.loop.LoopController?method=updateOperationalPolicies(${header.loopName},${header.OperationalPoliciesArray})" /> + <to + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Operational and Guard policies UPDATED','INFO',${header.LoopObject})" /> </route> </post> <post @@ -69,8 +81,15 @@ <route> <to uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" /> + <setHeader headerName="MicroServicePolicyObject"> + <simple>${body}</simple> + </setHeader> + + <to uri="direct:load-loop" /> <to - uri="bean:org.onap.clamp.loop.LoopController?method=updateMicroservicePolicy(${header.loopName},${body})" /> + uri="bean:org.onap.clamp.loop.LoopController?method=updateMicroservicePolicy(${header.loopName},${header.MicroServicePolicyObject})" /> + <to + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Micro Service policies UPDATED','INFO',${header.LoopObject})" /> </route> </post> <put @@ -95,19 +114,23 @@ uri="bean:org.onap.clamp.operation.LoopOperation?method=unDeployLoop(${header.loopName})" /> </route> </put> - <put uri="/v2/loop/submit/{loopName}"> + <put + uri="/v2/loop/submit/{loopName}" + outType="org.onap.clamp.loop.Loop" + produces="application/json"> <route> <log loggingLevel="INFO" message="Receive SUBMIT request for loop: ${header.loopName}" /> <to uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" /> - <setBody> - <simple>${header.loopName}</simple> - </setBody> <to uri="direct:load-loop" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Receive SUBMIT request','INFO',${header.LoopObject})" /> + <setHeader headerName="RaiseHttpExceptionFlag"> + <simple resultType="java.lang.Boolean">false</simple> + </setHeader> + <to uri="direct:remove-all-policy-from-active-pdp-group" /> <log loggingLevel="INFO" message="Processing all MICRO-SERVICES policies defined in loop ${header.LoopObject.getName()}" /> @@ -125,9 +148,6 @@ </setHeader> <to uri="direct:delete-micro-service-policy" /> - <setHeader headerName="RaiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">true</simple> - </setHeader> <to uri="direct:create-micro-service-policy" /> </split> @@ -148,9 +168,6 @@ </setHeader> <to uri="direct:delete-operational-policy" /> - <setHeader headerName="RaiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">true</simple> - </setHeader> <to uri="direct:create-operational-policy" /> <log loggingLevel="INFO" @@ -170,22 +187,18 @@ </setHeader> <to uri="direct:delete-guard-policy" /> - <setHeader headerName="RaiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">true</simple> - </setHeader> <to uri="direct:create-guard-policy" /> </split> </split> - <setHeader headerName="RaiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">true</simple> - </setHeader> - <to uri="direct:create-pdp-group-policy" /> - + <to uri="direct:add-all-to-active-pdp-group" /> + <log loggingLevel="INFO" message="SUBMIT request successfully executed for loop: ${body}" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('SUBMIT request successfully executed','INFO',${header.LoopObject})" /> + <to + uri="bean:org.onap.clamp.loop.LoopController?method=getLoop(${header.loopName})" /> </route> </put> <put uri="/v2/loop/delete/{loopName}"> @@ -195,12 +208,10 @@ message="Receive DELETE request for loop: ${header.loopName}" /> <to uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" /> - <setBody> - <simple>${header.loopName}</simple> - </setBody> <to uri="direct:load-loop" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Receive DELETE request','INFO',${header.LoopObject})" /> + <to uri="direct:remove-all-policy-from-active-pdp-group" /> <split> <simple>${header.LoopObject.getMicroServicePolicies()} </simple> @@ -210,9 +221,7 @@ <log loggingLevel="INFO" message="Processing Micro Service Policy: ${header.microServicePolicy.getName()}" /> - <setHeader headerName="RaiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">true</simple> - </setHeader> + <to uri="direct:delete-micro-service-policy" /> </split> @@ -228,9 +237,7 @@ <log loggingLevel="INFO" message="Processing Operational Policy: ${header.operationalPolicy.getName()}" /> - <setHeader headerName="RaiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">true</simple> - </setHeader> + <to uri="direct:delete-operational-policy" /> <log loggingLevel="INFO" @@ -245,13 +252,11 @@ loggingLevel="INFO" message="Processing Guard Policy: ${header.guardPolicy.getKey()}" /> - <setHeader headerName="RaiseHttpExceptionFlag"> - <simple resultType="java.lang.Boolean">true</simple> - </setHeader> <to uri="direct:delete-guard-policy" /> </split> </split> - <to uri="bean:org.onap.clamp.loop.log.LoopService?method=deleteLoop(${header.loopName})" /> + <to + uri="bean:org.onap.clamp.loop.log.LoopService?method=deleteLoop(${header.loopName})" /> <log loggingLevel="INFO" message="DELETE request successfully executed for loop: ${body}" /> diff --git a/src/main/resources/clds/camel/routes/flexible-flow.xml b/src/main/resources/clds/camel/routes/flexible-flow.xml index 1f3e01e27..3e69fa44a 100644 --- a/src/main/resources/clds/camel/routes/flexible-flow.xml +++ b/src/main/resources/clds/camel/routes/flexible-flow.xml @@ -78,6 +78,9 @@ <route id="load-loop"> <from uri="direct:load-loop" /> + <setBody> + <simple>${header.loopName}</simple> + </setBody> <setHeader headerName="LoopObject"> <method ref="org.onap.clamp.loop.LoopService" @@ -94,11 +97,11 @@ message="Loop not found in database: ${body}" /> <stop /> </when> - </route> <route id="create-micro-service-policy"> <from uri="direct:create-micro-service-policy" /> + <to uri="direct:check-raise-http-exception-flag" /> <log loggingLevel="INFO" message="Creating Micro Service Policy: ${header.microServicePolicy.getName()}" /> @@ -123,9 +126,11 @@ uri="http4://policyhost:8085?throwExceptionOnFailure=${header.RaiseHttpExceptionFlag}&httpClient.connectTimeout=10000&authUsername={{clamp.config.policy.userName}}&authPassword={{clamp.config.policy.password}}" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('MicroService policy created successfully','INFO',${header.LoopObject})" /> + <to uri="direct:reset-raise-http-exception-flag" /> </route> <route id="delete-micro-service-policy"> <from uri="direct:delete-micro-service-policy" /> + <to uri="direct:check-raise-http-exception-flag" /> <log loggingLevel="INFO" message="Deleting Micro Service Policy: ${header.microServicePolicy.getName()}" /> @@ -146,10 +151,12 @@ uri="http4://policyhost:8085?throwExceptionOnFailure=${header.RaiseHttpExceptionFlag}&httpClient.connectTimeout=10000&deleteWithBody=false&mapHttpMessageBody=false&mapHttpMessageFormUrlEncodedBody=false&authUsername={{clamp.config.policy.userName}}&authPassword={{clamp.config.policy.password}}" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('MicroService policy deleted successfully','INFO',${header.LoopObject})" /> + <to uri="direct:reset-raise-http-exception-flag" /> </route> <route id="create-operational-policy"> <from uri="direct:create-operational-policy" /> + <to uri="direct:check-raise-http-exception-flag" /> <log loggingLevel="INFO" message="Creating Operational Policy: ${header.operationalPolicy.getName()}" /> @@ -174,9 +181,11 @@ uri="http4://policyhost:8085?throwExceptionOnFailure=${header.RaiseHttpExceptionFlag}&httpClient.connectTimeout=10000&authUsername={{clamp.config.policy.userName}}&authPassword={{clamp.config.policy.password}}" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Operational policy created successfully','INFO',${header.LoopObject})" /> + <to uri="direct:reset-raise-http-exception-flag" /> </route> <route id="delete-operational-policy"> <from uri="direct:delete-operational-policy" /> + <to uri="direct:check-raise-http-exception-flag" /> <log loggingLevel="INFO" message="Deleting Operational Policy: ${header.operationalPolicy.getName()}" /> @@ -197,10 +206,12 @@ uri="http4://policyhost:8085?throwExceptionOnFailure=${header.RaiseHttpExceptionFlag}&httpClient.connectTimeout=10000&deleteWithBody=false&mapHttpMessageBody=false&mapHttpMessageFormUrlEncodedBody=false&authUsername={{clamp.config.policy.userName}}&authPassword={{clamp.config.policy.password}}" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Operational policy deleted successfully','INFO',${header.LoopObject})" /> + <to uri="direct:reset-raise-http-exception-flag" /> </route> <route id="create-guard-policy"> <from uri="direct:create-guard-policy" /> + <to uri="direct:check-raise-http-exception-flag" /> <log loggingLevel="INFO" message="Creating Guard Policy: ${header.guardPolicy.getKey()}" /> @@ -225,9 +236,11 @@ uri="http4://policyhost:8085?throwExceptionOnFailure=${header.RaiseHttpExceptionFlag}&httpClient.connectTimeout=10000&authUsername={{clamp.config.policy.userName}}&authPassword={{clamp.config.policy.password}}" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Guard policy created successfully','INFO',${header.LoopObject})" /> + <to uri="direct:reset-raise-http-exception-flag" /> </route> <route id="delete-guard-policy"> <from uri="direct:delete-guard-policy" /> + <to uri="direct:check-raise-http-exception-flag" /> <log loggingLevel="INFO" message="Deleting Guard Policy: ${header.guardPolicy.getKey()}" /> @@ -248,13 +261,14 @@ uri="http4://policyhost:8085?throwExceptionOnFailure=${header.RaiseHttpExceptionFlag}&httpClient.connectTimeout=10000&deleteWithBody=false&mapHttpMessageBody=false&mapHttpMessageFormUrlEncodedBody=false&authUsername={{clamp.config.policy.userName}}&authPassword={{clamp.config.policy.password}}" /> <to uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Guard policy deleted successfully','INFO',${header.LoopObject})" /> + <to uri="direct:reset-raise-http-exception-flag" /> </route> - - <route id="create-pdp-group-policy"> - <from uri="direct:create-pdp-group-policy" /> + <route id="add-all-to-active-pdp-group"> + <from uri="direct:add-all-to-active-pdp-group" /> + <to uri="direct:check-raise-http-exception-flag" /> <log loggingLevel="INFO" - message="Creating PDP Group Policy: ${header.guardPolicy.getKey()}" /> + message="Adding loop policies to PDP Group: ${header.LoopObject.getName()}" /> <setBody> <simple>${header.LoopObject.createPoliciesPayloadPdpGroup()} </simple> @@ -271,10 +285,60 @@ </setHeader> <log loggingLevel="INFO" - message="Endpoint to create PDP Group policy: ${header.CamelHttpMethod} ${header.CamelHttpUri}"></log> + message="Endpoint to add policies to PDP Group: ${header.CamelHttpMethod} ${header.CamelHttpUri}"></log> <toD uri="http4://policyhost:8085?throwExceptionOnFailure=${header.RaiseHttpExceptionFlag}&httpClient.connectTimeout=10000&authUsername={{clamp.config.policy.userName}}&authPassword={{clamp.config.policy.password}}" /> <to - uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Pdp Group created successfully','INFO',${header.LoopObject})" /> + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Policies pushed to PDP Group successfully','INFO',${header.LoopObject})" /> + <to uri="direct:reset-raise-http-exception-flag" /> + </route> + + <route id="remove-all-policy-from-active-pdp-group"> + <from uri="direct:remove-all-policy-from-active-pdp-group" /> + <to uri="direct:check-raise-http-exception-flag" /> + <log + loggingLevel="INFO" + message="Removing policies from active PDP group for loop: ${header.LoopObject.getName()}" /> + <split> + <simple>${header.LoopObject.listPolicyNamesPdpGroup()}</simple> + <setHeader headerName="PolicyName"> + <simple>${body}</simple> + </setHeader> + <setBody> + <constant>null</constant> + </setBody> + <setHeader headerName="CamelHttpMethod"> + <constant>DELETE</constant> + </setHeader> + <setHeader headerName="CamelHttpUri"> + <simple>{{clamp.config.policy.url}}/pdps/policies/${header.PolicyName}/versions/1.0.0 + </simple> + </setHeader> + <log + loggingLevel="INFO" + message="Endpoint to delete policy from PDP Group: ${header.CamelHttpMethod} ${header.CamelHttpUri}"></log> + <toD + uri="http4://policyhost:8085?throwExceptionOnFailure=${header.RaiseHttpExceptionFlag}&httpClient.connectTimeout=10000&authUsername={{clamp.config.policy.userName}}&authPassword={{clamp.config.policy.password}}" /> + <to + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog(${header.PolicyName}' Policy removed from PDP Group successfully','INFO',${header.LoopObject})" /> + </split> + <to uri="direct:reset-raise-http-exception-flag" /> + </route> + + <route id="check-raise-http-exception-flag"> + <from uri="direct:check-raise-http-exception-flag" /> + <when> + <simple>${header.RaiseHttpExceptionFlag} == null</simple> + <setHeader headerName="RaiseHttpExceptionFlag"> + <simple resultType="java.lang.Boolean">true</simple> + </setHeader> + </when> + </route> + + <route id="reset-raise-http-exception-flag"> + <from uri="direct:reset-raise-http-exception-flag" /> + <setHeader headerName="RaiseHttpExceptionFlag"> + <constant>null</constant> + </setHeader> </route> </routes>
\ No newline at end of file |