diff options
25 files changed, 349 insertions, 405 deletions
diff --git a/csit/scripts/dmaap-datarouter/docker-compose/node.properties b/csit/scripts/dmaap-datarouter/docker-compose/node.properties index 58639cfd..9f3ca40d 100644 --- a/csit/scripts/dmaap-datarouter/docker-compose/node.properties +++ b/csit/scripts/dmaap-datarouter/docker-compose/node.properties @@ -80,3 +80,6 @@ CadiEnabled = false # # AAF Props file path AAFPropsFilePath = /opt/app/osaaf/local/org.onap.dmaap-dr.props + +# https security required for publish request +TlsEnabled = true diff --git a/csit/scripts/dmaap-datarouter/docker-compose/provserver.properties b/csit/scripts/dmaap-datarouter/docker-compose/provserver.properties index b54868e2..b38c3f56 100755 --- a/csit/scripts/dmaap-datarouter/docker-compose/provserver.properties +++ b/csit/scripts/dmaap-datarouter/docker-compose/provserver.properties @@ -52,4 +52,7 @@ org.onap.dmaap.datarouter.provserver.aaf.feed.type = org.onap.dmaap-dr.fe org.onap.dmaap.datarouter.provserver.aaf.sub.type = org.onap.dmaap-dr.sub org.onap.dmaap.datarouter.provserver.aaf.instance = legacy org.onap.dmaap.datarouter.provserver.aaf.action.publish = publish -org.onap.dmaap.datarouter.provserver.aaf.action.subscribe = subscribe
\ No newline at end of file +org.onap.dmaap.datarouter.provserver.aaf.action.subscribe = subscribe +org.onap.dmaap.datarouter.provserver.tlsenabled = true +org.onap.dmaap.datarouter.nodeserver.https.port = 8443 +org.onap.dmaap.datarouter.nodeserver.http.port = 8080
\ No newline at end of file diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java index 5b5245da..3b950232 100644 --- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java +++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeConfigManager.java @@ -102,6 +102,7 @@ public class NodeConfigManager implements DeliveryQueueHelper { private String aafType; private String aafInstance; private String aafAction; + private boolean tlsEnabled; private boolean cadiEnabled; private NodeAafPropsUtils nodeAafPropsUtils; @@ -159,6 +160,8 @@ public class NodeConfigManager implements DeliveryQueueHelper { svcport = Integer.parseInt(drNodeProperties.getProperty("IntHttpsPort", "8443")); port = Integer.parseInt(drNodeProperties.getProperty("ExtHttpsPort", "443")); spooldir = drNodeProperties.getProperty("SpoolDir", "spool"); + tlsEnabled = Boolean.parseBoolean(drNodeProperties.getProperty("TlsEnabled", "true")); + File fdir = new File(spooldir + "/f"); fdir.mkdirs(); for (File junk : Objects.requireNonNull(fdir.listFiles())) { @@ -811,6 +814,10 @@ public class NodeConfigManager implements DeliveryQueueHelper { return aafAction; } + protected boolean isTlsEnabled() { + return tlsEnabled; + } + boolean getCadiEnabled() { return cadiEnabled; } diff --git a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java index 139c7492..ee1f5b7d 100644 --- a/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java +++ b/datarouter-node/src/main/java/org/onap/dmaap/datarouter/node/NodeServlet.java @@ -549,7 +549,7 @@ public class NodeServlet extends HttpServlet { eelfLogger.info(EelfMsgs.EXIT); return null; } - if (!req.isSecure()) { + if (!req.isSecure() && config.isTlsEnabled()) { eelfLogger.error( "NODE0104 Rejecting insecure PUT or DELETE of " + req.getPathInfo() + FROM + req .getRemoteAddr()); diff --git a/datarouter-node/src/main/resources/node.properties b/datarouter-node/src/main/resources/node.properties index 1d7a5d42..f7c24fab 100644 --- a/datarouter-node/src/main/resources/node.properties +++ b/datarouter-node/src/main/resources/node.properties @@ -85,3 +85,6 @@ CadiEnabled = false # # AAF Props file path AAFPropsFilePath = /opt/app/osaaf/local/org.onap.dmaap-dr.props + +# https security required for publish request +TlsEnabled = true diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigManagerTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigManagerTest.java index e64579ed..82038fba 100644 --- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigManagerTest.java +++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeConfigManagerTest.java @@ -112,6 +112,7 @@ public class NodeConfigManagerTest { Assert.assertEquals("publish", nodeConfigManager.getAafAction()); Assert.assertFalse(nodeConfigManager.getCadiEnabled()); Assert.assertFalse(nodeConfigManager.isShutdown()); + Assert.assertTrue(nodeConfigManager.isTlsEnabled()); Assert.assertTrue(nodeConfigManager.isConfigured()); Assert.assertEquals("legacy", nodeConfigManager.getAafInstance("1")); Assert.assertNotNull(nodeConfigManager.getPublishId()); diff --git a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java index 4340b018..f7e3d7c8 100644 --- a/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java +++ b/datarouter-node/src/test/java/org/onap/dmaap/datarouter/node/NodeServletTest.java @@ -23,7 +23,6 @@ package org.onap.dmaap.datarouter.node; import static org.junit.Assert.assertEquals; -import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyObject; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.anyString; @@ -144,8 +143,9 @@ public class NodeServletTest { } @Test - public void Given_Request_Is_HTTP_PUT_And_Request_Is_Not_Secure_Then_Forbidden_Response_Is_Generated() throws Exception { + public void Given_Request_Is_HTTP_PUT_And_Request_Is_Not_Secure_And_TLS_Enabled_Then_Forbidden_Response_Is_Generated() throws Exception { when(request.isSecure()).thenReturn(false); + when(config.isTlsEnabled()).thenReturn(true); nodeServlet.doPut(request, response); verify(response).sendError(eq(HttpServletResponse.SC_FORBIDDEN), anyString()); verifyEnteringExitCalled(listAppender); @@ -285,6 +285,17 @@ public class NodeServletTest { } @Test + public void Given_Request_Is_HTTP_DELETE_File_And_Request_Is_Not_Secure_But_TLS_Disabled_Then_Request_Succeeds() throws Exception { + when(request.isSecure()).thenReturn(false); + when(config.isTlsEnabled()).thenReturn(false); + when(request.getPathInfo()).thenReturn("/delete/1/dmaap-dr-node.1234567"); + createFilesAndDirectories(); + nodeServlet.doDelete(request, response); + verify(response).setStatus(eq(HttpServletResponse.SC_OK)); + verifyEnteringExitCalled(listAppender); + } + + @Test public void Given_Request_Is_HTTP_DELETE_File_And_File_Does_Not_Exist_Then_Not_Found_Response_Is_Generated() throws IOException { when(request.getPathInfo()).thenReturn("/delete/1/nonExistingFile"); nodeServlet.doDelete(request, response); diff --git a/datarouter-node/src/test/resources/node_test.properties b/datarouter-node/src/test/resources/node_test.properties index 9359e8dc..3c96ed25 100644 --- a/datarouter-node/src/test/resources/node_test.properties +++ b/datarouter-node/src/test/resources/node_test.properties @@ -86,3 +86,6 @@ CadiEnabled = false # AAF Props file path AAFPropsFilePath = src/test/resources/aaf/org.onap.dmaap-dr.props +# https security required for publish request +TlsEnabled = true + diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java index 35205aa9..949019d1 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/PublishServlet.java @@ -45,6 +45,7 @@ import org.onap.dmaap.datarouter.provisioning.utils.Poker; import org.onap.dmaap.datarouter.provisioning.beans.EventLogRecord;
import org.onap.dmaap.datarouter.provisioning.beans.IngressRoute;
import org.onap.dmaap.datarouter.provisioning.eelf.EelfMsgs;
+import org.onap.dmaap.datarouter.provisioning.utils.URLUtilities;
/**
* This servlet handles redirects for the <publishURL> on the provisioning server, which is generated by the
@@ -158,9 +159,15 @@ public class PublishServlet extends BaseServlet { } else {
// Generate new URL
String nextnode = getRedirectNode(feedid, req);
- nextnode = nextnode + ":" + ProvRunner.getProvProperties().getProperty(
- "org.onap.dmaap.datarouter.provserver.https.port", "8443");
- String newurl = "https://" + nextnode + "/publish" + req.getPathInfo();
+ if (Boolean.parseBoolean(ProvRunner.getProvProperties()
+ .getProperty("org.onap.dmaap.datarouter.provserver.tlsenabled", "true"))) {
+ nextnode = nextnode + ":" + ProvRunner.getProvProperties().getProperty(
+ "org.onap.dmaap.datarouter.nodeserver.https.port", "8443");
+ } else {
+ nextnode = nextnode + ":" + ProvRunner.getProvProperties().getProperty(
+ "org.onap.dmaap.datarouter.nodeserver.http.port", "8080");
+ }
+ String newurl = URLUtilities.getUrlSecurityOption() + nextnode + "/publish" + req.getPathInfo();
String qs = req.getQueryString();
if (qs != null) {
newurl += "?" + qs;
diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/URLUtilities.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/URLUtilities.java index 2e000027..988b576f 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/URLUtilities.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/URLUtilities.java @@ -28,8 +28,8 @@ import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager;
import java.net.InetAddress;
import java.net.UnknownHostException;
-
import org.onap.dmaap.datarouter.provisioning.BaseServlet;
+import org.onap.dmaap.datarouter.provisioning.ProvRunner;
/**
* Utility functions used to generate the different URLs used by the Data Router.
@@ -39,9 +39,7 @@ import org.onap.dmaap.datarouter.provisioning.BaseServlet; */
public class URLUtilities {
-
private static final EELFLogger utilsLogger = EELFManager.getInstance().getLogger("UtilsLog");
- private static final String HTTPS = "https://";
private static String otherPod;
private URLUtilities() {
@@ -54,7 +52,7 @@ public class URLUtilities { * @return the URL
*/
public static String generateFeedURL(int feedid) {
- return HTTPS + BaseServlet.getProvName() + "/feed/" + feedid;
+ return getUrlSecurityOption() + BaseServlet.getProvName() + getAppropriateUrlPort() + "/feed/" + feedid;
}
/**
@@ -64,7 +62,7 @@ public class URLUtilities { * @return the URL
*/
public static String generatePublishURL(int feedid) {
- return HTTPS + BaseServlet.getProvName() + "/publish/" + feedid;
+ return getUrlSecurityOption() + BaseServlet.getProvName() + getAppropriateUrlPort() + "/publish/" + feedid;
}
/**
@@ -74,7 +72,7 @@ public class URLUtilities { * @return the URL
*/
public static String generateSubscribeURL(int feedid) {
- return HTTPS + BaseServlet.getProvName() + "/subscribe/" + feedid;
+ return getUrlSecurityOption() + BaseServlet.getProvName() + getAppropriateUrlPort() + "/subscribe/" + feedid;
}
/**
@@ -84,7 +82,7 @@ public class URLUtilities { * @return the URL
*/
public static String generateFeedLogURL(int feedid) {
- return HTTPS + BaseServlet.getProvName() + "/feedlog/" + feedid;
+ return getUrlSecurityOption() + BaseServlet.getProvName() + getAppropriateUrlPort() + "/feedlog/" + feedid;
}
/**
@@ -94,7 +92,7 @@ public class URLUtilities { * @return the URL
*/
public static String generateSubscriptionURL(int subid) {
- return HTTPS + BaseServlet.getProvName() + "/subs/" + subid;
+ return getUrlSecurityOption() + BaseServlet.getProvName() + getAppropriateUrlPort() + "/subs/" + subid;
}
/**
@@ -104,7 +102,7 @@ public class URLUtilities { * @return the URL
*/
public static String generateSubLogURL(int subid) {
- return HTTPS + BaseServlet.getProvName() + "/sublog/" + subid;
+ return getUrlSecurityOption() + BaseServlet.getProvName() + getAppropriateUrlPort() + "/sublog/" + subid;
}
/**
@@ -113,7 +111,7 @@ public class URLUtilities { * @return the URL
*/
public static String generatePeerProvURL() {
- return HTTPS + getPeerPodName() + "/internal/prov";
+ return getUrlSecurityOption() + getPeerPodName() + getAppropriateUrlPort() + "/internal/prov";
}
/**
@@ -128,7 +126,7 @@ public class URLUtilities { return "";
}
- return HTTPS + peerPodUrl + "/internal/drlogs/";
+ return getUrlSecurityOption() + peerPodUrl + getAppropriateUrlPort() + "/internal/drlogs/";
}
/**
@@ -154,4 +152,21 @@ public class URLUtilities { return otherPod;
}
+ public static String getUrlSecurityOption() {
+ if (Boolean.parseBoolean(ProvRunner.getProvProperties()
+ .getProperty("org.onap.dmaap.datarouter.provserver.tlsenabled", "true"))) {
+ return "https://";
+ }
+ return "http://";
+ }
+
+ private static String getAppropriateUrlPort() {
+ if (Boolean.parseBoolean(ProvRunner.getProvProperties()
+ .getProperty("org.onap.dmaap.datarouter.provserver.tlsenabled", "true")))
+ return "";
+
+ return ":" + ProvRunner.getProvProperties()
+ .getProperty("org.onap.dmaap.datarouter.provserver.http.port", "8080");
+
+ }
}
diff --git a/datarouter-prov/src/main/resources/provserver.properties b/datarouter-prov/src/main/resources/provserver.properties index ad9a19e3..642088ff 100755 --- a/datarouter-prov/src/main/resources/provserver.properties +++ b/datarouter-prov/src/main/resources/provserver.properties @@ -56,4 +56,8 @@ org.onap.dmaap.datarouter.provserver.aaf.feed.type = org.onap.dmaap-dr.fe org.onap.dmaap.datarouter.provserver.aaf.sub.type = org.onap.dmaap-dr.sub org.onap.dmaap.datarouter.provserver.aaf.instance = legacy org.onap.dmaap.datarouter.provserver.aaf.action.publish = publish -org.onap.dmaap.datarouter.provserver.aaf.action.subscribe = subscribe
\ No newline at end of file +org.onap.dmaap.datarouter.provserver.aaf.action.subscribe = subscribe + +org.onap.dmaap.datarouter.provserver.tlsenabled = true +org.onap.dmaap.datarouter.nodeserver.https.port = 8443 +org.onap.dmaap.datarouter.nodeserver.http.port = 8080
\ No newline at end of file diff --git a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServletTest.java b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServletTest.java index d644df9a..1f4fd535 100755 --- a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServletTest.java +++ b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/SubscriptionServletTest.java @@ -22,9 +22,27 @@ ******************************************************************************/ package org.onap.dmaap.datarouter.provisioning; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.contains; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.onap.dmaap.datarouter.provisioning.BaseServlet.BEHALF_HEADER; + import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.read.ListAppender; import java.sql.Connection; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.Set; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.reflect.FieldUtils; import org.jetbrains.annotations.NotNull; import org.json.JSONObject; @@ -45,25 +63,6 @@ import org.onap.dmaap.datarouter.provisioning.utils.ProvDbUtils; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.modules.junit4.PowerMockRunner; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; -import javax.servlet.ServletInputStream; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.sql.SQLException; -import java.util.HashSet; -import java.util.Set; - -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.contains; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.onap.dmaap.datarouter.provisioning.BaseServlet.BEHALF_HEADER; - @RunWith(PowerMockRunner.class) @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*", "org.w3c.*"}) @@ -89,7 +88,7 @@ public class SubscriptionServletTest extends DrServletTestBase { em = emf.createEntityManager(); System.setProperty( "org.onap.dmaap.datarouter.provserver.properties", - "src/test/resources/h2Database.properties"); + "src/test/resources/h2DatabaseTlsDisabled.properties"); } @AfterClass @@ -157,14 +156,6 @@ public class SubscriptionServletTest extends DrServletTestBase { } @Test - public void Given_Request_Is_HTTP_DELETE_And_AAF_CADI_Is_Enabled_Without_Permissions_Then_Forbidden_Response_Is_Generated() throws Exception { - when(request.getHeader("Content-Type")).thenReturn("application/vnd.dmaap-dr.subscription; version=1.0"); - when(request.getPathInfo()).thenReturn("/2"); - subscriptionServlet.doDelete(request, response); - verify(response).sendError(eq(HttpServletResponse.SC_FORBIDDEN), contains("AAF disallows access")); - } - - @Test public void Given_Request_Is_HTTP_DELETE_And_AAF_CADI_Is_Enabled_With_Permissions_Then_A_NO_CONTENT_Response_Is_Generated() throws Exception { when(request.getHeader("Content-Type")).thenReturn("application/vnd.dmaap-dr.subscription; version=1.0"); when(request.getPathInfo()).thenReturn("/2"); diff --git a/datarouter-prov/src/test/resources/h2Database.properties b/datarouter-prov/src/test/resources/h2Database.properties index 6957ae17..95968716 100755 --- a/datarouter-prov/src/test/resources/h2Database.properties +++ b/datarouter-prov/src/test/resources/h2Database.properties @@ -31,3 +31,6 @@ org.onap.dmaap.datarouter.provserver.accesslog.dir = unit-test-logs org.onap.dmaap.datarouter.provserver.spooldir = src/test/resources org.onap.dmaap.datarouter.provserver.dbscripts = src/test/resources org.onap.dmaap.datarouter.provserver.localhost = 127.0.0.1 +org.onap.dmaap.datarouter.provserver.tlsenabled = true +org.onap.dmaap.datarouter.nodeserver.https.port = 8443 +org.onap.dmaap.datarouter.nodeserver.http.port = 8080 diff --git a/datarouter-prov/src/test/resources/h2DatabaseTlsDisabled.properties b/datarouter-prov/src/test/resources/h2DatabaseTlsDisabled.properties new file mode 100644 index 00000000..05ab3a47 --- /dev/null +++ b/datarouter-prov/src/test/resources/h2DatabaseTlsDisabled.properties @@ -0,0 +1,36 @@ +#------------------------------------------------------------------------------- +# ============LICENSE_START================================================== +# * org.onap.dmaap +# * =========================================================================== +# * Copyright ? 2017 AT&T Intellectual Property. All rights reserved. +# * =========================================================================== +# * Licensed under the Apache License, Version 2.0 (the "License"); +# * you may not use this file except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# * ============LICENSE_END==================================================== +# * +# * ECOMP is a trademark and service mark of AT&T Intellectual Property. +# * +#------------------------------------------------------------------------------- + +# Database access +org.onap.dmaap.datarouter.db.driver = org.h2.Driver +org.onap.dmaap.datarouter.db.url = jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 +org.onap.dmaap.datarouter.provserver.isaddressauthenabled = true +org.onap.dmaap.datarouter.provserver.cadi.enabled = true +org.onap.dmaap.datarouter.provserver.https.relaxation = false +org.onap.dmaap.datarouter.provserver.accesslog.dir = unit-test-logs +org.onap.dmaap.datarouter.provserver.spooldir = src/test/resources +org.onap.dmaap.datarouter.provserver.dbscripts = src/test/resources +org.onap.dmaap.datarouter.provserver.localhost = 127.0.0.1 +org.onap.dmaap.datarouter.provserver.tlsenabled = false +org.onap.dmaap.datarouter.nodeserver.https.port = 8443 +org.onap.dmaap.datarouter.nodeserver.http.port = 8080 diff --git a/docs/apis/data-router-api.rst b/docs/apis/data-router-api.rst index 1604e62d..0b1c0cbe 100755 --- a/docs/apis/data-router-api.rst +++ b/docs/apis/data-router-api.rst @@ -44,12 +44,6 @@ Specifies HTTP Headers, such as Content-Type, that define the parameters of the The HTTP Body contains the feed content when creating a feed.
-**HTTP Authorization**
-
-The user-id:password pair:
-
-* If AAF enabled: A valid AAF AppId to be authenticated and authorized by the AAF CADI framework.
-* If Non AAF : When publishing or retracting a file, a valid `EID Object`_ with publish permissions.
Create a Feed
-------------
@@ -62,43 +56,35 @@ Create a Feed **Request Parameters:**
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| Field | Description | Param Type | Data Type | MaxLen | Set By | Updatable? | Required | Valid/Example Values |
-+======================+================================+============+==================+========+========+============+==========+===============================+
-| name | Feed name | Body | String | <=20 | Client | N | Y | |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| version | Feed version | Body | String | <=20 | Client | N | Y | v1.0.0 |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| description | Feed description | Body | String | <=256 | Client | Y | N | |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| business description | Business description | Body | String | <=256 | Client | Y | N | |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| authorization | Information for authorizing | Body |`Auth Object`_ | | Client | Y | Y | |
-| | publishing requests | | | | | | | |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| suspend | Set to true if the feed is in | Body | Boolean | | Client | Y | N | * true |
-| | the suspended state | | | | | | | * false (default) |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| group-id | Auth group for feed management | Body | Integer | | Client | Y | N | 0 (default) |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| aaf_instance | The instance passed to aaf | Body | String | <=256 | Client | N | N | legacy (default) |
-| | during permission checks | | | | | | | |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| Content-Type | To specify type of message | Header | String | | Client | N | Y | application/vnd.dmaap-dr.feed |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| publisher | Publisher identity as passed | Header | String | <=8 | DR | N | Y | username |
-| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | | | |
-| | creation time | | | | | | | |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| Authorization | The user / AppId to be | Header | String | | Client | N | Y if AAF | dcae@dcae.onap.org:{password} |
-| | authorized by the AAF CADI | | | | | | enabled | |
-| | framework | | | | | | | |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| X-EXCLUDE-AAF | To determine if the feed to | Header | Boolean | | Client | N | Y if AAF | * true (for legacy feed) |
-| | create is legacy or AAF | | | | | | enabled | * false (for AAF feed) |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
-| Links | URLs related to this feed | Body |`Feed Links Obj`_ | | DR | N | N | |
-+----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| Field | Description | Param Type | Data Type | MaxLen | Set By | Updatable? | Required | Valid/Example Values |
++=========================+================================+============+==================+========+========+============+==========+===============================+
+| name | Feed name | Body | String | <=20 | Client | N | Y | |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| version | Feed version | Body | String | <=20 | Client | N | Y | v1.0.0 |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| description | Feed description | Body | String | <=256 | Client | Y | N | |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| business description | Business description | Body | String | <=256 | Client | Y | N | |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| authorization | Information for authorizing | Body |`Auth Object`_ | | Client | Y | Y | |
+| | publishing requests | | | | | | | |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| suspend | Set to true if the feed is in | Body | Boolean | | Client | Y | N | * true |
+| | the suspended state | | | | | | | * false (default) |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| group-id | Auth group for feed management | Body | Integer | | Client | Y | N | 0 (default) |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| Content-Type | To specify type of message | Header | String | | Client | N | Y | application/vnd.dmaap-dr.feed |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| Authorization | The user / AppId to be | Header | String | | Client | N | Y | Basic <credentials> |
+| | authorized | | | | | | | |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+| X-DMAAP-DR-ON-BEHALF-OF | Publisher identity as passed | Header | String | <=8 | DR | N | Y | username |
+| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | | | |
+| | creation time | | | | | | | |
++-------------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+
+
**Response Codes**
@@ -158,17 +144,12 @@ Create a Feed {
"password": "dradmin",
"id": "dradmin"
- },
- {
- "password": "demo123456!",
- "id": "onap"
}
]
},
"name": "ONAP Data Feed",
"business_description": "",
- "aaf_instance": "legacy",
- "publisher": "dradmin",
+ "publisher": "{user}",
"links": {
"subscribe": "https://dmaap-dr-prov/subscribe/1",
"log": "https://dmaap-dr-prov/feedlog/1",
@@ -191,35 +172,34 @@ Update a Feed **Request Parameters:**
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| Field | Description | Param Type | Data Type | MaxLen | Required |
-+========================+=================================+=============+===============+============+=============+
-| name | Feed name | Body | String | <=20 | Y |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| description | Feed description | Body | String | <=256 | N |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| business description | Business description | Body | String | <=256 | N |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| authorization | Information for authorizing | Body |`Auth Object`_ | | Y |
-| | publishing requests | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| suspend | Set to true if the feed is in | Body | Boolean | | N |
-| | the suspended state | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| group-id | Auth group for feed management | Body | Integer | | N |
-| | | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| Content-type | To specify type of message | Header | String | | Y |
-| | (feed,subscriber,publisher) | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| publisher | Publisher identity as passed | Header | String | <=8 | Y |
-| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
-| | creation time | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| Authorization | The user / AppId to be | Header | String | | Y if AAF |
-| | authorized by the AAF CADI | | | | enabled |
-| | framework | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| Field | Description | Param Type | Data Type | MaxLen | Required |
++=========================+=================================+=============+===============+============+=============+
+| name | Feed name | Body | String | <=20 | Y |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| description | Feed description | Body | String | <=256 | N |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| business description | Business description | Body | String | <=256 | N |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| authorization | Information for authorizing | Body |`Auth Object`_ | | Y |
+| | publishing requests | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| suspend | Set to true if the feed is in | Body | Boolean | | N |
+| | the suspended state | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| group-id | Auth group for feed management | Body | Integer | | N |
+| | | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| Content-type | To specify type of message | Header | String | | Y |
+| | (feed,subscriber,publisher) | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| Authorization | The user / AppId to be | Header | String | | Y |
+| | authorized | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| X-DMAAP-DR-ON-BEHALF-OF | Publisher identity as passed | Header | String | <=8 | Y |
+| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
+| | creation time | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
**Response Codes**
@@ -295,8 +275,7 @@ Update a Feed },
"name": "ONAP Data Feed1",
"business_description": "Updated ONAP Feed",
- "aaf_instance": "legacy",
- "publisher": "dradmin",
+ "publisher": "{user}",
"links": {
"subscribe": "https://dmaap-dr-prov/subscribe/1",
"log": "https://dmaap-dr-prov/feedlog/1",
@@ -319,17 +298,16 @@ Get a Feed **Request Parameters:**
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| Field | Description | Param Type | Data Type | MaxLen | Required |
-+========================+=================================+=============+===============+============+=============+
-| publisher | Publisher identity as passed | Header | String | <=8 | Y |
-| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
-| | creation time | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| Authorization | The user / AppId to be | Header | String | | Y if AAF |
-| | authorized by the AAF CADI | | | | enabled |
-| | framework | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| Field | Description | Param Type | Data Type | MaxLen | Required |
++=========================+=================================+=============+===============+============+=============+
+| Authorization | The user / AppId to be | Header | String | | Y |
+| | authorized | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| X-DMAAP-DR-ON-BEHALF-OF | Publisher identity as passed | Header | String | <=8 | Y |
+| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
+| | creation time | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
**Response Codes**
@@ -367,17 +345,12 @@ Get a Feed {
"password": "dradmin",
"id": "dradmin"
- },
- {
- "password": "demo123456!",
- "id": "onap"
}
]
},
"name": "ONAP Data Feed",
"business_description": "Updated ONAP Feed",
- "aaf_instance": "legacy",
- "publisher": "dradmin",
+ "publisher": "{user}",
"links": {
"subscribe": "https://dmaap-dr-prov/subscribe/1",
"log": "https://dmaap-dr-prov/feedlog/1",
@@ -399,17 +372,16 @@ Delete a Feed **Request Parameters:**
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| Field | Description | Param Type | Data Type | MaxLen | Required |
-+========================+=================================+=============+===============+============+=============+
-| publisher | Publisher identity as passed | Header | String | <=8 | Y |
-| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
-| | creation time | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
-| Authorization | The user / AppId to be | Header | String | | Y if AAF |
-| | authorized by the AAF CADI | | | | enabled |
-| | framework | | | | |
-+------------------------+---------------------------------+-------------+---------------+------------+-------------+
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| Field | Description | Param Type | Data Type | MaxLen | Required |
++=========================+=================================+=============+===============+============+=============+
+| Authorization | The user / AppId to be | Header | String | | Y |
+| | authorized | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| X-DMAAP-DR-ON-BEHALF-OF | Publisher identity as passed | Header | String | <=8 | Y |
+| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
+| | creation time | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
**Response Codes**
@@ -438,51 +410,40 @@ Subscribe to Feed **Request Parameters:**
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| Field | Description | Param Type | Data Type | MaxLen | Set By | Updatable? | Required | Valid/Example Values |
-+=================+=================================+===============+=================+========+========+============+==========+======================================+
-| feedId | ID for the feed you are | Path | String | | Client | N | Y | 1 |
-| | subscribing to | | | | | | | |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| delivery | Address and credentials for | Body | `Del Object`_ | | Client | Y | Y | |
-| | delivery | | | | | | | |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| follow_redirect | Set to true if feed redirection | Body | Boolean | | Client | Y | N | * true |
-| | is expected | | | | | | | * false (default) |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| metadata_only | Set to true if subscription is | Body | Boolean | | Client | Y | Y | * true |
-| | to receive per-file metadata | | | | | | | * false |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| suspend | Set to true if the subscription | Body | Boolean | | Client | Y | N | * true |
-| | is in the suspended state | | | | | | | * false (default) |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| decompress | Set to true if the data is to | Body | Boolean | | Client | Y | N | * true |
-| | be decompressed for subscriber | | | | | | | * false (default) |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| group-id | Auth group for sub management | Body | Integer | | Client | Y | Y | 22 |
-| | | | | | | | | |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| aaf_instance | The instance passed to aaf | Body | String | <=256 | Client | N | N | * legacy (default) |
-| | during permission checks | | | | | | | |
-| | | | | | | | | |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| Content-type | To specify type of message | Header | String | | Client | N | Y | application/vnd.dmaap-dr.subscription|
-| | (feed,subscriber,publisher) | | | | | | | |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| subscriber | Subscriber identity as passed | Header | String | <=8 | DR | N | Y | username |
-| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | | | |
-| | creation time | | | | | | | |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| Authorization | The user / AppId to be | Header | String | | Client | N | Y if AAF | dcae@dcae.onap.org:{password} |
-| | authorized by the AAF CADI | | | | | | enabled | |
-| | framework | | | | | | | |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| X-EXCLUDE-AAF | To determine if the feed to | Header | Boolean | | Client | N | Y if AAF | * true (for legacy feed) |
-| | create is legacy or AAF | | | | | | enabled | * false (for AAF feed) |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
-| Links | URLs related to this | Body |`Sub Links Obj`_ | | DR | N | N | |
-| | subscription | | | | | | | |
-+-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| Field | Description | Param Type | Data Type | MaxLen | Set By | Updatable? | Required | Valid/Example Values |
++=========================+=================================+===============+=================+========+========+============+==========+======================================+
+| feedId | ID for the feed you are | Path | String | | Client | N | Y | 1 |
+| | subscribing to | | | | | | | |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| delivery | Address and credentials for | Body | `Del Object`_ | | Client | Y | Y | |
+| | delivery | | | | | | | |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| follow_redirect | Set to true if feed redirection | Body | Boolean | | Client | Y | N | * true |
+| | is expected | | | | | | | * false (default) |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| metadata_only | Set to true if subscription is | Body | Boolean | | Client | Y | Y | * true |
+| | to receive per-file metadata | | | | | | | * false |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| suspend | Set to true if the subscription | Body | Boolean | | Client | Y | N | * true |
+| | is in the suspended state | | | | | | | * false (default) |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| decompress | Set to true if the data is to | Body | Boolean | | Client | Y | N | * true |
+| | be decompressed for subscriber | | | | | | | * false (default) |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| group-id | Auth group for sub management | Body | Integer | | Client | Y | Y | 22 |
+| | | | | | | | | |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| Content-type | To specify type of message | Header | String | | Client | N | Y | application/vnd.dmaap-dr.subscription|
+| | (feed,subscriber,publisher) | | | | | | | |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| Authorization | The user / AppId to be | Header | String | | Client | N | Y | Basic <credentials> |
+| | authorized | | | | | | | |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
+| X-DMAAP-DR-ON-BEHALF-OF | Publisher identity as passed | Header | String | <=8 | DR | N | Y | username |
+| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | | | |
+| | creation time | | | | | | | |
++-------------------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+
**Response Codes**
@@ -535,12 +496,11 @@ Subscribe to Feed "user": "LOGIN",
"url": "http://dmaap-dr-subscriber:7070/"
},
- "subscriber": "onap",
+ "subscriber": "{user}",
"groupid": 1,
"metadataOnly": false,
"follow_redirect": true,
"decompress": true,
- "aaf_instance": "legacy",
"links": {
"feed": "https://dmaap-dr-prov/feed/1",
"log": "https://dmaap-dr-prov/sublog/1",
@@ -563,44 +523,40 @@ Update subscription **Request Parameters:**
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| Field | Description | Param Type | Data Type | MaxLen | Required |
-+=================+=================================+==============+===============+========+=============+
-| subId | ID for the subscription you are | Path | String | | Y |
-| | updating | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| delivery | Address and credentials for | Body | `Del Object`_ | | Y |
-| | delivery | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| follow_redirect | Set to true if feed redirection | Body | Boolean | | N |
-| | is expected | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| metadata_only | Set to true if subscription is | Body | Boolean | | Y |
-| | to receive per-file metadata | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| suspend | Set to true if the subscription | Body | Boolean | | N |
-| | is in the suspended state | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| decompress | Set to true if the data is to | Body | Boolean | | N |
-| | be decompressed for subscriber | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| group-id | Auth group for sub management | Body | Integer | | Y |
-| | | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| Content-type | To specify type of message | Header | String | | Y |
-| | (feed,subscriber,publisher) | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| subscriber | Subscriber identity as passed | Header | String | <=8 | Y |
-| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
-| | creation time | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| Authorization | The user / AppId to be | Header | String | | Y if AAF |
-| | authorized by the AAF CADI | | | | enabled |
-| | framework | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| X-EXCLUDE-AAF | To determine if the feed to | Header | Boolean | | Y if AAF |
-| | create is legacy or AAF | | | | enabled |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| Field | Description | Param Type | Data Type | MaxLen | Required |
++=========================+=================================+==============+===============+========+=============+
+| subId | ID for the subscription you are | Path | String | | Y |
+| | updating | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| delivery | Address and credentials for | Body | `Del Object`_ | | Y |
+| | delivery | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| follow_redirect | Set to true if feed redirection | Body | Boolean | | N |
+| | is expected | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| metadata_only | Set to true if subscription is | Body | Boolean | | Y |
+| | to receive per-file metadata | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| suspend | Set to true if the subscription | Body | Boolean | | N |
+| | is in the suspended state | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| decompress | Set to true if the data is to | Body | Boolean | | N |
+| | be decompressed for subscriber | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| group-id | Auth group for sub management | Body | Integer | | Y |
+| | | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| Content-type | To specify type of message | Header | String | | Y |
+| | (feed,subscriber,publisher) | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| Authorization | The user / AppId to be | Header | String | | Y |
+| | authorized | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
+| X-DMAAP-DR-ON-BEHALF-OF | Publisher identity as passed | Header | String | <=8 | Y |
+| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
+| | creation time | | | | |
++-------------------------+---------------------------------+--------------+---------------+--------+-------------+
**Response Codes**
@@ -652,12 +608,11 @@ Update subscription "user": "NEW_LOGIN",
"url": "http://dmaap-dr-subscriber:7070/"
},
- "subscriber": "onap",
+ "subscriber": "{user}",
"groupid": 67,
"metadataOnly": true,
"follow_redirect": false,
"decompress": false,
- "aaf_instance": "legacy",
"links": {
"feed": "https://dmaap-dr-prov/feed/1",
"log": "https://dmaap-dr-prov/sublog/1",
@@ -680,17 +635,17 @@ Get a Subscription **Request Parameters:**
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| Field | Description | Param Type | Data Type | MaxLen | Required |
-+=================+=================================+==============+===============+========+=============+
-| subscriber | Subscriber identity as passed | Header | String | <=8 | Y |
-| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
-| | creation time | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| Authorization | The user / AppId to be | Header | String | | Y if AAF |
-| | authorized by the AAF CADI | | | | enabled |
-| | framework | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| Field | Description | Param Type | Data Type | MaxLen | Required |
++=========================+=================================+=============+===============+============+=============+
+| Authorization | The user / AppId to be | Header | String | | Y |
+| | authorized | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| X-DMAAP-DR-ON-BEHALF-OF | Subscriber identity as passed | Header | String | <=8 | Y |
+| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
+| | creation time | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+
**Response Codes**
@@ -721,13 +676,12 @@ Get a Subscription "user": "NEW_LOGIN",
"url": "http://dmaap-dr-subscriber:7070/"
},
- "subscriber": "onap",
+ "subscriber": "{user}",
"groupid": 67,
"metadataOnly": true,
"privilegedSubscriber": false,
"follow_redirect": false,
"decompress": false,
- "aaf_instance": "legacy",
"links": {
"feed": "https://dmaap-dr-prov/feed/2",
"log": "https://dmaap-dr-prov/sublog/6",
@@ -749,17 +703,16 @@ Delete a subscription **Request Parameters:**
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| Field | Description | Param Type | Data Type | MaxLen | Required |
-+=================+=================================+==============+===============+========+=============+
-| subscriber | Subscriber identity as passed | Header | String | <=8 | Y |
-| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
-| | creation time | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
-| Authorization | The user / AppId to be | Header | String | | Y if AAF |
-| | authorized by the AAF CADI | | | | enabled |
-| | framework | | | | |
-+-----------------+---------------------------------+--------------+---------------+--------+-------------+
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| Field | Description | Param Type | Data Type | MaxLen | Required |
++=========================+=================================+=============+===============+============+=============+
+| Authorization | The user / AppId to be | Header | String | | Y |
+| | authorized | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
+| X-DMAAP-DR-ON-BEHALF-OF | Subscriber identity as passed | Header | String | <=8 | Y |
+| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | |
+| | creation time | | | | |
++-------------------------+---------------------------------+-------------+---------------+------------+-------------+
**Response Codes**
@@ -809,10 +762,8 @@ Publish to Feed | | * Lowercase boolean | | | | | |
| | * null | | | | | |
+------------------------+---------------------------------+------------------+------------+--------------+-------------+-------------------------------------------+
-| Authorization | An `EID Object`_ with publish | Header | String | | Y | * (legacy Feed) dradmin:dradmin |
-| | permissions. | | | | | * (AAF Feed) dcae@dcae.onap.org:{password}|
-| | If AAF CADI is enabled, use a | | | | | |
-| | valid AAF user/AppId instead. | | | | | |
+| Authorization | An `EID Object`_ with publish | Header | String | | Y | * dradmin:dradmin |
+| | permissions. | | | | | |
+------------------------+---------------------------------+------------------+------------+--------------+-------------+-------------------------------------------+
**Response Codes**
@@ -846,10 +797,8 @@ Delete/Retract a Published file +-----------------+---------------------------------+--------------+---------------+------------+-------------------------------------------+
| Field | Description | Param Type | Data Type | Required | Valid/Example Values |
+=================+=================================+==============+===============+============+===========================================+
-| Authorization | An `EID Object`_ with publish | Header | String | Y | * (legacy Feed) dradmin:dradmin |
-| | permissions. | | | | * (AAF Feed) dcae@dcae.onap.org:{password}|
-| | If AAF CADI is enabled, use a | | | | |
-| | valid AAF user/AppId instead. | | | | |
+| Authorization | An `EID Object`_ with publish | Header | String | Y | * dradmin:dradmin |
+| | permissions. | | | | |
+-----------------+---------------------------------+--------------+---------------+------------+-------------------------------------------+
| feedId | ID of the feed that was | Path | String | Y | |
| | publishing to | | | | |
diff --git a/docs/apis/drAPI1.json b/docs/apis/drAPI1.json index 67392a2b..7809ca4d 100644 --- a/docs/apis/drAPI1.json +++ b/docs/apis/drAPI1.json @@ -766,10 +766,6 @@ "type": "string", "example": "" }, - "aaf_instance": { - "type": "string", - "example": "legacy" - }, "publisher": { "type": "string", "example": "dradmin" diff --git a/docs/architecture.rst b/docs/architecture.rst index cae6bca0..7310573b 100644 --- a/docs/architecture.rst +++ b/docs/architecture.rst @@ -10,13 +10,6 @@ Capabilities The DMaaP Data Router (DR) provisioning API is an HTTPS-based, REST-like API for creating and managing DR feeds and subscriptions, which provides a pub/sub architectural model for the transfer of data. -The DR API also supports `AAF CADI authorization <https://docs.onap.org/en/latest/submodules/aaf/authz.git/docs/sections/architecture/cadi.html#authorization>`_. - -To use this feature, the API client must provide a valid AAF AppID / MechID with each request. -To enable this feature, see the :ref:`configuration` section. - -.. note:: In future releases, AAF CADI auth will be enabled by default. - Usage Scenarios --------------- Typically, DR pub clients request the provisioning of a new DR feed. diff --git a/docs/conf.py b/docs/conf.py index 8f01b443..bd960055 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,103 +1,9 @@ from docs_conf.conf import * -branch = 'latest' -doc_url = 'https://docs.onap.org/projects' master_doc = 'index' intersphinx_mapping = {} -# Latest (change to branch) -intersphinx_mapping['onap-aai-aai-common'] = ('{}/onap-aai-aai-common/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-aai-sparky-be'] = ('{}/onap-aai-sparky-be/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-ccsdk-cds'] = ('{}/onap-ccsdk-cds/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-ccsdk-features'] = ('{}/onap-ccsdk-features/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-ccsdk-distribution'] = ('{}/onap-ccsdk-distribution/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-ccsdk-oran'] = ('{}/onap-ccsdk-oran/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-cli'] = ('{}/onap-cli/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-cps'] = ('{}/onap-cps/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-dcaegen2'] = ('{}/onap-dcaegen2/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-dmaap-messagerouter-messageservice'] = ( - '{}/onap-dmaap-messagerouter-messageservice/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-dmaap-buscontroller'] = ('{}/onap-dmaap-buscontroller/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-dmaap-datarouter'] = ('{}/onap-dmaap-datarouter/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-dmaap-dbcapi'] = ('{}/onap-dmaap-dbcapi/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-externalapi-nbi'] = ('{}/onap-externalapi-nbi/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-holmes-engine-management'] = ( - '{}/onap-holmes-engine-management/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-holmes-rule-management'] = ( - '{}/onap-holmes-rule-management/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-integration'] = ('{}/onap-integration/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-modeling-etsicatalog'] = ('{}/onap-modeling-etsicatalog/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-modeling-modelspec'] = ('{}/onap-modeling-modelspec/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-multicloud-framework'] = ('{}/onap-multicloud-framework/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-msb-apigateway'] = ('{}/onap-msb-apigateway/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-oom'] = ('{}/onap-oom/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-oom-offline-installer'] = ('{}/onap-oom-offline-installer/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-oom-platform-cert-service'] = ( - '{}/onap-oom-platform-cert-service/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-optf-cmso'] = ('{}/onap-optf-cmso/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-optf-osdf'] = ('{}/onap-optf-osdf/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-optf-has'] = ('{}/onap-optf-has/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-policy-clamp'] = ('{}/onap-policy-clamp/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-policy-parent'] = ('{}/onap-policy-parent/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-sdc'] = ('{}/onap-sdc/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-sdnc-oam'] = ('{}/onap-sdnc-oam/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-so'] = ('{}/onap-so/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-usecase-ui'] = ('{}/onap-usecase-ui/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vfc-nfvo-lcm'] = ('{}/onap-vfc-nfvo-lcm/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vid'] = ('{}/onap-vid/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vnfrqts-guidelines'] = ('{}/onap-vnfrqts-guidelines/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vnfrqts-requirements'] = ('{}/onap-vnfrqts-requirements/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vnfrqts-testcases'] = ('{}/onap-vnfrqts-testcases/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vnfrqts-usecases'] = ('{}/onap-vnfrqts-usecases/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vnfsdk-model'] = ('{}/onap-vnfsdk-model/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vvp-documentation'] = ('{}/onap-vvp-documentation/en/%s'.format(doc_url) % branch, None) - -# Guilin -branch = 'guilin' -intersphinx_mapping['onap-portal'] = ('{}/onap-portal/en/%s'.format(doc_url) % branch, None) - -# Frankfurt -branch = 'frankfurt' -intersphinx_mapping['onap-appc'] = ('{}/onap-appc/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-appc-deployment'] = ('{}/onap-appc-deployment/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-music'] = ('{}/onap-music/en/%s'.format(doc_url) % branch, None) - -# Latest -branch = 'latest' -intersphinx_mapping['onap-aaf-authz'] = ('{}/onap-aaf-authz/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-aaf-sms'] = ('{}/onap-aaf-sms/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-aai-event-client'] = ('{}/onap-aai-event-client/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-aai-esr-gui'] = ('{}/onap-aai-esr-gui/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-aai-esr-server'] = ('{}/onap-aai-esr-server/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-ccsdk-apps'] = ('{}/onap-ccsdk-apps/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-ccsdk-dashboard'] = ('{}/onap-ccsdk-dashboard/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-ccsdk-platform-plugins'] = ( - '{}/onap-ccsdk-platform-plugins/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-logging-analytics'] = ('{}/onap-logging-analytics/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-logging-analytics-pomba-pomba-audit-common'] = ( - '{}/onap-logging-analytics-pomba-pomba-audit-common/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-modeling-toscaparsers'] = ( - '{}/onap-modeling-toscaparsers/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-msb-discovery'] = ('{}/onap-msb-discovery/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-msb-java-sdk'] = ('{}/onap-msb-java-sdk/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-msb-swagger-sdk'] = ('{}/onap-msb-swagger-sdk/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-multicloud-azure'] = ('{}/onap-multicloud-azure/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-multicloud-k8s'] = ('{}/onap-multicloud-k8s/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-music-distributed-kv-store'] = ( - '{}/onap-music-distributed-kv-store/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-oparent-cia'] = ('{}/onap-oparent-cia/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-osa'] = ('{}/onap-osa/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-sdc-sdc-distribution-client'] = ( - '{}/onap-sdc-sdc-distribution-client/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-sdc-sdc-workflow-designer'] = ( - '{}/onap-sdc-sdc-workflow-designer/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-sdc-sdc-tosca'] = ('{}/onap-sdc-sdc-tosca/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-sdc-sdc-docker-base'] = ('{}/onap-sdc-sdc-docker-base/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-so-libs'] = ('{}/onap-so-libs/en/%s'.format(doc_url) % branch, None) -intersphinx_mapping['onap-vfc-nfvo-driver-vnfm-svnfm'] = ( - '{}/onap-vfc-nfvo-driver-vnfm-svnfm/en/%s'.format(doc_url) % branch, None) - linkcheck_ignore = [ 'http://localhost', 'https://example.com', diff --git a/docs/configuration.rst b/docs/configuration.rst index f7fa4bcf..b55d0730 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -6,38 +6,37 @@ Configuration ============= -Configuration properties for both Data Router Provisioning server and Data Router Node server should remain as default values. +Most configuration properties for both Data Router Provisioning server and Data Router Node server +should remain as default values. -The only exception to this, is when enabling the AAF CADI framework to authorize the DR provisioning requests. +An exception to this is when a user wants to run over HTTP (non TLS). -.. note:: The AAF CADI filtering feature is disabled by default. When AAF CADI auth is enabled, all DR API calls must provide an AAF AppID to access the relevant API endpoint. +For DR Provisioning server config, edit the following props in the provserver.properties file. -To enable DR AAF CADI authorization, the following steps are required: +.. code-block:: bash -DR CADI Prerequisites: - * AAF deployment + org.onap.dmaap.datarouter.provserver.tlsenabled = false -Update the following properties at deployment time. +and ensure aaf cadi is disabled also +.. code-block:: bash -**DMaaP DR Prov AAF properties** + org.onap.dmaap.datarouter.provserver.cadi.enabled = false -:: - # AAF config - org.onap.dmaap.datarouter.provserver.cadi.enabled = true +For DR Node server config, edit the following props in the node.properties file to target http. - # AAF URL to connect to AAF server - org.onap.dmaap.datarouter.provserver.cadi.aaf.url = https://<RELEVANT_AAF_URL>:8095 - - -**DMaaP DR Node AAF properties** - -:: - - # AAF URL to connect to AAF server - AafUrl = https://<RELEVANT_AAF_URL>:8095 - - # AAF CADI enabled flag - CadiEnabled = true +.. code-block:: bash + # URL to retrieve dynamic configuration + ProvisioningURL = http://dmaap-dr-prov:8080/internal/prov + # + # URL to upload PUB/DEL/EXP logs + LogUploadURL = http://dmaap-dr-prov:8080/internal/logs + ... + # + # AAF CADI enabled flag + CadiEnabled = false + # + # Enable to run over http or https (default true|https) + TlsEnabled = false diff --git a/docs/images/dr_bc_prov.png b/docs/images/dr_bc_prov.png Binary files differindex 9e2f7e47..932c6556 100644 --- a/docs/images/dr_bc_prov.png +++ b/docs/images/dr_bc_prov.png diff --git a/docs/images/dr_pub_flow.png b/docs/images/dr_pub_flow.png Binary files differindex 83af9bd2..e3fc0364 100644 --- a/docs/images/dr_pub_flow.png +++ b/docs/images/dr_pub_flow.png diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt index 74a3b7a3..3b3441a8 100644 --- a/docs/requirements-docs.txt +++ b/docs/requirements-docs.txt @@ -1 +1,3 @@ lfdocs-conf +sphinx>=4.2.0 # BSD +sphinx-rtd-theme>=1.0.0 # MIT @@ -36,7 +36,7 @@ </parent> <properties> <!--revision must also be set in the version.properties file at project root--> - <revision>2.1.10-SNAPSHOT</revision> + <revision>2.1.11-SNAPSHOT</revision> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> diff --git a/releases/2.1.11-container.yaml b/releases/2.1.11-container.yaml new file mode 100644 index 00000000..4ed856d2 --- /dev/null +++ b/releases/2.1.11-container.yaml @@ -0,0 +1,12 @@ +distribution_type: 'container' +container_release_tag: '2.1.11' +project: 'dmaap-datarouter' +log-dir: 'dmaap-datarouter-maven-docker-stage-master/1018' +ref: e49f6d600a6bdc828a2cd8a8e04b1182586a5e19 +containers: + - name: dmaap/datarouter-prov + version: 2.1.11-STAGING-20220405T154924Z + - name: dmaap/datarouter-node + version: 2.1.11-STAGING-20220405T154924Z + - name: dmaap/datarouter-subscriber + version: 2.1.11-STAGING-20220405T154924Z
\ No newline at end of file diff --git a/version.properties b/version.properties index cd2abb72..d0a38284 100644 --- a/version.properties +++ b/version.properties @@ -27,7 +27,7 @@ major=2
minor=1
-patch=10
+patch=11
base_version=${major}.${minor}.${patch}
|