Add a DG for PNF software rollback action 51/83451/2
authorEnbo Wang <wangenbo@huawei.com>
Wed, 27 Mar 2019 09:23:09 +0000 (09:23 +0000)
committerEnbo Wang <wangenbo@huawei.com>
Wed, 27 Mar 2019 09:47:22 +0000 (09:47 +0000)
Add a DG for LCM:rollback action to support PNF software rollback.

Change-Id: Id82e1dc20a0792713fb079ea302f7d71e2949fc8
Issue-ID: SDNC-670
Signed-off-by: Enbo Wang <wangenbo@huawei.com>
Former-commit-id: 90cd373ebe1409b523b6fd64a436199a66d2bd97

installation/src/main/properties/lcm-dg.properties
platform-logic/lcm/src/main/json/LCM_rollback.json [new file with mode: 0644]
platform-logic/lcm/src/main/resources/graph.versions
platform-logic/lcm/src/main/xml/LCM_rollback.xml [new file with mode: 0644]

index 3c6920e..53cecfb 100644 (file)
@@ -9,9 +9,11 @@ ansible.version=0.00
 lcm.upgrade-pre-check.playbookname=ansible_precheck
 lcm.upgrade-post-check.playbookname=ansible_postcheck
 lcm.upgrade-software.playbookname=ansible_upgradesw
+lcm.rollback.playbookname=ansible_rollback
 lcm.pnf.upgrade-pre-check.playbookname=ansible_precheck_pnf
 lcm.pnf.upgrade-post-check.playbookname=ansible_postcheck_pnf
 lcm.pnf.upgrade-software.playbookname=ansible_upgradesw_pnf
+lcm.pnf.rollback.playbookname=ansible_rollback_pnf
 lcm.quiesce-traffic.playbookname=ansible_quiescetraffic
 lcm.resume-traffic.playbookname=ansible_resumetraffic
 lcm.distribute-traffic.playbookname=ansible_distributetraffic
