Add new delete policy endpoint 15/118715/1
authorsebdet <sebastien.determe@intl.att.com>
Tue, 23 Feb 2021 13:51:54 +0000 (14:51 +0100)
committerLiam Fallon <liam.fallon@est.tech>
Thu, 4 Mar 2021 08:17:54 +0000 (08:17 +0000)
Refactor the camel code so that the policy delete can be called "by loop" related flows and "by policy only" related flows.
A new endpoint for policy deletion has been added as well. This one will be called by the UI

Issue-ID: POLICY-2927
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
Change-Id: I3c4bd2e22200788360575aa61a0122b7ed4e608d
(cherry picked from commit f12066418c402d3a7fe34667a9fc87295a347b8a)

src/main/resources/clds/camel/rest/clamp-api-v2.xml
src/main/resources/clds/camel/routes/policy-flows.xml

index f924a8a..01ad8a8 100644 (file)
                         <setProperty propertyName="raiseHttpExceptionFlag">
                             <simple resultType="java.lang.Boolean">false</simple>
                         </setProperty>
-                        <to uri="direct:delete-policy"/>
+                        <to uri="direct:delete-policy-from-loop-object"/>
                         <to uri="direct:create-policy"/>
                     </split>
                     <log loggingLevel="INFO"
                             <simple resultType="java.lang.Boolean">false</simple>
                         </setProperty>
 
-                        <to uri="direct:delete-policy"/>
+                        <to uri="direct:delete-policy-from-loop-object"/>
                         <to uri="direct:create-policy"/>
                     </split>
 
                         <setProperty propertyName="raiseHttpExceptionFlag">
                             <simple resultType="java.lang.Boolean">false</simple>
                         </setProperty>
-                        <to uri="direct:delete-policy"/>
+                        <to uri="direct:delete-policy-from-loop-object"/>
                     </split>
                     <log loggingLevel="INFO"
                          message="Deleting all OPERATIONAL policies defined in loop ${exchangeProperty[loopObject].getName()}"/>
                         <setProperty propertyName="raiseHttpExceptionFlag">
                             <simple resultType="java.lang.Boolean">false</simple>
                         </setProperty>
-                        <to uri="direct:delete-policy"/>
+                        <to uri="direct:delete-policy-from-loop-object"/>
                     </split>
                     <to
                             uri="bean:org.onap.policy.clamp.loop.LoopController?method=deleteLoop(${header.loopName})"/>
                     <setProperty propertyName="raiseHttpExceptionFlag">
                         <simple resultType="java.lang.Boolean">false</simple>
                     </setProperty>
-                    <to uri="direct:delete-policy"/>
+                    <to uri="direct:delete-policy-from-loop-object"/>
                     <to
                             uri="bean:org.onap.policy.clamp.loop.LoopController?method=removeOperationalPolicy(${header.loopName},${header.policyType},${header.policyVersion})"/>
                     <to
             </route>
         </post>
 
+        <delete uri="/v2/policies/{policyModelType}/{policyModelVersion}/{policyName}/{policyVersion}">
+            <route>
+                <removeHeaders pattern="*"
+                               excludePattern="policyModelType|policyModelVersion|policyName|policyVersion"/>
+                <doTry>
+                    <to
+                            uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=startLog(*, 'DELETE a Policy ')"/>
+                    <to
+                            uri="bean:org.onap.policy.clamp.authorization.AuthorizationController?method=authorize(*,'policies','','update')"/>
+                    <setProperty propertyName="policyModelType">
+                        <simple>${header.policyModelType}</simple>
+                    </setProperty>
+                    <setProperty propertyName="policyModelVersion">
+                        <simple>${header.policyModelVersion}</simple>
+                    </setProperty>
+                    <setProperty propertyName="policyName">
+                        <simple>${header.policyName}</simple>
+                    </setProperty>
+                    <setProperty propertyName="policyVersion">
+                        <simple>${header.policyVersion}</simple>
+                    </setProperty>
+                    <setProperty propertyName="raiseHttpExceptionFlag">
+                        <simple resultType="java.lang.Boolean">false</simple>
+                    </setProperty>
+                    <to uri="direct:undeploy-one-policy-from-pap"/>
+                    <to uri="direct:delete-policy"/>
+                    <to
+                            uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=endLog()"/>
+                    <doCatch>
+                        <exception>java.lang.Exception</exception>
+                        <handled>
+                            <constant>true</constant>
+                        </handled>
+                        <to
+                                uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=errorLog()"/>
+                        <log loggingLevel="ERROR"
+                             message="DELETE Policy request failed for policy: ${header.policyName}/${header.policyVersion}, ${exception.stacktrace}"/>
+                        <setHeader headerName="CamelHttpResponseCode">
+                            <constant>500</constant>
+                        </setHeader>
+                        <setBody>
+                            <simple>DELETE Policy FAILED</simple>
+                        </setBody>
+                    </doCatch>
+                </doTry>
+            </route>
+        </delete>
+
         <get uri="/v2/clampInformation" outType="org.onap.policy.clamp.clds.model.ClampInformation"
              produces="application/json">
             <to
