Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 15 additions & 12 deletions modules/mysql/src/alicloud_rds.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,23 @@ func (mysql *MySQL) GenerateAlicloudResources(request *module.GeneratorRequest)
}
resources = append(resources, *alicloudDBInstanceRes)

// Build alicloud_rds_account resuorce.
alicloudRDSAccountRes, err := mysql.generateAlicloudRDSAccount(
alicloudProviderCfg,
region, mysql.Username, randomPasswordID, alicloudDBInstanceID,
)
if err != nil {
return nil, nil, err
}
resources = append(resources, *alicloudRDSAccountRes)

// Build alicloud_db_connection resource.
var alicloudDBConnectionRes *apiv1.Resource
var alicloudDBConnectionID string
if IsPublicAccessible(mysql.SecurityIPs) {
alicloudDBConnectionRes, alicloudDBConnectionID, err = mysql.generateAlicloudDBConnection(
alicloudProviderCfg,
region, alicloudDBInstanceID,
region, alicloudDBInstanceID, alicloudRDSAccountRes.ID,
)
if err != nil {
return nil, nil, err
Expand All @@ -78,16 +88,6 @@ func (mysql *MySQL) GenerateAlicloudResources(request *module.GeneratorRequest)
resources = append(resources, *alicloudDBConnectionRes)
}

// Build alicloud_rds_account resuorce.
alicloudRDSAccountRes, err := mysql.generateAlicloudRDSAccount(
alicloudProviderCfg,
region, mysql.Username, randomPasswordID, alicloudDBInstanceID,
)
if err != nil {
return nil, nil, err
}
resources = append(resources, *alicloudRDSAccountRes)

hostAddress := modules.KusionPathDependency(alicloudDBInstanceID, "connection_string")
if !mysql.PrivateRouting {
// Set the public network connection string as the host address.
Expand Down Expand Up @@ -156,7 +156,7 @@ func (mysql *MySQL) generateAlicloudDBInstance(alicloudProviderCfg module.Provid
// generateAlicloudDBConnection generates alicloud_db_connection resource
// for the Alicloud provided MySQL database instance.
func (mysql *MySQL) generateAlicloudDBConnection(alicloudProviderCfg module.ProviderConfig,
region, dbInstanceID string,
region, dbInstanceID, rdsAccountID string,
) (*apiv1.Resource, string, error) {
resAttrs := map[string]interface{}{
"instance_id": modules.KusionPathDependency(dbInstanceID, "id"),
Expand All @@ -173,6 +173,9 @@ func (mysql *MySQL) generateAlicloudDBConnection(alicloudProviderCfg module.Prov
return nil, "", err
}

// Add resource dependencies.
resource.DependsOn = append(resource.DependsOn, rdsAccountID)

return resource, id, nil
}

Expand Down
2 changes: 1 addition & 1 deletion modules/mysql/src/alicloud_rds_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func TestMySQLModule_GenerateAlicloudDBConnection(t *testing.T) {
SubnetID: "test-subnet-id",
}

res, id, err := mysql.generateAlicloudDBConnection(defaultAlicloudProviderCfg, "test-region", "db_instance_id")
res, id, err := mysql.generateAlicloudDBConnection(defaultAlicloudProviderCfg, "test-region", "db_instance_id", "rds_account_id")

assert.NotNil(t, res)
assert.NotEqual(t, id, "")
Expand Down
27 changes: 15 additions & 12 deletions modules/postgres/src/alicloud_rds.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,23 @@ func (postgres *PostgreSQL) GenerateAlicloudResources(request *module.GeneratorR
}
resources = append(resources, *alicloudDBInstanceRes)

// Build alicloud_rds_account resuorce.
alicloudRDSAccountRes, err := postgres.generateAlicloudRDSAccount(
alicloudProviderCfg,
region, postgres.Username, randomPasswordID, alicloudDBInstanceID,
)
if err != nil {
return nil, nil, err
}
resources = append(resources, *alicloudRDSAccountRes)

// Build alicloud_db_connection resource.
var alicloudDBConnectionRes *apiv1.Resource
var alicloudDBConnectionID string
if IsPublicAccessible(postgres.SecurityIPs) {
alicloudDBConnectionRes, alicloudDBConnectionID, err = postgres.generateAlicloudDBConnection(
alicloudProviderCfg,
region, alicloudDBInstanceID,
region, alicloudDBInstanceID, alicloudRDSAccountRes.ID,
)
if err != nil {
return nil, nil, err
Expand All @@ -78,16 +88,6 @@ func (postgres *PostgreSQL) GenerateAlicloudResources(request *module.GeneratorR
resources = append(resources, *alicloudDBConnectionRes)
}

// Build alicloud_rds_account resuorce.
alicloudRDSAccountRes, err := postgres.generateAlicloudRDSAccount(
alicloudProviderCfg,
region, postgres.Username, randomPasswordID, alicloudDBInstanceID,
)
if err != nil {
return nil, nil, err
}
resources = append(resources, *alicloudRDSAccountRes)

hostAddress := modules.KusionPathDependency(alicloudDBInstanceID, "connection_string")
if !postgres.PrivateRouting {
// Set the public network connection string as the host address.
Expand Down Expand Up @@ -156,7 +156,7 @@ func (postgres *PostgreSQL) generateAlicloudDBInstance(alicloudProviderCfg modul
// generateAlicloudDBConnection generates alicloud_db_connection resource
// for the Alicloud provided PostgreSQL database instance.
func (postgres *PostgreSQL) generateAlicloudDBConnection(alicloudProviderCfg module.ProviderConfig,
region, dbInstanceID string,
region, dbInstanceID, rdsAccountID string,
) (*apiv1.Resource, string, error) {
resAttrs := map[string]interface{}{
"instance_id": modules.KusionPathDependency(dbInstanceID, "id"),
Expand All @@ -174,6 +174,9 @@ func (postgres *PostgreSQL) generateAlicloudDBConnection(alicloudProviderCfg mod
return nil, "", err
}

// Add resource dependencies.
resource.DependsOn = append(resource.DependsOn, rdsAccountID)

return resource, id, nil
}

Expand Down
2 changes: 1 addition & 1 deletion modules/postgres/src/alicloud_rds_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func TestPostgreSQLModule_GenerateAlicloudDBConnection(t *testing.T) {
SubnetID: "test-subnet-id",
}

res, id, err := postgres.generateAlicloudDBConnection(defaultAlicloudProviderCfg, "test-region", "db_instance_id")
res, id, err := postgres.generateAlicloudDBConnection(defaultAlicloudProviderCfg, "test-region", "db_instance_id", "rds_account_id")

assert.NotNil(t, res)
assert.NotEqual(t, id, "")
Expand Down