Skip to content

feat: unmanage spec.settings.databaseFlags #6875

@acpana

Description

@acpana

I want to add another field to this list:

var supportedUnmanageableFields = map[string]*FieldMetadata{
"spec.instanceType": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
out.InstanceType = actual.InstanceType
},
},
"spec.maintenanceVersion": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
out.MaintenanceVersion = actual.MaintenanceVersion
},
},
"spec.settings.edition": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.Edition = actual.Settings.Edition
}
},
},
"spec.settings": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
out.Settings = actual.Settings
},
},
"spec.settings.activationPolicy": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.ActivationPolicy = actual.Settings.ActivationPolicy
}
},
},
"spec.settings.backupConfiguration": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.BackupConfiguration = actual.Settings.BackupConfiguration
}
},
},
"spec.settings.connectorEnforcement": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.ConnectorEnforcement = actual.Settings.ConnectorEnforcement
}
},
},
"spec.settings.dataCacheConfig": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.DataCacheConfig = actual.Settings.DataCacheConfig
}
},
},
"spec.settings.diskAutoresize": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.StorageAutoResize = actual.Settings.StorageAutoResize
}
},
},
"spec.settings.diskAutoresizeLimit": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.StorageAutoResizeLimit = actual.Settings.StorageAutoResizeLimit
}
},
},
"spec.settings.diskSize": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.DataDiskSizeGb = actual.Settings.DataDiskSizeGb
}
},
},
"spec.settings.diskType": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.DataDiskType = actual.Settings.DataDiskType
}
},
},
"spec.settings.ipConfiguration": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.IpConfiguration = actual.Settings.IpConfiguration
}
},
},
"spec.settings.locationPreference": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.LocationPreference = actual.Settings.LocationPreference
}
},
},
"spec.settings.pricingPlan": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
out.Settings.PricingPlan = actual.Settings.PricingPlan
}
},
},
"spec.settings.backupConfiguration.backupRetentionSettings": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.BackupConfiguration != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.BackupConfiguration == nil {
out.Settings.BackupConfiguration = &api.BackupConfiguration{}
}
out.Settings.BackupConfiguration.BackupRetentionSettings = actual.Settings.BackupConfiguration.BackupRetentionSettings
}
},
},
"spec.settings.backupConfiguration.enabled": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.BackupConfiguration != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.BackupConfiguration == nil {
out.Settings.BackupConfiguration = &api.BackupConfiguration{}
}
out.Settings.BackupConfiguration.Enabled = actual.Settings.BackupConfiguration.Enabled
}
},
},
"spec.settings.backupConfiguration.pointInTimeRecoveryEnabled": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.BackupConfiguration != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.BackupConfiguration == nil {
out.Settings.BackupConfiguration = &api.BackupConfiguration{}
}
out.Settings.BackupConfiguration.PointInTimeRecoveryEnabled = actual.Settings.BackupConfiguration.PointInTimeRecoveryEnabled
}
},
},
"spec.settings.backupConfiguration.startTime": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.BackupConfiguration != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.BackupConfiguration == nil {
out.Settings.BackupConfiguration = &api.BackupConfiguration{}
}
out.Settings.BackupConfiguration.StartTime = actual.Settings.BackupConfiguration.StartTime
}
},
},
"spec.settings.backupConfiguration.transactionLogRetentionDays": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.BackupConfiguration != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.BackupConfiguration == nil {
out.Settings.BackupConfiguration = &api.BackupConfiguration{}
}
out.Settings.BackupConfiguration.TransactionLogRetentionDays = actual.Settings.BackupConfiguration.TransactionLogRetentionDays
}
},
},
"spec.settings.backupConfiguration.backupRetentionSettings.retainedBackups": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.BackupConfiguration != nil && actual.Settings.BackupConfiguration.BackupRetentionSettings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.BackupConfiguration == nil {
out.Settings.BackupConfiguration = &api.BackupConfiguration{}
}
if out.Settings.BackupConfiguration.BackupRetentionSettings == nil {
out.Settings.BackupConfiguration.BackupRetentionSettings = &api.BackupRetentionSettings{}
}
out.Settings.BackupConfiguration.BackupRetentionSettings.RetainedBackups = actual.Settings.BackupConfiguration.BackupRetentionSettings.RetainedBackups
}
},
},
"spec.settings.backupConfiguration.backupRetentionSettings.retentionUnit": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.BackupConfiguration != nil && actual.Settings.BackupConfiguration.BackupRetentionSettings != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.BackupConfiguration == nil {
out.Settings.BackupConfiguration = &api.BackupConfiguration{}
}
if out.Settings.BackupConfiguration.BackupRetentionSettings == nil {
out.Settings.BackupConfiguration.BackupRetentionSettings = &api.BackupRetentionSettings{}
}
out.Settings.BackupConfiguration.BackupRetentionSettings.RetentionUnit = actual.Settings.BackupConfiguration.BackupRetentionSettings.RetentionUnit
}
},
},
"spec.settings.dataCacheConfig.dataCacheEnabled": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.DataCacheConfig != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.DataCacheConfig == nil {
out.Settings.DataCacheConfig = &api.DataCacheConfig{}
}
out.Settings.DataCacheConfig.DataCacheEnabled = actual.Settings.DataCacheConfig.DataCacheEnabled
}
},
},
"spec.settings.ipConfiguration.ipv4Enabled": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.IpConfiguration != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.IpConfiguration == nil {
out.Settings.IpConfiguration = &api.IpConfiguration{}
}
out.Settings.IpConfiguration.Ipv4Enabled = actual.Settings.IpConfiguration.Ipv4Enabled
}
},
},
"spec.settings.locationPreference.zone": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.Settings != nil && actual.Settings.LocationPreference != nil {
if out.Settings == nil {
out.Settings = &api.Settings{}
}
if out.Settings.LocationPreference == nil {
out.Settings.LocationPreference = &api.LocationPreference{}
}
out.Settings.LocationPreference.Zone = actual.Settings.LocationPreference.Zone
}
},
},
"spec.replicaConfiguration": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
out.ReplicaConfiguration = actual.ReplicaConfiguration
},
},
"spec.replicaConfiguration.caCertificate": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.CaCertificate = actual.ReplicaConfiguration.MysqlReplicaConfiguration.CaCertificate
}
},
},
"spec.replicaConfiguration.clientCertificate": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.ClientCertificate = actual.ReplicaConfiguration.MysqlReplicaConfiguration.ClientCertificate
}
},
},
"spec.replicaConfiguration.clientKey": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.ClientKey = actual.ReplicaConfiguration.MysqlReplicaConfiguration.ClientKey
}
},
},
"spec.replicaConfiguration.connectRetryInterval": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.ConnectRetryInterval = actual.ReplicaConfiguration.MysqlReplicaConfiguration.ConnectRetryInterval
}
},
},
"spec.replicaConfiguration.dumpFilePath": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.DumpFilePath = actual.ReplicaConfiguration.MysqlReplicaConfiguration.DumpFilePath
}
},
},
"spec.replicaConfiguration.failoverTarget": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
out.ReplicaConfiguration.FailoverTarget = actual.ReplicaConfiguration.FailoverTarget
}
},
},
"spec.replicaConfiguration.masterHeartbeatPeriod": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.MasterHeartbeatPeriod = actual.ReplicaConfiguration.MysqlReplicaConfiguration.MasterHeartbeatPeriod
}
},
},
"spec.replicaConfiguration.password": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.Password = actual.ReplicaConfiguration.MysqlReplicaConfiguration.Password
}
},
},
"spec.replicaConfiguration.sslCipher": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.SslCipher = actual.ReplicaConfiguration.MysqlReplicaConfiguration.SslCipher
}
},
},
"spec.replicaConfiguration.username": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.Username = actual.ReplicaConfiguration.MysqlReplicaConfiguration.Username
}
},
},
"spec.replicaConfiguration.verifyServerCertificate": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicaConfiguration != nil && actual.ReplicaConfiguration.MysqlReplicaConfiguration != nil {
if out.ReplicaConfiguration == nil {
out.ReplicaConfiguration = &api.ReplicaConfiguration{}
}
if out.ReplicaConfiguration.MysqlReplicaConfiguration == nil {
out.ReplicaConfiguration.MysqlReplicaConfiguration = &api.MySqlReplicaConfiguration{}
}
out.ReplicaConfiguration.MysqlReplicaConfiguration.VerifyServerCertificate = actual.ReplicaConfiguration.MysqlReplicaConfiguration.VerifyServerCertificate
}
},
},
"spec.replicationCluster": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
out.ReplicationCluster = actual.ReplicationCluster
},
},
"spec.replicationCluster.failoverDrReplicaRef": {
preserveActualValue: func(out *api.DatabaseInstance, actual *api.DatabaseInstance) {
if actual.ReplicationCluster != nil {
if out.ReplicationCluster == nil {
out.ReplicationCluster = &api.ReplicationCluster{}
}
out.ReplicationCluster.FailoverDrReplicaName = actual.ReplicationCluster.FailoverDrReplicaName
}
},
},
}

The field will be spec.settings.databaseFlags.

Make sure you modify an existing fixture test to show this field being ignored/ unmanaged when specified in the annotation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions