Skip to content

Commit

Permalink
update mongo sink adding ssl options
Browse files Browse the repository at this point in the history
  • Loading branch information
AlvaroVega committed Jun 18, 2024
1 parent b11e64f commit 1f33860
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public enum Resolution { SECOND, MINUTE, HOUR, DAY, MONTH }
private final String mongoPassword;
private final String mongoAuthSource;
private final String mongoReplicaSet;
private final Boolean sslEnabled;
private final Boolean sslInvalidHostNameAllowed;
private final DataModel dataModel;
private static final CygnusLogger LOGGER = new CygnusLogger(MongoBackendImpl.class);

Expand All @@ -73,13 +75,16 @@ public enum Resolution { SECOND, MINUTE, HOUR, DAY, MONTH }
* @param dataModel
*/
public MongoBackendImpl(String mongoHosts, String mongoUsername, String mongoPassword,
String mongoAuthSource, String mongoReplicaSet, DataModel dataModel) {
String mongoAuthSource, String mongoReplicaSet, DataModel dataModel,
Boolean sslEnabled, Boolean sslInvalidHostNameAllowed) {
client = null;
this.mongoHosts = mongoHosts;
this.mongoUsername = mongoUsername;
this.mongoPassword = mongoPassword;
this.mongoAuthSource = mongoAuthSource;
this.mongoReplicaSet = mongoReplicaSet;
this.sslEnabled = sslEnabled;
this.sslInvalidHostNameAllowed = sslInvalidHostNameAllowed;
this.dataModel = dataModel;
} // MongoBackendImpl

Expand Down Expand Up @@ -592,16 +597,23 @@ private MongoDatabase getDatabase(String dbName) {
}
MongoCredential credential = MongoCredential.createCredential(mongoUsername, authSource,
mongoPassword.toCharArray());

