Skip to content

Commit

Permalink
Enhance output block and add related Go struct
Browse files Browse the repository at this point in the history
  • Loading branch information
yunkon-kim committed Nov 12, 2024
1 parent de88286 commit 868a3be
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 31 deletions.
62 changes: 62 additions & 0 deletions pkg/api/rest/model/sql-db.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,65 @@ type TfVarsSqlDb struct {
DBAdminPassword string `json:"db_admin_password" example:"P@ssword1234!"`
// DBInstanceID string `json:"db_instance_identifier" example:"mydbinstance"`
}

type OutputAWSSqlDbInfo struct {
Terrarium struct {
ID string `json:"id"`
} `json:"terrarium"`
AWS struct {
InstanceIdentifier string `json:"instance_identifier"`
ConnectionInfo string `json:"connection_info"`
Port int `json:"port"`
AdminUsername string `json:"admin_username"`
DatabaseEngine string `json:"database_engine"`
EngineVersion string `json:"engine_version"`
Region string `json:"region"`
VpcID string `json:"vpc_id"`
SubnetIDs []string `json:"subnet_ids"`
SecurityGroupName string `json:"security_group_name"`
} `json:"aws"`
}

type OutputAzureSqlDbInfo struct {
Terrarium struct {
ID string `json:"id"`
} `json:"terrarium"`
Azure struct {
InstanceIdentifier string `json:"instance_identifier"`
ConnectionInfo string `json:"connection_info"`
Port int `json:"port"`
AdminUsername string `json:"admin_username"`
DatabaseName string `json:"database_name"`
Region string `json:"region"`
ResourceGroup string `json:"resource_group"`
} `json:"azure"`
}

type OutputGCPSqlDbInfo struct {
Terrarium struct {
ID string `json:"id"`
} `json:"terrarium"`
GCP struct {
InstanceIdentifier string `json:"instance_identifier"`
DatabaseName string `json:"database_name"`
AdminUsername string `json:"admin_username"`
ConnectionInfo string `json:"connection_info"`
IPAddress string `json:"ip_address"`
Port int `json:"port"`
Region string `json:"region"`
} `json:"gcp"`
}

type OutputNCPSqlDbInfo struct {
Terrarium struct {
ID string `json:"id"`
} `json:"terrarium"`
NCP struct {
InstanceIdentifier string `json:"instance_identifier"`
ConnectionInfo string `json:"connection_info"`
AdminUsername string `json:"admin_username"`
DatabaseName string `json:"database_name"`
Port int `json:"port"`
Region string `json:"region"`
} `json:"ncp"`
}
25 changes: 15 additions & 10 deletions templates/sql-db/aws/output.tf
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
output "sql_db_info" {
value = {
db_instance_identifier = aws_db_instance.db_instance.identifier
db_instance_endpoint = aws_db_instance.db_instance.endpoint
db_instance_port = aws_db_instance.db_instance.port
db_instance_username = aws_db_instance.db_instance.username
db_instance_engine = aws_db_instance.db_instance.engine
db_instance_version = aws_db_instance.db_instance.engine_version
db_instance_vpc_id = var.csp_vnet_id
db_instance_subnet_ids = [var.csp_subnet1_id, var.csp_subnet2_id]
db_security_group_name = "${var.terrarium_id}-rds-sg"
terrarium = {
id = var.terrarium_id
}
aws = {
instance_identifier = aws_db_instance.db_instance.identifier
connection_info = aws_db_instance.db_instance.endpoint
port = var.db_engine_port
admin_username = aws_db_instance.db_instance.username
database_engine = aws_db_instance.db_instance.engine
engine_version = aws_db_instance.db_instance.engine_version
region = var.csp_region
vpc_id = var.csp_vnet_id
subnet_ids = [var.csp_subnet1_id, var.csp_subnet2_id]
security_group_name = "${var.terrarium_id}-rds-sg"
}
}

description = "Information for connecting to the MySQL RDS instance with dynamic variables."
}
21 changes: 12 additions & 9 deletions templates/sql-db/azure/output.tf
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
output "sql_db_info" {
description = "Information needed to connect and manage the Azure Database for MySQL instance."
value = {
location = azurerm_mysql_flexible_server.instance.location
resource_group_name = azurerm_mysql_flexible_server.instance.resource_group_name
server_name = azurerm_mysql_flexible_server.instance.name
fully_qualified_domain_name = azurerm_mysql_flexible_server.instance.fqdn
administrator_login = azurerm_mysql_flexible_server.instance.administrator_login
# administrator_password = "YOUR_PASSWORD_HERE" # Note: Avoid exposing this directly; consider using a secret management tool
database_name = azurerm_mysql_flexible_database.engine.name
port = 3306
# ssl_enforcement = azurerm_mysql_flexible_server.example.ssl_enforcement_enabled
terrarium = {
id = var.terrarium_id
}
azure = {
instance_identifier = azurerm_mysql_flexible_server.instance.name
connection_info = azurerm_mysql_flexible_server.instance.fqdn
port = 3306 # var.db_engine_port
admin_username = azurerm_mysql_flexible_server.instance.administrator_login
database_name = azurerm_mysql_flexible_database.engine.name
region = azurerm_mysql_flexible_server.instance.location
resource_group = azurerm_mysql_flexible_server.instance.resource_group_name
}
}
}
18 changes: 12 additions & 6 deletions templates/sql-db/gcp/output.tf
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
# Outputs wrapped in SqlDbInstanceInfo object, including public IP
output "sql_db_info" {
value = {
instance_name = google_sql_database_instance.instance.name
database_name = google_sql_database.engine.name
database_user = google_sql_user.admin_user.name
connection_name = google_sql_database_instance.instance.connection_name
public_ip = google_sql_database_instance.instance.public_ip_address
terrarium = {
id = var.terrarium_id
}
gcp = {
instance_identifier = google_sql_database_instance.instance.name
database_name = google_sql_database.engine.name
admin_username = google_sql_user.admin_user.name
connection_info = google_sql_database_instance.instance.connection_name
ip_address = google_sql_database_instance.instance.public_ip_address
port = 3306 # var.db_engine_port
region = google_sql_database_instance.instance.region
}
}
description = "Information for SQL Database instance, including instance name, database name, user, connection name, and public IP address"
}
17 changes: 11 additions & 6 deletions templates/sql-db/ncp/output.tf
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
output "sql_db_info" {
description = "Information needed to connect to the MySQL RDS instance."
value = {
service_name = ncloud_mysql.mysql.service_name
server_name_prefix = ncloud_mysql.mysql.server_name_prefix
user_name = ncloud_mysql.mysql.user_name
host_ip = ncloud_mysql.mysql.host_ip
database_name = ncloud_mysql.mysql.database_name
# user_password = ncloud_mysql.mysql.user_password
terrarium = {
id = var.terrarium_id
}
ncp = {
instance_identifier = ncloud_mysql.mysql.service_name
connection_info = ncloud_mysql.mysql.host_ip
admin_username = ncloud_mysql.mysql.user_name
database_name = ncloud_mysql.mysql.database_name
port = 3306 # var.db_engine_port
region = ncloud_mysql.mysql.region // Assume region is available
}
}
# sensitive = true // Mark as sensitive to hide sensitive details like passwords
}

0 comments on commit 868a3be

Please sign in to comment.