Skip to content

Commit 1735810

Browse files
authored
Support for RDS MariaDB instances (#3555)
* Enable MariaDB for IAM authentication
1 parent 3131adf commit 1735810

File tree

5 files changed

+18
-3
lines changed

5 files changed

+18
-3
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "feature",
3+
"description" : "Support for RDS MariaDB instances (#3530)"
4+
}

jetbrains-ultimate/src/software/aws/toolkits/jetbrains/datagrip/DatagripUtils.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ import software.aws.toolkits.jetbrains.core.credentials.CredentialManager
1313
import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider
1414
import software.aws.toolkits.jetbrains.services.rds.AuroraMySql
1515
import software.aws.toolkits.jetbrains.services.rds.AuroraPostgres
16+
import software.aws.toolkits.jetbrains.services.rds.JDBC_MARIADB
1617
import software.aws.toolkits.jetbrains.services.rds.JDBC_MYSQL
1718
import software.aws.toolkits.jetbrains.services.rds.JDBC_MYSQL_AURORA
1819
import software.aws.toolkits.jetbrains.services.rds.JDBC_POSTGRES
20+
import software.aws.toolkits.jetbrains.services.rds.Maria
1921
import software.aws.toolkits.jetbrains.services.rds.MySql
2022
import software.aws.toolkits.jetbrains.services.rds.Postgres
2123
import software.aws.toolkits.jetbrains.services.redshift.RedshiftResources.JDBC_REDSHIFT
@@ -46,6 +48,7 @@ fun ProtoConnection.getAwsConnectionSettings(): ConnectionSettings {
4648
fun jdbcAdapterFromRuntime(runtime: String?): String? = when (runtime) {
4749
in Postgres.engines -> JDBC_POSTGRES
4850
in MySql.engines -> JDBC_MYSQL
51+
in Maria.engines -> JDBC_MARIADB
4952
in AuroraMySql.engines -> JDBC_MYSQL_AURORA
5053
in AuroraPostgres.engines -> JDBC_POSTGRES
5154
REDSHIFT_ENGINE_TYPE -> JDBC_REDSHIFT
@@ -54,11 +57,11 @@ fun jdbcAdapterFromRuntime(runtime: String?): String? = when (runtime) {
5457

5558
fun secretsManagerIsApplicable(dataSource: LocalDataSource): Boolean {
5659
val dbms = dataSource.dbms
57-
return dbms == Dbms.MYSQL || dbms == Dbms.POSTGRES || dbms == Dbms.REDSHIFT || dbms == Dbms.MYSQL_AURORA
60+
return dbms == Dbms.MYSQL || dbms == Dbms.MARIA || dbms == Dbms.POSTGRES || dbms == Dbms.REDSHIFT || dbms == Dbms.MYSQL_AURORA
5861
}
5962

6063
fun iamIsApplicable(dataSource: LocalDataSource): Boolean =
61-
dataSource.dbms == Dbms.MYSQL || dataSource.dbms == Dbms.POSTGRES || dataSource.dbms == Dbms.MYSQL_AURORA
64+
dataSource.dbms == Dbms.MYSQL || dataSource.dbms == Dbms.MARIA || dataSource.dbms == Dbms.POSTGRES || dataSource.dbms == Dbms.MYSQL_AURORA
6265

6366
fun validateIamConfiguration(connection: ProtoConnection) {
6467
// MariaDB/Mysql aurora will never work if SSL is turned off, so validate and give

jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/rds/RdsEngine.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package software.aws.toolkits.jetbrains.services.rds
55

66
import com.intellij.database.dataSource.DataSourceSslConfiguration
7+
import com.intellij.icons.AllIcons
78
import icons.AwsIcons
89
import software.aws.toolkits.jetbrains.datagrip.RequireSsl
910
import software.aws.toolkits.resources.message
@@ -32,7 +33,7 @@ sealed class RdsEngine(val engines: Set<String>, val icon: Icon, val additionalI
3233
open fun sslConfig(): DataSourceSslConfiguration? = null
3334

3435
companion object {
35-
fun values(): Set<RdsEngine> = setOf(MySql, AuroraMySql, Postgres, AuroraPostgres)
36+
fun values(): Set<RdsEngine> = setOf(Maria, MySql, AuroraMySql, Postgres, AuroraPostgres)
3637
fun fromEngine(engine: String) = values().find { it.engines.contains(engine) } ?: throw IllegalArgumentException("Unknown RDS engine $engine")
3738
}
3839
}
@@ -51,6 +52,11 @@ abstract class PostgresBase(engine: Set<String>, additionalInfo: String? = null)
5152
override fun iamUsername(username: String) = username.lowercase()
5253
}
5354

55+
object Maria : RdsEngine(setOf("mariadb"), AllIcons.Providers.Mariadb, null) {
56+
override fun sslConfig(): DataSourceSslConfiguration = RequireSsl
57+
override fun connectionStringUrl(endpoint: String) = "jdbc:$JDBC_MARIADB://$endpoint/"
58+
}
59+
5460
object MySql : MySqlBase(setOf("mysql")) {
5561
override fun connectionStringUrl(endpoint: String) = "jdbc:$JDBC_MYSQL://$endpoint/"
5662
}

jetbrains-ultimate/src/software/aws/toolkits/jetbrains/services/rds/RdsResources.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const val POSTGRES_ENGINE_TYPE = "postgres"
99

1010
const val JDBC_MYSQL = "mysql"
1111
const val JDBC_MYSQL_AURORA = "mysql:aurora"
12+
const val JDBC_MARIADB = "mariadb"
1213
const val JDBC_POSTGRES = "postgresql"
1314

1415
object RdsResources {

jetbrains-ultimate/tst/software/aws/toolkits/jetbrains/datagrip/DatagripUtilsTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class DatagripUtilsTest {
7272
fun `jdbcAdapterFromRuntime works`() {
7373
assertThat(jdbcAdapterFromRuntime("postgres")).isEqualTo("postgresql")
7474
assertThat(jdbcAdapterFromRuntime("mysql")).isEqualTo("mysql")
75+
assertThat(jdbcAdapterFromRuntime("mariadb")).isEqualTo("mariadb")
7576
assertThat(jdbcAdapterFromRuntime("redshift")).isEqualTo("redshift")
7677
assertThat(jdbcAdapterFromRuntime("mongo")).isNull()
7778
}

0 commit comments

Comments
 (0)