import org.onap.dmaap.dbcapi.aaf.DmaapPerm;
import org.onap.dmaap.dbcapi.aaf.AafService.ServiceType;
import org.onap.dmaap.dbcapi.authentication.ApiPerms;
+import org.onap.dmaap.dbcapi.authentication.ApiPolicy;
import org.onap.dmaap.dbcapi.database.DatabaseClass;
import org.onap.dmaap.dbcapi.logging.BaseLoggingClass;
import org.onap.dmaap.dbcapi.logging.DmaapbcLogMessageEnum;
import org.onap.dmaap.dbcapi.model.ApiError;
import org.onap.dmaap.dbcapi.model.Dmaap;
import org.onap.dmaap.dbcapi.model.MR_Client;
+import org.onap.dmaap.dbcapi.model.ReplicationType;
import org.onap.dmaap.dbcapi.model.Topic;
import org.onap.dmaap.dbcapi.model.DmaapObject.DmaapObject_Status;
import org.onap.dmaap.dbcapi.util.DmaapConfig;
private Singleton<Dmaap> dmaapholder = DatabaseClass.getDmaap();
+ private static String noEnvironmentPrefix;
+
- // TODO put these in properties file
String topicFactory; // = "org.openecomp.dcae.dmaap.topicFactory";
String topicMgrRole; // = "org.openecomp.dmaapBC.TopicMgr";
-
- // TODO confirm this is equivalent to dmaap.getTopicNsRoot() so we can retire it
String dcaeTopicNs; // = "org.openecomp.dcae.dmaap";
+ private boolean multiSite;
public DmaapService() {
topicFactory = p.getProperty("MR.TopicFactoryNS", "MR.topicFactoryNS.not.set");
topicMgrRole = p.getProperty("MR.TopicMgrRole", "MR.TopicMgrRole.not.set" );
dcaeTopicNs = dmaapholder.get().getTopicNsRoot();
+ multiSite = "true".equalsIgnoreCase(p.getProperty("MR.multisite", "true"));
+ noEnvironmentPrefix = p.getProperty( "AAF.NoEnvironmentPrefix", "org.onap");
+
+ logger.info( "DmaapService settings: " +
+ " topicFactory=" + topicFactory +
+ " topicMgrRole=" + topicMgrRole +
+ " dcaeTopicNs=" + dcaeTopicNs +
+ " multisite=" + multiSite +
+ " noEnvironmentPrefix=" + noEnvironmentPrefix
+ );
}
dmaapholder.update(nd);
AafService aaf = new AafService( ServiceType.AAF_Admin);
- ApiPerms p = new ApiPerms();
- p.setEnvMap();
- boolean anythingWrong = setTopicMgtPerms( nd, aaf ) || createMmaTopic();
+ ApiPolicy apiPolicy = new ApiPolicy();
+ if ( apiPolicy.getUseAuthClass() ) {
+ ApiPerms p = new ApiPerms();
+ p.setEnvMap();
+ }
+ boolean anythingWrong = false;
+
+ if ( multiSite ) {
+ anythingWrong = setTopicMgtPerms( nd, aaf ) || createMmaTopic();
+ }
if ( anythingWrong ) {
dmaap.setStatus(DmaapObject_Status.INVALID);
if ( ! dmaap.isStatusValid() || ! nd.getDmaapName().equals(dmaap.getDmaapName()) || dmaap.getVersion().equals( "0") ) {
nd.setLastMod();
dmaapholder.update(nd); //need to set this so the following perms will pick up any new vals.
- ApiPerms p = new ApiPerms();
- p.setEnvMap();
+ dcaeTopicNs = dmaapholder.get().getTopicNsRoot();
+ ApiPolicy apiPolicy = new ApiPolicy();
+ if ( apiPolicy.getUseAuthClass()) {
+ ApiPerms p = new ApiPerms();
+ p.setEnvMap();
+ }
AafService aaf = new AafService( ServiceType.AAF_Admin);
- anythingWrong = setTopicMgtPerms( nd, aaf ) || createMmaTopic();
+ if ( multiSite ) {
+ anythingWrong = setTopicMgtPerms( nd, aaf ) || createMmaTopic();
+ }
}
if ( anythingWrong ) {
}
public String getTopicPerm( String val ) {
Dmaap dmaap = dmaapholder.get();
- return dmaap.getTopicNsRoot() + "." + val + ".mr.topic";
+ String nsRoot = dmaap.getTopicNsRoot();
+ if ( nsRoot == null ) { return null; }
+
+ String t;
+ // in ONAP Casablanca, we assume no distinction of environments reflected in topic namespace
+ if ( nsRoot.startsWith(noEnvironmentPrefix) ) {
+ t = nsRoot + ".mr.topic";
+ } else {
+ t = nsRoot + "." + val + ".mr.topic";
+ }
+ return t;
}
public String getBridgeAdminFqtn(){
clients.add( nClient );
// initialize Topic
- Topic mmaTopic = new Topic();
+ Topic mmaTopic = new Topic().init();
mmaTopic.setTopicName(dmaap.getBridgeAdminTopic());
mmaTopic.setClients(clients);
mmaTopic.setOwner("BusController");
mmaTopic.setTopicDescription("topic reserved for MirrorMaker Administration");
mmaTopic.setTnxEnabled("false");
+ mmaTopic.setPartitionCount("1"); // a single partition should guarantee message order
+
ApiError err = new ApiError();
TopicService svc = new TopicService();
try {
@SuppressWarnings("unused")
- Topic nTopic = svc.addTopic(mmaTopic, err);
+ Topic nTopic = svc.addTopic(mmaTopic, err, true);
if ( err.is2xx() || err.getCode() == 409 ) {
return false;
}