Changes for RFC 8040 compliance 36/138936/1
authorDan Timoney <dtimoney@att.com>
Fri, 13 Sep 2024 18:04:13 +0000 (14:04 -0400)
committerDan Timoney <dtimoney@att.com>
Fri, 13 Sep 2024 18:04:13 +0000 (14:04 -0400)
Updates to ccsdk/sli to migrate from Bierman version of RESTCONF
to RFC 8040

Issue-ID: CCSDK-4056
Change-Id: Ic2d4bb01dc4f9c3f204a6209b4b9310a41ee2ca4
Signed-off-by: Dan Timoney <dtimoney@att.com>
adaptors/aai-service/provider/src/main/resources/aaiclient.properties
adaptors/aai-service/provider/src/test/resources/aaiclient.properties
adaptors/mdsal-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/ConfigResource.java
adaptors/mdsal-resource/provider/src/main/java/org/onap/ccsdk/sli/adaptors/resource/mdsal/OperationalResource.java
core/filters/provider/src/main/java/org/onap/ccsdk/sli/core/filters/ControllerAuditLogFilter.java
core/filters/provider/src/test/java/org/onap/ccsdk/sli/core/filters/ControllerAuditLogFilterTest.java
core/sliPluginUtils/provider/src/test/resources/3domain.dump

index 295e001..8f805a1 100755 (executable)
@@ -54,8 +54,8 @@ org.onap.ccsdk.sli.adaptors.aai.update=/aai/v25/actions/update
 
 # UBB Notify
 org.onap.ccsdk.sli.adaptors.aai.path.notify=/aai/v25/actions/notify
-org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=<%= @ubbUri %>/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id}
-org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=<%= @ubbUri %>/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information
+org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=<%= @ubbUri %>/rests/data/L3SDN-API:services/layer3-service-list?{service-instance-id}?content=config
+org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=<%= @ubbUri %>/rests/data/L3AVPN-EVC-API:services/service-list={service-instance-id}/service-data/avpn-logicalchannel-information?content=config
 
 # VNF IMAGES
 org.onap.ccsdk.sli.adaptors.aai.path.vnf.image.query=/aai/v25/service-design-and-creation/vnf-images/vnf-image?application={application_model}&application-vendor={application_vendor}
index 2d773e7..af0e76d 100755 (executable)
@@ -54,8 +54,8 @@ org.onap.ccsdk.sli.adaptors.aai.update=/aai/v25/actions/update
 
 # UBB Notify
 org.onap.ccsdk.sli.adaptors.aai.path.notify=/aai/v25/actions/notify
-org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=<%= @ubbUri %>/restconf/config/L3SDN-API:services/layer3-service-list/{service-instance-id}
-org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=<%= @ubbUri %>/restconf/config/L3AVPN-EVC-API:services/service-list/{service-instance-id}/service-data/avpn-logicalchannel-information
+org.onap.ccsdk.sli.adaptors.aai.notify.selflink.fqdn=<%= @ubbUri %>/rests/data/L3SDN-API:services/layer3-service-list={service-instance-id}?content=config
+org.onap.ccsdk.sli.adaptors.aai.notify.selflink.avpn=<%= @ubbUri %>/rests/data/L3AVPN-EVC-API:services/service-list={service-instance-id}/service-data/avpn-logicalchannel-information?content=config
 
 # P-Interfaces
 org.onap.ccsdk.sli.adaptors.aai.path.pserver.pinterfaces=/aai/v25/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces
index e2e9bc2..402c334 100644 (file)
@@ -37,6 +37,7 @@ public class ConfigResource implements SvcLogicResource {
     private static final Logger LOG = LoggerFactory.getLogger(ConfigResource.class);
 
     private RestService restService;
+    private String useRfc8040 = "true"; 
 
     public ConfigResource(MdsalResourcePropertiesProvider propProvider) {
         LOG.info("Loading ConfigResource using property provider");
@@ -47,6 +48,7 @@ public class ConfigResource implements SvcLogicResource {
         String sdncHost = props.getProperty("org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-host", "localhost");
         String sdncProtocol = props.getProperty("org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-protocol", "https");
         String sdncPort = props.getProperty("org.onap.ccsdk.sli.adaptors.resource.mdsal.sdnc-port", "8443");
+        useRfc8040 = props.getProperty("org.onap.ccsdk.sli.adaptors.resource.mdsal.use-rfc8040", "true");
 
         restService = new RestService(sdncProtocol, sdncHost, sdncPort, sdncUser, sdncPasswd, "XML", "XML");
     }
@@ -77,15 +79,33 @@ public class ConfigResource implements SvcLogicResource {
                              String orderBy, SvcLogicContext ctx) throws SvcLogicException {
         String module = resource;
         StringBuffer restQuery = new StringBuffer();
+        String queryPrefix;
+        String querySuffix;
+        String keySeparator;
+
+
+        if (this.useRfc8040.equals("true")) {
+            queryPrefix = "rests/data/";
+            querySuffix = "?content=config";
+            keySeparator = "=";
+        } else {
+            queryPrefix = "restconf/config";
+            querySuffix = "";
+            keySeparator = "/";
+        }
 
         String[] keyParts = key.split("/");
         for (String keyPart : keyParts) {
-            if (restQuery.length() > 0) {
-                restQuery.append("/");
-            }
+
             if (keyPart.startsWith("$")) {
+                // This is a variable, so the previous item must have been a list.  Add an equals
+                // sign instead of a /
+                restQuery.append(keySeparator);
                 restQuery.append(ctx.resolve(keyPart.substring(1)));
             } else {
+                if (restQuery.length() > 0) {
+                    restQuery.append("/");
+                }
                 restQuery.append(keyPart);
             }
         }
@@ -96,7 +116,7 @@ public class ConfigResource implements SvcLogicResource {
             restQueryStr = restQueryStr.substring(1, restQueryStr.length()-1);
         }
 
-        String urlString = "restconf/config/" + module + ":" + restQueryStr;
+        String urlString = queryPrefix + module + ":" + restQueryStr + querySuffix;
         LOG.info("Querying resource: " + resource + ". At URL: " + urlString);
 
         Document results = restService.get(urlString);
index 3208781..9fba0a9 100644 (file)
@@ -75,12 +75,15 @@ public class OperationalResource implements SvcLogicResource {
 
         String[] keyParts = key.split("/");
         for (String keyPart : keyParts) {
-            if (restQuery.length() > 0) {
-                restQuery.append("/");
-            }
             if (keyPart.startsWith("$")) {
+                // This is a variable, so infer that previous part was a list name.  Insert = instead of /
+                restQuery.append("=?");
                 restQuery.append(ctx.resolve(keyPart.substring(1)));
             } else {
+
+                if (restQuery.length() > 0) {
+                    restQuery.append("/");
+                }
                 restQuery.append(keyPart);
             }
         }
@@ -91,7 +94,7 @@ public class OperationalResource implements SvcLogicResource {
             restQueryStr = restQueryStr.substring(1, restQueryStr.length() - 1);
         }
 
-        String urlString = "restconf/operational/" + module + ":" + restQueryStr;
+        String urlString = "rests/data/" + module + ":" + restQueryStr+"?content=nonconfig";
         LOG.info("Querying resource: " + resource + ". At URL: " + urlString);
 
         Document results = restService.get(urlString);
index 7805e36..41c47d7 100644 (file)
@@ -24,14 +24,21 @@ public class ControllerAuditLogFilter extends AuditLogServletFilter {
     protected String getServiceInstanceId(String path) {
         int idx = path.indexOf("service-list");
         if (idx != -1) {
-            // chomp off service-list/
+            // chomp off service-list=
             String str = path.substring(idx + 13);
+
             idx = str.indexOf("/");
             //if there is another forward slash with more information chomp it off
             if (idx != -1) {
                 return str.substring(0, idx);
             } else {
-                return str;
+                // If there is a question mark with more information chomp it off
+                idx = str.indexOf("?");
+                if (idx != -1) {
+                    return str.substring(0, idx);
+                } else {
+                    return str;
+                }
             }
         }
         return null;
index 9d0357a..3969eed 100644 (file)
@@ -8,7 +8,7 @@ public class ControllerAuditLogFilterTest {
     @Test
     public void getSimpleSiid() throws Exception {
         ControllerAuditLogFilter filter = new ControllerAuditLogFilter();
-        String siid = filter.getServiceInstanceId("/restconf/config/Layer3API:services/service-list/100");
+        String siid = filter.getServiceInstanceId("/rests/data/Layer3API:services/service-list=100?content=config");
         assertEquals("100", siid);
     }
 
@@ -16,7 +16,7 @@ public class ControllerAuditLogFilterTest {
     public void getSimpleComplexSiid() throws Exception {
         ControllerAuditLogFilter filter = new ControllerAuditLogFilter();
         String siid = filter.getServiceInstanceId(
-                "/restconf/config/Layer3API:services/service-list/1337/service-data/oper-status");
+                "/rests/data/Layer3API:services/service-list=1337/service-data/oper-status?content=config");
         assertEquals("1337", siid);
     }
 
index 3745d58..5419bca 100644 (file)
@@ -96,7 +96,7 @@ ccsdkTopopnfs.pnf[11].relationship-list.relationship[0].relationship-data_length
 ccsdkTopopnfs.pnf[14].relationship-list.relationship[2].related-to = esr-thirdparty-sdnc
 tmp.aai.domainB.esr-thirdparty-sdnc.relationship-list.relationship[0].relationship-label = org.onap.relationships.inventory.BelongsTo
 ccsdkTopopnfs.pnf[14].relationship-list.relationship[0].related-to = tunnel-termination-point
-prop.restapi.network-provided-resource = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks/network/{network-id}/network-data/network-provided-allotted-resources/
+prop.restapi.network-provided-resource = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/networks/network={network-id}/network-data/network-provided-allotted-resources/?content=config
 tmp.aai.destination-pnf.relationship-list.relationship[0].relationship-data[0].relationship-key = esr-thirdparty-sdnc.thirdparty-sdnc-id
 tmp.aai.network-route-B.p-interface-dst.speed-value = 10000000
 ccsdkTopologicalLinks.logical-link[7].relationship-list.relationship[0].relationship-label = tosca.relationships.network.LinksTo
@@ -217,7 +217,7 @@ ccsdkTopopnfs.pnf[3].relationship-list.relationship[1].relationship-data_length
 ccsdkTopologicalLinks.logical-link[0].relationship-list.relationship[3].relationship-data[0].relationship-key = pnf.pnf-name
 ccsdkTopopnfs.pnf[6].operational-status = up
 ccsdkTopologicalLinks.logical-link[27].relationship-list.relationship[1].related-to-property_length = 1
-prop.restapi.preload-network = /restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/{network-name}/network/preload-data/preload-network-topology-information/
+prop.restapi.preload-network = /rests/data/GENERIC-RESOURCE-API:preload-information/preload-list={network-name}/network/preload-data/preload-network-topology-information?content=config
 ccsdkTopologicalLinks.logical-link[15].relationship-list.relationship[0].related-to-property[0].property-key = p-interface.prov-status
 ccsdkTopologicalLinks.logical-link[31].relationship-list.relationship[0].relationship-data[1].relationship-value = networkId-providerId-50-clientId-0-topologyId-1-nodeId-10.5.1.2-ltpId-12
 ccsdkTopopnfs.pnf[17].relationship-list.relationship[2].relationship-data[0].relationship-key = tunnel-termination-point.ttp-id
@@ -377,7 +377,7 @@ tmp.aai.src-pnf.p-interfaces.p-interface[1].relationship-list.relationship[0].re
 ccsdkTopopnfs.pnf[22].relationship-list.relationship[0].relationship-data_length = 1
 tmp.aai.service-instance.allotted-resources.allotted-resource[0].relationship-list.relationship[1].relationship-label = org.onap.relationships.inventory.ComposedOf
 ccsdkTopologicalLinks.logical-link[27].relationship-list.relationship[0].relationship-data[0].relationship-value = networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.1
-prop.restapi.network = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/networks
+prop.restapi.network = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/networks?content=config
 ccsdkTopologicalLinks.logical-link[29].in-maint = false
 allNetworksList.network-resource[3].relationship-list.relationship[2].relationship-data_length = 1
 prop.sdncRestApi.thirdpartySdnc.domainA.password = rocks
@@ -438,7 +438,7 @@ tmp.aai.src-network-resource.relationship-list.relationship[3].related-to = pnf
 tmp.aai.dst-ttp.admin-status = up
 ccsdkTopopnfs.pnf[23].relationship-list.relationship[0].relationship-label = tosca.relationships.network.BindsTo
 tmp.aai.src-pnf.p-interfaces.p-interface[2].inter-domain-plug-id = 4050
-prop.restapi.vnf-api.service-information = /restconf/config/VNF-API:vnfs/vnf-list/{vnf-id}/service-data
+prop.restapi.vnf-api.service-information = /rests/data/VNF-API:vnfs/vnf-list={vnf-id}/service-data?content=config
 ccsdkTopopnfs.pnf[23].relationship-list.relationship[4].relationship-label = tosca.relationships.network.LinksTo
 ccsdkTopologicalLinks.logical-link[32].relationship-list.relationship[0].relationship-label = tosca.relationships.network.LinksTo
 tmp.aai.dst-ttp.name = 1-1-1-1-1
@@ -670,7 +670,7 @@ allNetworksList.network-resource[4].relationship-list.relationship[2].relationsh
 tmp.aai.dst-pnf.p-interfaces.p-interface[3].operational-status = up
 tmp.aai.allotted-resource.relationship-list.relationship[2].relationship-data_length = 1
 ccsdkTopologicalLinks.logical-link[32].relationship-list.relationship[1].relationship-data[0].relationship-value = networkId-providerId-50-clientId-0-topologyId-1-nodeId-10.5.1.3
-prop.restapi.vnf = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs
+prop.restapi.vnf = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs?content=config
 ccsdkTopologicalLinks.logical-link[5].relationship-list.relationship[0].relationship-data[0].relationship-value = networkId-providerId-50-clientId-0-topologyId-1-nodeId-10.5.1.2
 tmp.aai.domainB.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name = onos
 prop.restapi.ss.mS.vlan.tag.unassign.templatefile = self-serve-mS-vlan-tag-unassignments.json
@@ -1308,7 +1308,7 @@ tmp.aai.domainB.esr-thirdparty-sdnc.relationship-list.relationship[4].relationsh
 tmp.aai.dst-ttp.protection-type = ietf-te-types:lsp-protection-unprotected
 tmp.aai.domainB.esr-thirdparty-sdnc.relationship-list.relationship[3].relationship-label = org.onap.relationships.inventory.AppliesTo
 ccsdkTopopnfs.pnf[19].operational-status = up
-prop.restapi.ss-vnf-assignments = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/
+prop.restapi.ss-vnf-assignments = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}?content=config
 ccsdkTopopnfs.pnf[17].admin-status = up
 ccsdkTopologicalLinks.logical-link[1].relationship-list.relationship[1].related-to = p-interface
 param-prefix-src-tp[4] = 0
@@ -1512,7 +1512,7 @@ tmp.aai.src-pnf.p-interfaces.p-interface[3].in-maint = true
 ccsdkTopopnfs.pnf[23].relationship-list.relationship_length = 5
 tmp.aai.src-pnf.p-interfaces.p-interface[3].relationship-list.relationship[2].relationship-data[0].relationship-key = logical-link.link-name
 tmp.otninfo[1].dstPort.dst-ltp-id = 12
-prop.restapi.vnf-provided-allottedresource = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+prop.restapi.vnf-provided-allottedresource = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vnf-provided-allotted-resources?content=config
 ccsdkTopologicalLinks.logical-link[24].relationship-list.relationship[1].related-to-property[0].property-key = p-interface.prov-status
 ccsdkTopopnfs.pnf[21].relationship-list.relationship[2].relationship-label = tosca.relationships.network.BindsTo
 param-prefix-domainB-pnfName[9] = ltpId
@@ -1620,7 +1620,7 @@ ccsdkTopologicalLinks.logical-link[32].relationship-list.relationship[1].relatio
 tmp.aai.src-pnf.relationship-list.relationship[0].relationship-data[0].relationship-value = networkId-providerId-40-clientId-0-topologyId-1-nodeId-10.4.1.2-ttpId-OA==
 ccsdkTopologicalLinks.logical-link[25].relationship-list.relationship[1].relationship-label = tosca.relationships.network.LinksTo
 tmp.aai.dst-pnf.p-interfaces.p-interface[0].relationship-list.relationship[1].related-link = /aai/v21/network/logical-links/logical-link/networkId-providerId-50-clientId-0-topologyId-1-linkId-10.5.1.3-22
-prop.restapi.preloadinformation = /restconf/config/GENERIC-RESOURCE-API:preload-information/preload-list/
+prop.restapi.preloadinformation = /rests/data/GENERIC-RESOURCE-API:preload-information/preload-list?content=config
 tmp.aai.dst-ttp.relationship-list.relationship[1].relationship-data[0].relationship-value = networkId-providerId-50-clientId-0-topologyId-1-nodeId-10.5.1.1
 ccsdkTopopnfs.pnf[3].relationship-list.relationship[4].related-to = network-resource
 ccsdkTopologicalLinks.logical-link[8].relationship-list.relationship[1].related-to-property[0].property-key = p-interface.prov-status
@@ -1656,7 +1656,7 @@ tmp.aai.domainA.esr-thirdparty-sdnc.relationship-list.relationship[7].relationsh
 tmp.aai.dst-pnf.resource-version = 1618516951680
 ccsdkTopopnfs.pnf[1].relationship-list.relationship[0].related-link = /aai/v21/external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/9e86e17a-35ae-48b3-bd3c-f296c488fbfb
 ccsdkTopopnfs.pnf[8].relationship-list.relationship[2].relationship-data_length = 1
-prop.restapi.vnf-assign = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}
+prop.restapi.vnf-assign = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}?content=config
 ccsdkTopopnfs.pnf[8].relationship-list.relationship[0].relationship-label = tosca.relationships.network.BindsTo
 allNetworksList.network-resource[4].relationship-list.relationship[4].related-link = /aai/v21/network/pnfs/pnf/networkId-providerId-30-clientId-0-topologyId-2-nodeId-10.3.1.1
 tmp.aai.service-instance.allotted-resources.allotted-resource[0].relationship-list.relationship[2].relationship-label = org.onap.relationships.inventory.ComposedOf
@@ -1850,7 +1850,7 @@ allNetworksList.network-resource[3].relationship-list.relationship[2].relationsh
 ccsdkTopopnfs.pnf[3].relationship-list.relationship[0].relationship-data_length = 1
 param-prefix-domainA[8] = 10.3.1.1
 mvidx = 4
-prop.restapi.pm-configuration = /restconf/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/{configuration-id}/
+prop.restapi.pm-configuration = /rests/data/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration={configuration-id}?content=config
 ccsdkTopopnfs.pnf[1].relationship-list.relationship[1].related-to-property[0].property-key = network-resource.network-id
 ccsdkTopopnfs.pnf[21].relationship-list.relationship[2].related-to = tunnel-termination-point
 logical-link-name = tranportEp_src_ID_311_2
@@ -1878,7 +1878,7 @@ ccsdkTopologicalLinks.logical-link[7].relationship-list.relationship[1].related-
 allNetworksList.network-resource[2].relationship-list.relationship[2].relationship-label = tosca.relationships.network.LinksTo
 ccsdkTopopnfs.pnf[4].relationship-list.relationship[3].relationship-data_length = 1
 ccsdkTopopnfs.pnf[6].relationship-list.relationship[4].relationship-data_length = 1
-prop.restapi.vpp-honeycomb = /restconf/config/ietf-interfaces:interfaces/interface/{tunnel-name}
+prop.restapi.vpp-honeycomb = /restconf/config/ietf-interfaces:interfaces/interface/{tunnel-name}/
 tmp.aai.source-pnf.relationship-list.relationship[1].related-link = /aai/v21/network/network-resources/network-resource/providerId-30-clientId-0-topologyId-2
 ccsdkTopopnfs.pnf[19].resource-version = 1618516868955
 ccsdkTopopnfs.pnf[21].relationship-list.relationship[0].related-to = tunnel-termination-point
@@ -1962,7 +1962,7 @@ ccsdkTopologicalLinks.logical-link[17].relationship-list.relationship[1].related
 ccsdkTopologicalLinks.logical-link[30].relationship-list.relationship[1].related-to = p-interface
 ccsdkTopopnfs.pnf[11].relationship-list.relationship[1].related-to = network-resource
 tmp.aai.dst-ttp.relationship-list.relationship[1].relationship-data_length = 2
-prop.restapi.network-provided-allottedresource = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vnf-provided-allotted-resources/
+prop.restapi.network-provided-allottedresource = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vnf-provided-allotted-resources?content=config
 ccsdkTopologicalLinks.logical-link[4].link-name = networkId-providerId-30-clientId-0-topologyId-1-linkId-10.3.1.3-16
 ccsdkTopologicalLinks.logical-link[2].link-id = 10.3.1.1-14
 tmp.aai.domainA.esr-thirdparty-sdnc.relationship-list.relationship[4].relationship-data_length = 1
@@ -2060,7 +2060,7 @@ ccsdkTopologicalLinks.logical-link[7].relationship-list.relationship[0].related-
 ccsdkTopologicalLinks.logical-link[28].relationship-list.relationship[0].relationship-data[0].relationship-key = pnf.pnf-name
 ccsdkTopopnfs.pnf[18].admin-status = up
 tmp.aai.src-tp.resource-version = 1618516893447
-prop.restapi.connection-attachment-allottedresource = /restconf/config/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource/{allotted-resource-id}/
+prop.restapi.connection-attachment-allottedresource = /rests/data/GENERIC-RESOURCE-API:connection-attachment-allotted-resources/connection-attachment-allotted-resource={allotted-resource-id}?content=config
 ccsdkTopopnfs.pnf[21].relationship-list.relationship[1].relationship-data[0].relationship-value = networkId-providerId-40-clientId-0-topologyId-1-nodeId-10.4.1.1-ttpId-Mg==
 ccsdkTopopnfs.pnf[22].resource-version = 1618516944957
 tmp.aai.network-route-B.address-family = ipv4
@@ -2078,7 +2078,7 @@ ccsdkTopologicalLinks.logical-link[10].relationship-list.relationship[0].relatio
 tmp.aai.domainA.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info_length = 1
 ccsdkTopologicalLinks.logical-link[11].relationship-list.relationship[1].related-to-property_length = 1
 ccsdkTopopnfs.pnf[3].relationship-list.relationship[4].relationship-data_length = 1
-prop.restapi.service.vnf.vfmodule-resource = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}
+prop.restapi.service.vnf.vfmodule-resource = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vf-modules/vf-module={vf-module-id}?content=config
 ccsdkTopologicalLinks.logical-link[13].relationship-list.relationship[0].related-to = p-interface
 tmp.aai.src-pnf.p-interfaces.p-interface[2].relationship-list.relationship[1].relationship-label = tosca.relationships.network.LinksTo
 prop.restapi.ss-mS-vlan-tag-assign = /vlantagapi/v1/{action}
@@ -2152,7 +2152,7 @@ ccsdkTopologicalLinks.logical-link[24].relationship-list.relationship[1].relatio
 tmp.aai.src-pnf.relationship-list.relationship[4].related-link = /aai/v21/network/network-resources/network-resource/providerId-40-clientId-0-topologyId-1
 vnf-topology-operation-input.request-information.order-version = 
 ccsdkTopopnfs.pnf[13].relationship-list.relationship[4].relationship-data[0].relationship-key = network-resource.network-id
-prop.restapi.brg-allottedresource = /restconf/config/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource/{allotted-resource-id}/
+prop.restapi.brg-allottedresource = /rests/data/GENERIC-RESOURCE-API:brg-allotted-resources/brg-allotted-resource={allotted-resource-id}?content=config
 ccsdkTopologicalLinks.logical-link[31].relationship-list.relationship[1].relationship-data_length = 2
 ccsdkTopologicalLinks.logical-link[28].in-maint = false
 tmp.aai.network-policy.relationship-list.relationship[0].relationship-data[0].relationship-value = 5GCustomer
@@ -2294,7 +2294,7 @@ ccsdkTopopnfs.pnf[9].resource-version = 1618516886934
 tmp.aai.domainA.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url = http://192.168.198.10:18181
 tmp.aai.src-pnf.p-interfaces.p-interface[1].relationship-list.relationship[0].relationship-label = tosca.relationships.network.BindsTo
 ccsdkTopopnfs.pnf[17].relationship-list.relationship[2].relationship-data_length = 1
-prop.restapi.sz-allottedresource = /restconf/config/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource/{allotted-resource-id}/
+prop.restapi.sz-allottedresource = /rests/data/GENERIC-RESOURCE-API:security-zone-allotted-resources/security-zone-allotted-resource={allotted-resource-id}?content=config
 tmp.aai.dst-pnf.relationship-list.relationship[4].related-to-property[0].property-value = providerId-50-clientId-0-topologyId-1
 ccsdkTopologicalLinks.logical-link[13].relationship-list.relationship[0].relationship-data[1].relationship-value = networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.1-ltpId-12
 ccsdkTopologicalLinks.logical-link[10].relationship-list.relationship[1].relationship-data_length = 2
@@ -2369,7 +2369,7 @@ ccsdkTopologicalLinks.logical-link[26].relationship-list.relationship[0].relatio
 ccsdkTopopnfs.pnf[4].operational-status = up
 ccsdkTopologicalLinks.logical-link[1].relationship-list.relationship[1].relationship-data[0].relationship-value = networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.2
 otn-oof.solutions[1].original_link = networkId-providerId-40-clientId-0-topologyId-1-linkId-10.4.1.2-12
-prop.restapi.services = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}
+prop.restapi.services = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}?content=config
 ccsdkTopopnfs.pnf[14].relationship-list.relationship[1].related-link = /aai/v21/network/tunnel-termination-points/tunnel-termination-point/networkId-providerId-50-clientId-0-topologyId-1-nodeId-10.5.1.4-ttpId-MTI%3D
 ccsdkTopopnfs.pnf[15].relationship-list.relationship[1].relationship-label = tosca.relationships.network.LinksTo
 ccsdkTopopnfs.pnf[7].relationship-list.relationship[0].relationship-label = org.onap.relationships.inventory.AppliesTo
@@ -2420,13 +2420,13 @@ param-prefix-dst-tp[0] =
 ccsdkTopologicalLinks.logical-link[26].relationship-list.relationship[0].relationship-data[0].relationship-key = pnf.pnf-name
 ccsdkTopologicalLinks.logical-link[30].relationship-list.relationship[1].relationship-data[0].relationship-value = networkId-providerId-50-clientId-0-topologyId-1-nodeId-10.5.1.3
 tmp.aai.network-route-B.function = 3gppTransportEP
-prop.restapi.parent-provided-resource = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/provided-allotted-resources/provided-allotted-resource/{allotted-resource-id}/
+prop.restapi.parent-provided-resource = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/provided-allotted-resources/provided-allotted-resource={allotted-resource-id}?content=config
 ccsdkTopologicalLinks.logical-link[9].relationship-list.relationship[1].relationship-data[0].relationship-value = networkId-providerId-40-clientId-0-topologyId-1-nodeId-10.4.1.3
 ccsdkTopopnfs.pnf[7].pnf-name = networkId-providerId-50-clientId-0-topologyId-2-nodeId-10.5.1.4
 ccsdkTopologicalLinks.logical-link[4].relationship-list.relationship_length = 2
 vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param[0].name = henry-alloc-002
 ccsdkTopopnfs.pnf[4].relationship-list.relationship[2].relationship-data[0].relationship-value = networkId-providerId-40-clientId-0-topologyId-1-nodeId-10.4.1.2-ttpId-MTI=
-prop.restapi.ss-vfmodule-assignments = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+prop.restapi.ss-vfmodule-assignments = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vf-modules/vf-module={vf-module-id}?content=config
 allNetworksList.network-resource[1].relationship-list.relationship[4].relationship-data[0].relationship-value = networkId-providerId-50-clientId-0-topologyId-2-nodeId-10.5.1.2
 tmp.aai.dst-pnf.relationship-list.relationship[4].related-to = network-resource
 prop.otn-tunnel-name = 00c0c006-9eb6-4113-a0cf-cbbfb154f5f6
@@ -2665,7 +2665,7 @@ ccsdkTopologicalLinks.logical-link[29].relationship-list.relationship[0].relatio
 tmp.aai.dst-ttp.encoding = ietf-te-types:lsp-encoding-oduk
 ccsdkTopologicalLinks.logical-link[14].relationship-list.relationship[1].relationship-data[1].relationship-key = p-interface.interface-name
 tmp.aai.src-pnf.p-interfaces.p-interface[1].relationship-list.relationship[1].relationship-data[0].relationship-value = networkId-providerId-40-clientId-0-topologyId-1-linkId-10.4.1.2-2
-prop.restapi.tx-allottedresource = /restconf/config/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource/{allotted-resource-id}/
+prop.restapi.tx-allottedresource = /rests/data/GENERIC-RESOURCE-API:tunnelxconn-allotted-resources/tunnelxconn-allotted-resource={allotted-resource-id}?content=config
 ccsdkTopologicalLinks.logical-link[11].relationship-list.relationship[1].related-link = /aai/v21/network/pnfs/pnf/networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.3/p-interfaces/p-interface/networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.3-ltpId-22
 ccsdkTopopnfs.pnf[5].relationship-list.relationship[0].relationship-data[0].relationship-key = esr-thirdparty-sdnc.thirdparty-sdnc-id
 ccsdkTopologicalLinks.logical-link[4].relationship-list.relationship[1].related-link = /aai/v21/network/pnfs/pnf/networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.4/p-interfaces/p-interface/networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.4-ltpId-12
@@ -2710,7 +2710,7 @@ ccsdkTopologicalLinks.logical-link[23].relationship-list.relationship[0].relatio
 ccsdkTopologicalLinks.logical-link[20].link-name = networkId-providerId-50-clientId-0-topologyId-1-linkId-10.5.1.2-12
 ccsdkTopologicalLinks.logical-link[16].in-maint = false
 tmp.aai.service-instance.allotted-resources.allotted-resource[0].relationship-list.relationship[3].related-to-property[0].property-value = 1234
-prop.restapi.vf-module = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/vnfs/vnf/{vnf-id}/vnf-data/vf-modules/vf-module/{vf-module-id}/
+prop.restapi.vf-module = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/vnfs/vnf={vnf-id}/vnf-data/vf-modules/vf-module={vf-module-id}?content=config
 ccsdkTopologicalLinks.logical-link[13].relationship-list.relationship[0].related-link = /aai/v21/network/pnfs/pnf/networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.1/p-interfaces/p-interface/networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.1-ltpId-12
 ccsdkTopologicalLinks.logical-link[29].relationship-list.relationship[1].relationship-data[0].relationship-key = pnf.pnf-name
 allNetworksList.network-resource[5].relationship-list.relationship[0].related-to = esr-thirdparty-sdnc
@@ -2751,7 +2751,7 @@ tmp.aai.dst-pnf.relationship-list.relationship[3].relationship-data[0].relations
 tmp.aai.dst-ttp.relationship-list.relationship[0].relationship-label = tosca.relationships.network.BindsTo
 ccsdkTopologicalLinks.logical-link[5].relationship-list.relationship[1].relationship-data[0].relationship-key = pnf.pnf-name
 tmp.otninfo[1].dstPort.dst-access-topology-id = 1
-prop.restapi.ss-pnf-assignments = /restconf/config/GENERIC-RESOURCE-API:services/service/{service-instance-id}/service-data/pnfs/pnf/{pnf-id}/
+prop.restapi.ss-pnf-assignments = /rests/data/GENERIC-RESOURCE-API:services/service={service-instance-id}/service-data/pnfs/pnf={pnf-id}?content=config
 ccsdkTopologicalLinks.logical-link[14].link-name = networkId-providerId-30-clientId-0-topologyId-1-linkId-10.3.1.4-12
 ccsdkTopopnfs.pnf[8].relationship-list.relationship[1].related-to = tunnel-termination-point
 tmp.aai.domainB.esr-thirdparty-sdnc.relationship-list.relationship[7].relationship-label = org.onap.relationships.inventory.AppliesTo
@@ -2816,7 +2816,7 @@ ccsdkTopologicalLinks.logical-link[32].relationship-list.relationship[1].related
 tmp.src.ltpId = 312
 ccsdkTopopnfs.pnf[12].relationship-list.relationship[5].relationship-data[0].relationship-key = network-resource.network-id
 ccsdkTopologicalLinks.logical-link[17].relationship-list.relationship[0].relationship-data[1].relationship-value = networkId-providerId-30-clientId-0-topologyId-1-nodeId-10.3.1.3-ltpId-12
-prop.restapi.cr-allottedresource = /restconf/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/{allotted-resource-id}/
+prop.restapi.cr-allottedresource = /rests/data/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource={allotted-resource-id}?content=config
 param-prefix-domainB-pnfName_length = 11
 ccsdkTopopnfs.pnf[2].relationship-list.relationship[3].related-to-property[0].property-key = network-resource.network-id
 tmp.aai.src-ttp.relationship-list.relationship[0].related-link = /aai/v21/network/pnfs/pnf/networkId-providerId-40-clientId-0-topologyId-1-nodeId-10.4.1.2