Allow customizing Tenants DB JDBC uid/pwd/driver (FINERACT-806) (#713)
* Allow customizing Tenants DB JDBC uid/pwd/driver (FINERACT-806) Added Java system properties for username and password to docker-compose Modified sever.xml to get username and password * Fixes for customizing Tenants DB JDBC uid/pwd/driver (FINERACT-806) * Use random MYSQL_ROOT_PASSWORD in docker-compose.yml (FINERACT-806) This provides future non-regression testing that the the customized MySQL password is actually really used, and it doesn't just work because "mysql" is still hard-coded anywhere. Co-authored-by: Yemdjih Kaze Nasser <kaze.nasser@outlook.com>
This commit is contained in:
co-authored by
Yemdjih Kaze Nasser
parent
c6b2c09032
commit
228ec22a60
+4
-2
@@ -26,7 +26,7 @@ services:
|
|||||||
- ./fineract-db/docker:/docker-entrypoint-initdb.d:Z,ro
|
- ./fineract-db/docker:/docker-entrypoint-initdb.d:Z,ro
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: mysql
|
MYSQL_ROOT_PASSWORD: skdcnwauicn2ucnaecasdsajdnizucawencascdca
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
|
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
@@ -43,6 +43,8 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- fineractmysql
|
- fineractmysql
|
||||||
environment:
|
environment:
|
||||||
- JAVA_OPTS=-Dfineract_tenants_url=jdbc:mysql:thin://fineractmysql:3306/mifosplatform-tenants -Djava.awt.headless=true -XX:+UseG1GC -Dfile.encoding=UTF-8
|
- JAVA_OPTS=-Dfineract_tenants_url=jdbc:mysql:thin://fineractmysql:3306/mifosplatform-tenants -Dfineract_tenants_driver=org.drizzle.jdbc.DrizzleDriver -Dfineract_tenants_uid=root -Dfineract_tenants_pwd=skdcnwauicn2ucnaecasdsajdnizucawencascdca -Djava.awt.headless=true -XX:+UseG1GC -Dfile.encoding=UTF-8
|
||||||
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractmysql
|
- FINERACT_DEFAULT_TENANTDB_HOSTNAME=fineractmysql
|
||||||
- FINERACT_DEFAULT_TENANTDB_PORT=3306
|
- FINERACT_DEFAULT_TENANTDB_PORT=3306
|
||||||
|
- FINERACT_DEFAULT_TENANTDB_UID=root
|
||||||
|
- FINERACT_DEFAULT_TENANTDB_PWD=skdcnwauicn2ucnaecasdsajdnizucawencascdca
|
||||||
|
|||||||
+3
-3
@@ -41,10 +41,10 @@
|
|||||||
<Resource type="javax.sql.DataSource"
|
<Resource type="javax.sql.DataSource"
|
||||||
name="jdbc/mifosplatform-tenants"
|
name="jdbc/mifosplatform-tenants"
|
||||||
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
|
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
|
||||||
driverClassName="org.drizzle.jdbc.DrizzleDriver"
|
driverClassName="${fineract_tenants_driver}"
|
||||||
url="${fineract_tenants_url}"
|
url="${fineract_tenants_url}"
|
||||||
username="root"
|
username="${fineract_tenants_uid}"
|
||||||
password="mysql"
|
password="${fineract_tenants_pwd}"
|
||||||
initialSize="3"
|
initialSize="3"
|
||||||
maxActive="10"
|
maxActive="10"
|
||||||
maxIdle="6"
|
maxIdle="6"
|
||||||
|
|||||||
+17
-13
@@ -43,7 +43,7 @@ import org.springframework.stereotype.Service;
|
|||||||
@Service
|
@Service
|
||||||
public class TenantDatabaseUpgradeService {
|
public class TenantDatabaseUpgradeService {
|
||||||
|
|
||||||
private final static Logger LOG = LoggerFactory.getLogger(TenantDatabaseUpgradeService.class);
|
private final static Logger LOG = LoggerFactory.getLogger(TenantDatabaseUpgradeService.class);
|
||||||
|
|
||||||
private final TenantDetailsService tenantDetailsService;
|
private final TenantDetailsService tenantDetailsService;
|
||||||
protected final DataSource tenantDataSource;
|
protected final DataSource tenantDataSource;
|
||||||
@@ -88,27 +88,31 @@ public class TenantDatabaseUpgradeService {
|
|||||||
* itself.
|
* itself.
|
||||||
*/
|
*/
|
||||||
private void upgradeTenantDB() {
|
private void upgradeTenantDB() {
|
||||||
String dbHostname = getEnvVar("FINERACT_DEFAULT_TENANTDB_HOSTNAME", "localhost");
|
String dbHostname = getEnvVar("FINERACT_DEFAULT_TENANTDB_HOSTNAME", "localhost");
|
||||||
String dbPort = getEnvVar("FINERACT_DEFAULT_TENANTDB_PORT", "3306");
|
String dbPort = getEnvVar("FINERACT_DEFAULT_TENANTDB_PORT", "3306");
|
||||||
LOG.info("upgradeTenantDB: FINERACT_DEFAULT_TENANTDB_HOSTNAME = {}, FINERACT_DEFAULT_TENANTDB_PORT = {}", dbHostname, dbPort);
|
String dbUid = getEnvVar("FINERACT_DEFAULT_TENANTDB_UID", "root");
|
||||||
|
String dbPwd = getEnvVar("FINERACT_DEFAULT_TENANTDB_PWD", "mysql");
|
||||||
|
LOG.info("upgradeTenantDB: FINERACT_DEFAULT_TENANTDB_HOSTNAME = {}, FINERACT_DEFAULT_TENANTDB_PORT = {}", dbHostname, dbPort);
|
||||||
|
|
||||||
final Flyway flyway = new Flyway();
|
final Flyway flyway = new Flyway();
|
||||||
flyway.setDataSource(tenantDataSource);
|
flyway.setDataSource(tenantDataSource);
|
||||||
flyway.setLocations("sql/migrations/list_db");
|
flyway.setLocations("sql/migrations/list_db");
|
||||||
flyway.setOutOfOrder(true);
|
flyway.setOutOfOrder(true);
|
||||||
flyway.setPlaceholders(ImmutableMap.of( // FINERACT-773
|
flyway.setPlaceholders(ImmutableMap.of( // FINERACT-773
|
||||||
"fineract_default_tenantdb_hostname", dbHostname,
|
"fineract_default_tenantdb_hostname", dbHostname,
|
||||||
"fineract_default_tenantdb_port", dbPort));
|
"fineract_default_tenantdb_port", dbPort,
|
||||||
|
"fineract_default_tenantdb_uid", dbUid,
|
||||||
|
"fineract_default_tenantdb_pwd", dbPwd));
|
||||||
flyway.migrate();
|
flyway.migrate();
|
||||||
|
|
||||||
tenantDataSourcePortFixService.fixUpTenantsSchemaServerPort();
|
tenantDataSourcePortFixService.fixUpTenantsSchemaServerPort();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getEnvVar(String name, String defaultValue) {
|
private String getEnvVar(String name, String defaultValue) {
|
||||||
String value = System.getenv(name);
|
String value = System.getenv(name);
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -66,7 +66,7 @@ CREATE TABLE `tenants` (
|
|||||||
|
|
||||||
LOCK TABLES `tenants` WRITE;
|
LOCK TABLES `tenants` WRITE;
|
||||||
/*!40000 ALTER TABLE `tenants` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `tenants` DISABLE KEYS */;
|
||||||
INSERT INTO `tenants` VALUES (1,'default','Default Demo Tenant','mifostenant-default','Asia/Kolkata',NULL,NULL,NULL,NULL,'${fineract_default_tenantdb_hostname}','${fineract_default_tenantdb_port}','root','mysql',1);
|
INSERT INTO `tenants` VALUES (1,'default','Default Demo Tenant','mifostenant-default','Asia/Kolkata',NULL,NULL,NULL,NULL,'${fineract_default_tenantdb_hostname}','${fineract_default_tenantdb_port}','${fineract_default_tenantdb_uid}','${fineract_default_tenantdb_pwd}',1);
|
||||||
-- Add tenants to support interoperation multi-tenancy
|
-- Add tenants to support interoperation multi-tenancy
|
||||||
-- INSERT INTO `tenants` VALUES (2,'tn01','Buffalo','tn01','Africa/Bujumbura',NULL,NULL,NULL,NULL,'localhost','3306','root','mysql',1);
|
-- INSERT INTO `tenants` VALUES (2,'tn01','Buffalo','tn01','Africa/Bujumbura',NULL,NULL,NULL,NULL,'localhost','3306','root','mysql',1);
|
||||||
-- INSERT INTO `tenants` VALUES (3,'tn02','Lion','tn02','Africa/Bujumbura',NULL,NULL,NULL,NULL,'localhost','3306','root','mysql',1);
|
-- INSERT INTO `tenants` VALUES (3,'tn02','Lion','tn02','Africa/Bujumbura',NULL,NULL,NULL,NULL,'localhost','3306','root','mysql',1);
|
||||||
|
|||||||
Reference in New Issue
Block a user