index 0a9c1f5..f9f2b1d 100644 (file)
         </doTry>
     </route>
 
-    <route id="delete-policy">
-        <from uri="direct:delete-policy"/>
+    <route id="delete-policy-from-loop-object">
+        <from uri="direct:delete-policy-from-loop-object"/>
         <doTry>
             <log loggingLevel="INFO"
-                 message="Deleting Policy: ${exchangeProperty[policy].getName()}"/>
+                 message="Deleting Policy in a loop: ${exchangeProperty[policy].getName()}"/>
             <to
-                    uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete Policy')"/>
-            <setBody>
-                <constant>null</constant>
-            </setBody>
-            <setHeader headerName="CamelHttpMethod">
-                <constant>DELETE</constant>
-            </setHeader>
-            <setHeader headerName="X-ONAP-RequestID">
-                <simple>${exchangeProperty[X-ONAP-RequestID]}
-                </simple>
-            </setHeader>
-            <setHeader headerName="X-ONAP-InvocationID">
-                <simple>${exchangeProperty[X-ONAP-InvocationID]}
-                </simple>
-            </setHeader>
-            <setHeader headerName="X-ONAP-PartnerName">
-                <simple>${exchangeProperty[X-ONAP-PartnerName]}
-                </simple>
-            </setHeader>
+                    uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete Policy in a loop')"/>
+            <setProperty propertyName="policyModelType">
+                <simple>${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}</simple>
+            </setProperty>
+            <setProperty propertyName="policyModelVersion">
+                <simple>${exchangeProperty[policy].getPolicyModel().getVersion()</simple>
+            </setProperty>
+            <setProperty propertyName="policyName">
+                <simple>${exchangeProperty[policy].getName()}</simple>
+            </setProperty>
             <setProperty propertyName="policyVersion">
                 <simple>1.0.0</simple>
             </setProperty>
-            <log loggingLevel="INFO"
-                 message="Endpoint to delete policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies/${exchangeProperty[policy].getName()}/versions/${exchangeProperty[policyVersion]}"></log>
-            <toD
-                    uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policy].getPolicyModel().getPolicyModelType()}/versions/${exchangeProperty[policy].getPolicyModel().getVersion()}/policies/${exchangeProperty[policy].getName()}/versions/${exchangeProperty[policyVersion]}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true"/>
-
+            <to uri="direct:delete-policy"/>
             <doFinally>
-                <to uri="direct:reset-raise-http-exception-flag"/>
                 <to
                         uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()"/>
                 <setProperty propertyName="logMessage">
             </doFinally>
         </doTry>
     </route>
+    <route id="delete-policy">
+        <from uri="direct:delete-policy"/>
+        <doTry>
+            <log loggingLevel="INFO"
+                 message="Deleting Policy: ${exchangeProperty[policyName]}"/>
+            <to
+                    uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Delete Policy')"/>
+            <setBody>
+                <constant>null</constant>
+            </setBody>
+            <setHeader headerName="CamelHttpMethod">
+                <constant>DELETE</constant>
+            </setHeader>
+            <setHeader headerName="X-ONAP-RequestID">
+                <simple>${exchangeProperty[X-ONAP-RequestID]}
+                </simple>
+            </setHeader>
+            <setHeader headerName="X-ONAP-InvocationID">
+                <simple>${exchangeProperty[X-ONAP-InvocationID]}
+                </simple>
+            </setHeader>
+            <setHeader headerName="X-ONAP-PartnerName">
+                <simple>${exchangeProperty[X-ONAP-PartnerName]}
+                </simple>
+            </setHeader>
+            <log loggingLevel="INFO"
+                 message="Endpoint to delete policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyModelType]}/versions/${exchangeProperty[policyModelVersion]}/policies/${exchangeProperty[policyName]}/versions/${exchangeProperty[policyVersion]}"></log>
+            <toD
+                    uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[policyModelType]}/versions/${exchangeProperty[policyModelVersion]}/policies/${exchangeProperty[policyName]}/versions/${exchangeProperty[policyVersion]}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=20000&amp;authenticationPreemptive=true&amp;connectionClose=true"/>
+
+            <doFinally>
+                <to uri="direct:reset-raise-http-exception-flag"/>
+                <to
+                        uri="bean:org.onap.policy.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()"/>
+            </doFinally>
+        </doTry>
+    </route>
 </routes>
\ No newline at end of file