/****
// This constructor is deprecated see Mongo Client API documentation
// @deprecated Prefer {@link #MongoClient(List, MongoCredential, MongoClientOptions)}
client = new MongoClient(servers, Arrays.asList(credential));
****/
if ((mongoReplicaSet!= null) && !mongoReplicaSet.isEmpty()) {
client = new MongoClient(servers, credential, new MongoClientOptions.Builder().
requiredReplicaSetName(mongoReplicaSet).build());
requiredReplicaSetName(mongoReplicaSet).
sslEnabled(sslEnabled).
sslInvalidHostNameAllowed(sslInvalidHostNameAllowed).
build());
} else {
client = new MongoClient(servers, credential, new MongoClientOptions.Builder().build());
client = new MongoClient(servers, credential, new MongoClientOptions.Builder().
sslEnabled(sslEnabled).
sslInvalidHostNameAllowed(sslInvalidHostNameAllowed).
build());
}
} else {
client = new MongoClient(servers);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public MongoBackendImplTest() {
public void testGetRange() {
System.out.println(getTestTraceHead("[MongoBackendImpl.getRange]")
+ "-------- Given a resolution, its related range is correctly returned");
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null);
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null, false, false);


try {
Expand Down Expand Up @@ -115,7 +115,7 @@ public void testGetRange() {
public void testGetOrigin() {
System.out.println(getTestTraceHead("[MongoBackendImpl.getOrigin]")
+ "-------- Given a calendar and a resolution, its related origin is correctly returned");
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null);
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null, false, false);
GregorianCalendar calendar = new GregorianCalendar(2017, 4, 5, 11, 46, 13);

try {
Expand Down Expand Up @@ -198,7 +198,7 @@ public void testGetOrigin() {
public void testGetOffset() {
System.out.println(getTestTraceHead("[MongoBackendImpl.getOffset]")
+ "-------- Given a calendar and a resolution, its related offset is correctly returned");
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null);
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null, false, false);
GregorianCalendar calendar = new GregorianCalendar(2017, 3, 5, 11, 46, 13); // month 3 is April

try {
Expand Down Expand Up @@ -266,7 +266,7 @@ public void testBuildQueryForInsertAggregated() {
String entityType = "someType";
String attrName = "someName";
GregorianCalendar calendar = new GregorianCalendar(2017, 3, 5, 11, 46, 13); // month 3 is April
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, DataModel.DMBYSERVICEPATH);
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, DataModel.DMBYSERVICEPATH, false, false);
String queryForInsertAggregated = "{\"_id\": {\"entityId\": \"someId\", \"entityType\": \"someType\", "
+ "\"attrName\": \"someName\", \"origin\": {\"$date\": 1491392760000}, "
+ "\"resolution\": \"second\", \"range\": \"minute\"}, \"points.offset\": 13}";
Expand Down Expand Up @@ -353,7 +353,7 @@ public void testBuildQueryForInsertAggregated() {
throw e;
} // try catch

backend = new MongoBackendImpl(null, null, null, null, null, DataModel.DMBYENTITY);
backend = new MongoBackendImpl(null, null, null, null, null, DataModel.DMBYENTITY, false, false);

queryForInsertAggregated = "{\"_id\": {\"attrName\": \"someName\", "
+ "\"origin\": {\"$date\": 1491392760000}, \"resolution\": \"second\", "
Expand Down Expand Up @@ -457,7 +457,7 @@ public void testBuildUpdateForUpdateNumerical() {
double sum2 = 200;
int numSamples = 2;
GregorianCalendar calendar = new GregorianCalendar(2017, 3, 5, 11, 46, 13); // month 3 is April
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null,null);
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null, false, false);
String updateForUpdate = "{\"$set\": {\"attrType\": \"someType\"}, "
+ "\"$inc\": {\"points.$.samples\": 2, \"points.$.sum\": 20.0, \"points.$.sum2\": 200.0}, "
+ "\"$min\": {\"points.$.min\": 0.0}, \"$max\": {\"points.$.max\": 10.0}}";
Expand Down Expand Up @@ -489,7 +489,7 @@ public void testBuildUpdateForUpdateString() {
String value = "someString";
int count = 2;
GregorianCalendar calendar = new GregorianCalendar(2017, 3, 5, 11, 46, 13); // month 3 is April
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null);
MongoBackendImpl backend = new MongoBackendImpl(null, null, null, null, null, null, false, false);
String updateForUpdate = "{\"$set\": {\"attrType\": \"someType\"}, "
+ "\"$inc\": {\"points.13.samples\": 2, \"points.13.occur.someString\": 2}}";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public abstract class NGSIMongoBaseSink extends NGSISink {
protected String mongoPassword;
protected String mongoAuthSource;
protected String mongoReplicaSet;
protected Boolean sslEnabled;
protected Boolean sslInvalidHostNameAllowed;
protected String dbPrefix;
protected String collectionPrefix;
protected MongoBackendImpl backend;
Expand Down Expand Up @@ -169,12 +171,37 @@ public void configure(Context context) {
LOGGER.warn("[" + this.getName() + "] Invalid configuration (ignore_white_spaces="
+ ignoreWhiteSpacesStr + ") -- Must be 'true' or 'false'");
} // if else

String sslEnabledStr = context.getString("sslEnabled", "true");
if (sslEnabledStr.equals("true") || sslEnabledStr.equals("false")) {
sslEnabled = Boolean.valueOf(sslEnabledStr);
LOGGER.debug("[" + this.getName() + "] Reading configuration (sslEnabled="
+ sslEnabledStr + ")");
} else {
invalidConfiguration = true;
LOGGER.warn("[" + this.getName() + "] Invalid configuration (sslEnabled="
+ sslEnabledStr + ") -- Must be 'true' or 'false'");
} // if else

String sslInvalidHostNameAllowedStr = context.getString("sslInvalidHostNameAllowed", "true");
if (sslInvalidHostNameAllowedStr.equals("true") || sslInvalidHostNameAllowedStr.equals("false")) {
sslInvalidHostNameAllowed = Boolean.valueOf(sslInvalidHostNameAllowedStr);
LOGGER.debug("[" + this.getName() + "] Reading configuration (sslInvalidHostNameAllowed="
+ sslInvalidHostNameAllowedStr + ")");
} else {
invalidConfiguration = true;
LOGGER.warn("[" + this.getName() + "] Invalid configuration (sslInvalidHostNameAllowed="
+ sslInvalidHostNameAllowedStr + ") -- Must be 'true' or 'false'");
} // if else

} // configure

@Override
public void start() {
try {
backend = new MongoBackendImpl(mongoHosts, mongoUsername, mongoPassword, mongoAuthSource, mongoReplicaSet, dataModel);
backend = new MongoBackendImpl(mongoHosts, mongoUsername, mongoPassword,
mongoAuthSource, mongoReplicaSet, dataModel,
sslEnabled, sslInvalidHostNameAllowed);
LOGGER.debug("[" + this.getName() + "] MongoDB persistence backend created");
} catch (Exception e) {
LOGGER.error("Error while creating the MongoDB persistence backend. Details="
Expand Down

0 comments on commit 1f33860

Please sign in to comment.