diff --git a/platform-logic/lcm/src/main/json/LCM_rollback.json b/platform-logic/lcm/src/main/json/LCM_rollback.json
new file mode 100644 (file)
index 0000000..96adf3f
--- /dev/null
@@ -0,0 +1,702 @@
+[\r
+    {\r
+        "id": "367cac6c.e28ad4",\r
+        "type": "method",\r
+        "name": "rollback",\r
+        "xml": "<method rpc='rollback' mode='sync'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 606,\r
+        "y": 73,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "397a12a.10f34ee"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "b7a7c5dd.d286a8",\r
+        "type": "service-logic",\r
+        "name": "LCM ${project.version}",\r
+        "module": "LCM",\r
+        "version": "${project.version}",\r
+        "comments": "",\r
+        "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='LCM' version='${project.version}'>",\r
+        "outputs": 1,\r
+        "x": 393.99993896484375,\r
+        "y": 74,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "367cac6c.e28ad4"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "2749994d.fe16d6",\r
+        "type": "execute",\r
+        "name": "execute AnsibleA.reqExec",\r
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExec' >\n<parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>\n<parameter name='User' value='`$prop.ansible.user`'/>\n<parameter name='Password' value='`$prop.ansible.password`'/>\n<parameter name='LocalParameters' value='`$prop.ansible.lcm.localparameters`'/>\n<parameter name='EnvParameters' value='`$rollback-input.payload`'/>\n<parameter name='NodeList' value=\"`$nodelist`\"/>\n<parameter name='Timeout' value='`$prop.ansible.timeout`'/>\n<parameter name='Version' value='`$prop.ansible.version`'/>\n<parameter name='Id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 461.00001525878906,\r
+        "y": 681,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "d80c72ca.e0d3b",\r
+                "3b639a7b.0ca876",\r
+                "f4b3d5c4.d9b698"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "3f74fb5f.f66a64",\r
+        "type": "switchNode",\r
+        "name": "switch",\r
+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 860.9999389648438,\r
+        "y": 789.0000305175781,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "5e7ae3c.af98c1c",\r
+                "80745976.4dae58",\r
+                "2d735711.50c158"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "5e7ae3c.af98c1c",\r
+        "type": "other",\r
+        "name": "outcome 500",\r
+        "xml": "<outcome value='500'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1005.9999389648438,\r
+        "y": 787.0000381469727,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "c157f020.8fa16"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "80745976.4dae58",\r
+        "type": "other",\r
+        "name": "outcome 100",\r
+        "xml": "<outcome value='100'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1002.9999389648438,\r
+        "y": 844.0000305175781,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "8633c607.bab378"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "8633c607.bab378",\r
+        "type": "execute",\r
+        "name": "execute reqExecResult",\r
+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExecResult' >\n    <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>\n\t<parameter name='User' value='`$prop.ansible.user`'/>\n\t<parameter name='Password' value='`$prop.ansible.password`'/>\n\t<parameter name='Id' value='`$org.onap.appc.adapter.ansible.Id`'/>\n\t<parameter name='PlaybookName' value='`$playbookname`'/>\n\t\n\n\n\n\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1190.9999389648438,\r
+        "y": 843.0000305175781,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "7d406d3c.e2a7a4",\r
+                "c98b9933.a78a78"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "3b639a7b.0ca876",\r
+        "type": "failure",\r
+        "name": "failure",\r
+        "xml": "<outcome value='failure'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 719.9999389648438,\r
+        "y": 702.0000915527344,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "c157f020.8fa16"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "d80c72ca.e0d3b",\r
+        "type": "other",\r
+        "name": "other",\r
+        "xml": "<outcome value='Other'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 721.9999389648438,\r
+        "y": 754.0000610351562,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "3f74fb5f.f66a64"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "7d406d3c.e2a7a4",\r
+        "type": "failure",\r
+        "name": "failure",\r
+        "xml": "<outcome value='failure'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1359.9999389648438,\r
+        "y": 801.0000381469727,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "c157f020.8fa16"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "2d735711.50c158",\r
+        "type": "other",\r
+        "name": "outcome 101",\r
+        "xml": "<outcome value='101'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1002.9999389648438,\r
+        "y": 745.0000686645508,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "c157f020.8fa16"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "c98b9933.a78a78",\r
+        "type": "success",\r
+        "name": "success",\r
+        "xml": "<outcome value='success'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1367.9998779296875,\r
+        "y": 849.0001220703125,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "5b424098.08bd5"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "4e1d4556.7dd52c",\r
+        "type": "returnSuccess",\r
+        "name": "return success",\r
+        "xml": "<return status='success'>\n<parameter name='status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`'/>",\r
+        "comments": "",\r
+        "x": 1661.9998779296875,\r
+        "y": 906.0000610351562,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "d900eabd.53e918",\r
+        "type": "dgstart",\r
+        "name": "DGSTART",\r
+        "outputs": 1,\r
+        "x": 209,\r
+        "y": 73,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "b7a7c5dd.d286a8"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "397a12a.10f34ee",\r
+        "type": "block",\r
+        "name": "block : atomic",\r
+        "xml": "<block atomic='true'>",\r
+        "atomic": "true",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 206.9166259765625,\r
+        "y": 165.08331298828125,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "2749994d.fe16d6",\r
+                "73725554.5774bc",\r
+                "8603ce63.b7c47",\r
+                "9a79bc82.279ce",\r
+                "cc7baeb9.6a3dc",\r
+                "b9b832a7.ed87d",\r
+                "16e37417.d2c8bc",\r
+                "763cfac9.48a8a4"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "73725554.5774bc",\r
+        "type": "execute",\r
+        "name": "execute Properties",\r
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/lcm-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 505.0000305175781,\r
+        "y": 198.08334350585938,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            []\r
+        ]\r
+    },\r
+    {\r
+        "id": "c9d7b572.9b1b08",\r
+        "type": "execute",\r
+        "name": "execute DmaapMsg",\r
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\n    <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\n    <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='contentType' value='application/json' />\n    <parameter name=\"responsePrefix\" value=\"lcm\" />\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1671.9998779296875,\r
+        "y": 651.0834045410156,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "18a85145.032faf"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "18a85145.032faf",\r
+        "type": "failure",\r
+        "name": "failure",\r
+        "xml": "<outcome value='failure'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1841.9998168945312,\r
+        "y": 650.0834045410156,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "1f387472.1096ac"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "c157f020.8fa16",\r
+        "type": "block",\r
+        "name": "block",\r
+        "xml": "<block>\n",\r
+        "atomic": "false",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1474.9998168945312,\r
+        "y": 675.0834045410156,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "c9d7b572.9b1b08",\r
+                "b8d2a948.9f6268",\r
+                "9c77e950.a59098"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "246949fc.089f56",\r
+        "type": "execute",\r
+        "name": "execute DmaapMsg",\r
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\n    <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\n    <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='contentType' value='application/json' />\n    <parameter name=\"responsePrefix\" value=\"lcm\" />\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1672.4998779296875,\r
+        "y": 856.0833740234375,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "3c6c9ce.ec3e364"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "3c6c9ce.ec3e364",\r
+        "type": "failure",\r
+        "name": "failure",\r
+        "xml": "<outcome value='failure'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1840.4998779296875,\r
+        "y": 856.0833740234375,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "8c845e57.511d"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "1f387472.1096ac",\r
+        "type": "record",\r
+        "name": "record",\r
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='Failed to Publish to DMaap'/>",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1961.9998779296875,\r
+        "y": 649.0833740234375,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            []\r
+        ]\r
+    },\r
+    {\r
+        "id": "b8d2a948.9f6268",\r
+        "type": "returnFailure",\r
+        "name": "return failure",\r
+        "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\n",\r
+        "comments": "",\r
+        "x": 1653.91650390625,\r
+        "y": 702.0834045410156,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "8c845e57.511d",\r
+        "type": "record",\r
+        "name": "record",\r
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='Failed to Publish to DMaap'/>",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1968.9166259765625,\r
+        "y": 856.0833740234375,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            []\r
+        ]\r
+    },\r
+    {\r
+        "id": "9c77e950.a59098",\r
+        "type": "set",\r
+        "name": "set DmaapReq",\r
+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`\"/>\n<parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\n<parameter name='lcm-dmaap.rpc-name' value='rollback'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\n",\r
+        "comments": "",\r
+        "x": 1658.9998779296875,\r
+        "y": 598.0833740234375,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "5b424098.08bd5",\r
+        "type": "block",\r
+        "name": "block",\r
+        "xml": "<block>\n",\r
+        "atomic": "false",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 1495.9998779296875,\r
+        "y": 850.0833740234375,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "246949fc.089f56",\r
+                "4d96ab15.f92c04",\r
+                "4e1d4556.7dd52c"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "4d96ab15.f92c04",\r
+        "type": "set",\r
+        "name": "set DmaapReq",\r
+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`\"/>\n<parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\n<parameter name='lcm-dmaap.rpc-name' value='rollback'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\n",\r
+        "comments": "",\r
+        "x": 1662.1666259765625,\r
+        "y": 801.0833740234375,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "f4b3d5c4.d9b698",\r
+        "type": "not-found",\r
+        "name": "not-found",\r
+        "xml": "<outcome value='not-found'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 728.9999389648438,\r
+        "y": 654.0000610351562,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "9b946286.c1fc1"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "2c09132b.2c598c",\r
+        "type": "set",\r
+        "name": "set Defaults",\r
+        "xml": "<set>\n<parameter name='org.onap.appc.adapter.ansible.result.code' value='401'/>\n<parameter name='org.onap.appc.adapter.ansible.message' value='Ansible Adapter was not found'/>\n",\r
+        "comments": "",\r
+        "x": 1019.9999389648438,\r
+        "y": 613,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "9b946286.c1fc1",\r
+        "type": "block",\r
+        "name": "block",\r
+        "xml": "<block>\n",\r
+        "atomic": "false",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 865.9999389648438,\r
+        "y": 648.0000610351562,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "2c09132b.2c598c",\r
+                "c157f020.8fa16"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "8603ce63.b7c47",\r
+        "type": "set",\r
+        "name": "set default values",\r
+        "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from DG' />\n<parameter name='quote' value=\"'\" />\n",\r
+        "comments": "",\r
+        "x": 498,\r
+        "y": 245,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "16e37417.d2c8bc",\r
+        "type": "record",\r
+        "name": "record",\r
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='`$playbookname`'/>\n\t<parameter name=\"field2\" value='`$nodelist`'/>",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 426.9998779296875,\r
+        "y": 609,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            []\r
+        ]\r
+    },\r
+    {\r
+        "id": "cc7baeb9.6a3dc",\r
+        "type": "switchNode",\r
+        "name": "switch pnf-flag",\r
+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 480,\r
+        "y": 346,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "b515ebb.9b7de18",\r
+                "ea8f46f7.654968"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "9a79bc82.279ce",\r
+        "type": "execute",\r
+        "name": "execute jsonStringToCtx",\r
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='rollback-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 512,\r
+        "y": 292,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            []\r
+        ]\r
+    },\r
+    {\r
+        "id": "b515ebb.9b7de18",\r
+        "type": "outcome",\r
+        "name": "true",\r
+        "xml": "<outcome value='true'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 677,\r
+        "y": 325,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "d8920a01.f108b8"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "ea8f46f7.654968",\r
+        "type": "outcome",\r
+        "name": "other",\r
+        "xml": "<outcome value='Other'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 677,\r
+        "y": 386,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "32f9eda7.1c1082"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "32f9eda7.1c1082",\r
+        "type": "block",\r
+        "name": "block",\r
+        "xml": "<block>\n",\r
+        "atomic": "false",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 824.9999389648438,\r
+        "y": 385,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "3756c2a1.fa5d6e"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "d8920a01.f108b8",\r
+        "type": "set",\r
+        "name": "set AnsibleReq",\r
+        "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $payloadJson.ipaddress-v4-oam +  $quote + ']'`\"/>\n<parameter name='playbookname' value='`$prop.lcm.pnf.rollback.playbookname`'/>\n",\r
+        "comments": "",\r
+        "x": 838,\r
+        "y": 323,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "b9b832a7.ed87d",\r
+        "type": "switchNode",\r
+        "name": "switch playbookname",\r
+        "xml": "<switch test='`$playbookname`'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 477,\r
+        "y": 477,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "5725646c.c7b37c"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "5725646c.c7b37c",\r
+        "type": "outcome",\r
+        "name": "null",\r
+        "xml": "<outcome value=''>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 648,\r
+        "y": 478,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "4546e558.72429c"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "4546e558.72429c",\r
+        "type": "set",\r
+        "name": "set playbookname",\r
+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>\n<parameter name='playbookname' value='`$prop.lcm.rollback.playbookname`'/>",\r
+        "comments": "",\r
+        "x": 838,\r
+        "y": 477,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "763cfac9.48a8a4",\r
+        "type": "switchNode",\r
+        "name": "switch nodelist",\r
+        "xml": "<switch test='`$nodelist`'>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 467,\r
+        "y": 536,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "76eb51c0.552ce",\r
+                "178c823.496cd7e"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "76eb51c0.552ce",\r
+        "type": "outcome",\r
+        "name": "null",\r
+        "xml": "<outcome value=''>\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 647,\r
+        "y": 529,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "66b6e37a.9e852c"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "66b6e37a.9e852c",\r
+        "type": "set",\r
+        "name": "set nodelist",\r
+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",\r
+        "comments": "",\r
+        "x": 804,\r
+        "y": 543,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    },\r
+    {\r
+        "id": "178c823.496cd7e",\r
+        "type": "outcome",\r
+        "name": "empty",\r
+        "xml": "<outcome value=\"['']\">\n\n",\r
+        "comments": "",\r
+        "outputs": 1,\r
+        "x": 646,\r
+        "y": 573,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": [\r
+            [\r
+                "66b6e37a.9e852c"\r
+            ]\r
+        ]\r
+    },\r
+    {\r
+        "id": "3756c2a1.fa5d6e",\r
+        "type": "returnFailure",\r
+        "name": "return failure",\r
+        "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='Currently only support PNF.' />",\r
+        "comments": "",\r
+        "x": 998,\r
+        "y": 385,\r
+        "z": "6f1e5235.30d27c",\r
+        "wires": []\r
+    }\r
+]
\ No newline at end of file
index ea54b27..40fe3a9 100644 (file)
@@ -10,3 +10,4 @@ LCM unlock ${project.version} sync
 LCM snapshot ${project.version} sync
 LCM config-scale-out ${project.version} sync
 LCM health-check ${project.version} sync
+LCM rollback ${project.version} sync
diff --git a/platform-logic/lcm/src/main/xml/LCM_rollback.xml b/platform-logic/lcm/src/main/xml/LCM_rollback.xml
new file mode 100644 (file)
index 0000000..bb540b6
--- /dev/null
@@ -0,0 +1,340 @@
+<service-logic\r
+    xmlns='http://www.onap.org/sdnc/svclogic'\r
+    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='LCM' version='${project.version}'>\r
+    <method rpc='rollback' mode='sync'>\r
+        <block atomic='true'>\r
+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/lcm-dg.properties' />\r
+                <parameter name='contextPrefix' value='prop' />\r
+            </execute>\r
+            <set>\r
+                <parameter name='status.code' value='200' />\r
+                <parameter name='status.message' value='unexpected return from DG' />\r
+                <parameter name='quote' value="'" />\r
+            </set>\r
+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\r
+                <parameter name='source' value='rollback-input.payload' />\r
+                <parameter name='outputPath' value='payloadJson' />\r
+                <parameter name='isEscaped' value='true' />\r
+            </execute>\r
+            <switch test='`$payloadJson.pnf-flag`'>\r
+                <outcome value='true'>\r
+                    <set>\r
+                        <parameter name='nodelist' value="`'[' + $quote + $payloadJson.ipaddress-v4-oam +  $quote + ']'`"/>\r
+                        <parameter name='playbookname' value='`$prop.lcm.pnf.rollback.playbookname`'/>\r
+                    </set>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <block>\r
+                        <return status='failure'>\r
+                            <parameter name='status.code' value='401' />\r
+                            <parameter name='status.message' value='Currently only support PNF.' />\r
+                        </return>\r
+                    </block>\r
+                </outcome>\r
+            </switch>\r
+            <switch test='`$playbookname`'>\r
+                <outcome value=''>\r
+                    <set>\r
+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>\r
+                        <parameter name='playbookname' value='`$prop.lcm.rollback.playbookname`'/>\r
+                    </set>\r
+                </outcome>\r
+            </switch>\r
+            <switch test='`$nodelist`'>\r
+                <outcome value=''>\r
+                    <set>\r
+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>\r
+                    </set>\r
+                </outcome>\r
+                <outcome value="['']">\r
+                    <set>\r
+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>\r
+                    </set>\r
+                </outcome>\r
+            </switch>\r
+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                <parameter name="logger" value="message-log"/>\r
+                <parameter name="field1" value='`$playbookname`'/>\r
+                <parameter name="field2" value='`$nodelist`'/>\r
+            </record>\r
+            <execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExec' >\r
+                <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>\r
+                <parameter name='User' value='`$prop.ansible.user`'/>\r
+                <parameter name='Password' value='`$prop.ansible.password`'/>\r
+                <parameter name='LocalParameters' value='`$prop.ansible.lcm.localparameters`'/>\r
+                <parameter name='EnvParameters' value='`$rollback-input.payload`'/>\r
+                <parameter name='NodeList' value="`$nodelist`"/>\r
+                <parameter name='Timeout' value='`$prop.ansible.timeout`'/>\r
+                <parameter name='Version' value='`$prop.ansible.version`'/>\r
+                <parameter name='Id' value='`$rollback-input.common-header.request-id`'/>\r
+                <parameter name='PlaybookName' value='`$playbookname`'/>\r
+                <outcome value='not-found'>\r
+                    <block>\r
+                        <set>\r
+                            <parameter name='org.onap.appc.adapter.ansible.result.code' value='401'/>\r
+                            <parameter name='org.onap.appc.adapter.ansible.message' value='Ansible Adapter was not found'/>\r
+                        </set>\r
+                        <block>\r
+                            <set>\r
+                                <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\r
+                                <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>\r
+                                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\r
+                                <parameter name='lcm-dmaap.rpc-name' value='rollback'/>\r
+                                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\r
+                                <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\r
+                                <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\r
+                                <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\r
+                                <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\r
+                                <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\r
+                                <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\r
+                                <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\r
+                                <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\r
+                                <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\r
+                                <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\r
+                            </set>\r
+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />\r
+                                <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\r
+                                <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\r
+                                <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\r
+                                <parameter name='format' value='json' />\r
+                                <parameter name='httpMethod' value='POST' />\r
+                                <parameter name='contentType' value='application/json' />\r
+                                <parameter name="responsePrefix" value="lcm" />\r
+                                <outcome value='failure'>\r
+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                        <parameter name="logger" value="message-log"/>\r
+                                        <parameter name="field1" value='Failed to Publish to DMaap'/>\r
+                                    </record>\r
+                                </outcome>\r
+                            </execute>\r
+                            <return status='failure'>\r
+                                <parameter name='status.code' value='401' />\r
+                                <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\r
+                            </return>\r
+                        </block>\r
+                    </block>\r
+                </outcome>\r
+                <outcome value='failure'>\r
+                    <block>\r
+                        <set>\r
+                            <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\r
+                            <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>\r
+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\r
+                            <parameter name='lcm-dmaap.rpc-name' value='rollback'/>\r
+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\r
+                            <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\r
+                            <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\r
+                            <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\r
+                            <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\r
+                            <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\r
+                            <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\r
+                            <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\r
+                            <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\r
+                            <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\r
+                            <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\r
+                        </set>\r
+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />\r
+                            <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\r
+                            <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\r
+                            <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\r
+                            <parameter name='format' value='json' />\r
+                            <parameter name='httpMethod' value='POST' />\r
+                            <parameter name='contentType' value='application/json' />\r
+                            <parameter name="responsePrefix" value="lcm" />\r
+                            <outcome value='failure'>\r
+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                    <parameter name="logger" value="message-log"/>\r
+                                    <parameter name="field1" value='Failed to Publish to DMaap'/>\r
+                                </record>\r
+                            </outcome>\r
+                        </execute>\r
+                        <return status='failure'>\r
+                            <parameter name='status.code' value='401' />\r
+                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\r
+                        </return>\r
+                    </block>\r
+                </outcome>\r
+                <outcome value='Other'>\r
+                    <switch test="`$org.onap.appc.adapter.ansible.result.code`">\r
+                        <outcome value='101'>\r
+                            <block>\r
+                                <set>\r
+                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\r
+                                    <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>\r
+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\r
+                                    <parameter name='lcm-dmaap.rpc-name' value='rollback'/>\r
+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\r
+                                    <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\r
+                                    <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\r
+                                    <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\r
+                                    <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\r
+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\r
+                                    <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\r
+                                    <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\r
+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\r
+                                    <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\r
+                                    <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\r
+                                </set>\r
+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />\r
+                                    <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\r
+                                    <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\r
+                                    <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\r
+                                    <parameter name='format' value='json' />\r
+                                    <parameter name='httpMethod' value='POST' />\r
+                                    <parameter name='contentType' value='application/json' />\r
+                                    <parameter name="responsePrefix" value="lcm" />\r
+                                    <outcome value='failure'>\r
+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                            <parameter name="logger" value="message-log"/>\r
+                                            <parameter name="field1" value='Failed to Publish to DMaap'/>\r
+                                        </record>\r
+                                    </outcome>\r
+                                </execute>\r
+                                <return status='failure'>\r
+                                    <parameter name='status.code' value='401' />\r
+                                    <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\r
+                                </return>\r
+                            </block>\r
+                        </outcome>\r
+                        <outcome value='500'>\r
+                            <block>\r
+                                <set>\r
+                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\r
+                                    <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>\r
+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\r
+                                    <parameter name='lcm-dmaap.rpc-name' value='rollback'/>\r
+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\r
+                                    <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\r
+                                    <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\r
+                                    <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\r
+                                    <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\r
+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\r
+                                    <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\r
+                                    <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\r
+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\r
+                                    <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\r
+                                    <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\r
+                                </set>\r
+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />\r
+                                    <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\r
+                                    <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\r
+                                    <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\r
+                                    <parameter name='format' value='json' />\r
+                                    <parameter name='httpMethod' value='POST' />\r
+                                    <parameter name='contentType' value='application/json' />\r
+                                    <parameter name="responsePrefix" value="lcm" />\r
+                                    <outcome value='failure'>\r
+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                            <parameter name="logger" value="message-log"/>\r
+                                            <parameter name="field1" value='Failed to Publish to DMaap'/>\r
+                                        </record>\r
+                                    </outcome>\r
+                                </execute>\r
+                                <return status='failure'>\r
+                                    <parameter name='status.code' value='401' />\r
+                                    <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\r
+                                </return>\r
+                            </block>\r
+                        </outcome>\r
+                        <outcome value='100'>\r
+                            <execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExecResult' >\r
+                                <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>\r
+                                <parameter name='User' value='`$prop.ansible.user`'/>\r
+                                <parameter name='Password' value='`$prop.ansible.password`'/>\r
+                                <parameter name='Id' value='`$org.onap.appc.adapter.ansible.Id`'/>\r
+                                <parameter name='PlaybookName' value='`$playbookname`'/>\r
+                                <outcome value='failure'>\r
+                                    <block>\r
+                                        <set>\r
+                                            <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\r
+                                            <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>\r
+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\r
+                                            <parameter name='lcm-dmaap.rpc-name' value='rollback'/>\r
+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\r
+                                            <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\r
+                                            <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\r
+                                            <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\r
+                                            <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\r
+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\r
+                                            <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\r
+                                            <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\r
+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\r
+                                            <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\r
+                                            <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\r
+                                        </set>\r
+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />\r
+                                            <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\r
+                                            <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\r
+                                            <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\r
+                                            <parameter name='format' value='json' />\r
+                                            <parameter name='httpMethod' value='POST' />\r
+                                            <parameter name='contentType' value='application/json' />\r
+                                            <parameter name="responsePrefix" value="lcm" />\r
+                                            <outcome value='failure'>\r
+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                    <parameter name="logger" value="message-log"/>\r
+                                                    <parameter name="field1" value='Failed to Publish to DMaap'/>\r
+                                                </record>\r
+                                            </outcome>\r
+                                        </execute>\r
+                                        <return status='failure'>\r
+                                            <parameter name='status.code' value='401' />\r
+                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\r
+                                        </return>\r
+                                    </block>\r
+                                </outcome>\r
+                                <outcome value='success'>\r
+                                    <block>\r
+                                        <set>\r
+                                            <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\r
+                                            <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>\r
+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\r
+                                            <parameter name='lcm-dmaap.rpc-name' value='rollback'/>\r
+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\r
+                                            <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\r
+                                            <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\r
+                                            <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\r
+                                            <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\r
+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\r
+                                            <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\r
+                                            <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\r
+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\r
+                                            <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\r
+                                            <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\r
+                                        </set>\r
+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />\r
+                                            <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\r
+                                            <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\r
+                                            <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\r
+                                            <parameter name='format' value='json' />\r
+                                            <parameter name='httpMethod' value='POST' />\r
+                                            <parameter name='contentType' value='application/json' />\r
+                                            <parameter name="responsePrefix" value="lcm" />\r
+                                            <outcome value='failure'>\r
+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">\r
+                                                    <parameter name="logger" value="message-log"/>\r
+                                                    <parameter name="field1" value='Failed to Publish to DMaap'/>\r
+                                                </record>\r
+                                            </outcome>\r
+                                        </execute>\r
+                                        <return status='success'>\r
+                                            <parameter name='status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\r
+                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\r
+                                        </return>\r
+                                    </block>\r
+                                </outcome>\r
+                            </execute>\r
+                        </outcome>\r
+                    </switch>\r
+                </outcome>\r
+            </execute>\r
+        </block>\r
+    </method>\r
+</service-logic>
\ No newline at end of file