Skip to content

Commit 57f1afc

Browse files
committed
Support for MySQL resource discovery added
1 parent ac5eeb2 commit 57f1afc

File tree

5 files changed

+75
-0
lines changed

5 files changed

+75
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
- Support resource discovery and import for `ons_subscriptions` resource
1111
- Support resource discovery for `oci_objectstorage_replication_policy` resource
1212
- Support for specifying the retry timeout duration for API errors in resource discovery using argument `retry_timeout` in the export command. The default retry duration is 15s.
13+
- Support for `MySQL` resource discovery
1314

1415
## 3.82.0 (June 24, 2020)
1516

oci/export_definitions.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
oci_limits "github.com/oracle/oci-go-sdk/limits"
2828
oci_load_balancer "github.com/oracle/oci-go-sdk/loadbalancer"
2929
oci_monitoring "github.com/oracle/oci-go-sdk/monitoring"
30+
oci_mysql "github.com/oracle/oci-go-sdk/mysql"
3031
oci_nosql "github.com/oracle/oci-go-sdk/nosql"
3132
oci_oce "github.com/oracle/oci-go-sdk/oce"
3233
oci_oda "github.com/oracle/oci-go-sdk/oda"
@@ -1427,3 +1428,24 @@ var exportDataSafeDataSafePrivateEndpointHints = &TerraformResourceHints{
14271428
string(oci_data_safe.ListDataSafePrivateEndpointsLifecycleStateActive),
14281429
},
14291430
}
1431+
1432+
var exportMysqlMysqlBackupHints = &TerraformResourceHints{
1433+
resourceClass: "oci_mysql_mysql_backup",
1434+
datasourceClass: "oci_mysql_mysql_backups",
1435+
datasourceItemsAttr: "backups",
1436+
resourceAbbreviation: "mysql_backup",
1437+
discoverableLifecycleStates: []string{
1438+
string(oci_mysql.BackupLifecycleStateActive),
1439+
},
1440+
}
1441+
1442+
var exportMysqlMysqlDbSystemHints = &TerraformResourceHints{
1443+
resourceClass: "oci_mysql_mysql_db_system",
1444+
datasourceClass: "oci_mysql_mysql_db_systems",
1445+
datasourceItemsAttr: "db_systems",
1446+
resourceAbbreviation: "mysql_db_system",
1447+
requireResourceRefresh: true,
1448+
discoverableLifecycleStates: []string{
1449+
string(oci_mysql.DbSystemLifecycleStateActive),
1450+
},
1451+
}

oci/export_graphs.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ var compartmentResourceGraphs = map[string]TerraformResourceGraph{
7070
"load_balancer": loadBalancerResourceGraph,
7171
"marketplace": marketplaceResourceGraph,
7272
"monitoring": monitoringResourceGraph,
73+
"mysql": mysqlResourceGraph,
7374
"nosql": nosqlResourceGraph,
7475
"object_storage": objectStorageResourceGraph,
7576
"oce": oceResourceGraph,
@@ -608,6 +609,13 @@ var monitoringResourceGraph = TerraformResourceGraph{
608609
},
609610
}
610611

612+
var mysqlResourceGraph = TerraformResourceGraph{
613+
"oci_identity_compartment": {
614+
{TerraformResourceHints: exportMysqlMysqlBackupHints},
615+
{TerraformResourceHints: exportMysqlMysqlDbSystemHints},
616+
},
617+
}
618+
611619
var nosqlResourceGraph = TerraformResourceGraph{
612620
"oci_identity_compartment": {
613621
{TerraformResourceHints: exportNosqlTableHints},

oci/export_resource_helpers.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,10 @@ func init() {
396396
exportDnsRrsetHints.getIdFn = getDnsRrsetId
397397
exportDnsRrsetHints.findResourcesOverrideFn = findDnsRrset
398398
exportDnsRrsetHints.processDiscoveredResourcesFn = processDnsRrset
399+
400+
exportMysqlMysqlBackupHints.requireResourceRefresh = true
401+
exportMysqlMysqlBackupHints.processDiscoveredResourcesFn = filterMysqlBackups
402+
exportMysqlMysqlDbSystemHints.processDiscoveredResourcesFn = processMysqlDbSystem
399403
}
400404

401405
func processDnsRrset(clients *OracleClients, resources []*OCIResource) ([]*OCIResource, error) {
@@ -757,6 +761,40 @@ func filterSecondaryVnicAttachments(clients *OracleClients, resources []*OCIReso
757761
return results, nil
758762
}
759763

764+
func filterMysqlBackups(clients *OracleClients, resources []*OCIResource) ([]*OCIResource, error) {
765+
results := []*OCIResource{}
766+
767+
// Filter out Mysql Backups that are automatically created. We cannot operate on "Automatic" backups.
768+
for _, backup := range resources {
769+
sourceDetails, exists := backup.sourceAttributes["creation_type"]
770+
771+
if exists && sourceDetails.(string) == "AUTOMATIC" {
772+
continue
773+
}
774+
775+
results = append(results, backup)
776+
}
777+
778+
return results, nil
779+
}
780+
781+
// TODO: remove this when service fixes source
782+
func processMysqlDbSystem(clients *OracleClients, resources []*OCIResource) ([]*OCIResource, error) {
783+
for _, dbSystem := range resources {
784+
if source, exists := dbSystem.sourceAttributes["source"]; exists {
785+
if sourceList := source.([]interface{}); len(sourceList) > 0 {
786+
if sourceMap, ok := sourceList[0].(map[string]interface{}); ok {
787+
if sourceMap["source_type"].(string) == "NONE" {
788+
delete(dbSystem.sourceAttributes, "source")
789+
}
790+
}
791+
}
792+
}
793+
}
794+
795+
return resources, nil
796+
}
797+
760798
func filterSourcedBootVolumes(clients *OracleClients, resources []*OCIResource) ([]*OCIResource, error) {
761799
results := []*OCIResource{}
762800

website/docs/guides/resource_discovery.html.markdown

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ The generated `.tf` files contain the Terraform configuration with the resources
117117
* `load_balancer` - Discovers load balancer resources within the specified compartment
118118
* `marketplace` - Discovers marketplace resources within the specified compartment
119119
* `monitoring` - Discovers monitoring resources within the specified compartment
120+
* `mysql` - Discovers mysql resources within the specified compartment
120121
* `nosql` - Discovers nosql resources within the specified compartment
121122
* `oce` - Discovers oce resources within the specified compartment
122123
* `object_storage` - Discovers object storage resources within the specified compartment
@@ -411,6 +412,11 @@ monitoring
411412

412413
* oci\_monitoring\_alarm
413414

415+
mysql
416+
417+
* oci\_mysql\_mysql\_backup
418+
* oci\_mysql\_mysql\_db\_system
419+
414420
nosql
415421

416422
* oci\_nosql\_table

0 commit comments

Comments
 (0)