@ -172,6 +172,11 @@ func migrateConfig() error {
return err
}
fallthrough
case "23" :
if err = migrateV23ToV24 ( ) ; err != nil {
return err
}
fallthrough
case serverConfigVersion :
// No migration needed. this always points to current version.
err = nil
@ -1951,3 +1956,120 @@ func migrateV22ToV23() error {
logger . Info ( configMigrateMSGTemplate , configFile , cv22 . Version , srvConfig . Version )
return nil
}
func migrateV23ToV24 ( ) error {
configFile := getConfigFile ( )
cv23 := & serverConfigV23 { }
_ , err := quick . Load ( configFile , cv23 )
if os . IsNotExist ( err ) {
return nil
} else if err != nil {
return fmt . Errorf ( "Unable to load config version ‘23’. %v" , err )
}
if cv23 . Version != "23" {
return nil
}
// Copy over fields from V23 into V24 config struct
srvConfig := & serverConfigV24 {
Notify : notifier { } ,
}
srvConfig . Version = "24"
srvConfig . Credential = cv23 . Credential
srvConfig . Region = cv23 . Region
if srvConfig . Region == "" {
// Region needs to be set for AWS Signature Version 4.
srvConfig . Region = globalMinioDefaultRegion
}
if len ( cv23 . Notify . AMQP ) == 0 {
srvConfig . Notify . AMQP = make ( map [ string ] target . AMQPArgs )
srvConfig . Notify . AMQP [ "1" ] = target . AMQPArgs { }
} else {
srvConfig . Notify . AMQP = cv23 . Notify . AMQP
}
if len ( cv23 . Notify . Elasticsearch ) == 0 {
srvConfig . Notify . Elasticsearch = make ( map [ string ] target . ElasticsearchArgs )
srvConfig . Notify . Elasticsearch [ "1" ] = target . ElasticsearchArgs {
Format : event . NamespaceFormat ,
}
} else {
srvConfig . Notify . Elasticsearch = cv23 . Notify . Elasticsearch
}
if len ( cv23 . Notify . Redis ) == 0 {
srvConfig . Notify . Redis = make ( map [ string ] target . RedisArgs )
srvConfig . Notify . Redis [ "1" ] = target . RedisArgs {
Format : event . NamespaceFormat ,
}
} else {
srvConfig . Notify . Redis = cv23 . Notify . Redis
}
if len ( cv23 . Notify . PostgreSQL ) == 0 {
srvConfig . Notify . PostgreSQL = make ( map [ string ] target . PostgreSQLArgs )
srvConfig . Notify . PostgreSQL [ "1" ] = target . PostgreSQLArgs {
Format : event . NamespaceFormat ,
}
} else {
srvConfig . Notify . PostgreSQL = cv23 . Notify . PostgreSQL
}
if len ( cv23 . Notify . Kafka ) == 0 {
srvConfig . Notify . Kafka = make ( map [ string ] target . KafkaArgs )
srvConfig . Notify . Kafka [ "1" ] = target . KafkaArgs { }
} else {
srvConfig . Notify . Kafka = cv23 . Notify . Kafka
}
if len ( cv23 . Notify . NATS ) == 0 {
srvConfig . Notify . NATS = make ( map [ string ] target . NATSArgs )
srvConfig . Notify . NATS [ "1" ] = target . NATSArgs { }
} else {
srvConfig . Notify . NATS = cv23 . Notify . NATS
}
if len ( cv23 . Notify . Webhook ) == 0 {
srvConfig . Notify . Webhook = make ( map [ string ] target . WebhookArgs )
srvConfig . Notify . Webhook [ "1" ] = target . WebhookArgs { }
} else {
srvConfig . Notify . Webhook = cv23 . Notify . Webhook
}
if len ( cv23 . Notify . MySQL ) == 0 {
srvConfig . Notify . MySQL = make ( map [ string ] target . MySQLArgs )
srvConfig . Notify . MySQL [ "1" ] = target . MySQLArgs {
Format : event . NamespaceFormat ,
}
} else {
srvConfig . Notify . MySQL = cv23 . Notify . MySQL
}
if len ( cv23 . Notify . MQTT ) == 0 {
srvConfig . Notify . MQTT = make ( map [ string ] target . MQTTArgs )
srvConfig . Notify . MQTT [ "1" ] = target . MQTTArgs { }
} else {
srvConfig . Notify . MQTT = cv23 . Notify . MQTT
}
// Load browser config from existing config in the file.
srvConfig . Browser = cv23 . Browser
// Load domain config from existing config in the file.
srvConfig . Domain = cv23 . Domain
// Load storage class config from existing storage class config in the file.
srvConfig . StorageClass . RRS = cv23 . StorageClass . RRS
srvConfig . StorageClass . Standard = cv23 . StorageClass . Standard
// Load cache config from existing cache config in the file.
srvConfig . Cache . Drives = cv23 . Cache . Drives
srvConfig . Cache . Exclude = cv23 . Cache . Exclude
srvConfig . Cache . Expiry = cv23 . Cache . Expiry
// Init usage config. For future migration, usage config needs
// to be copied over from previous version.
srvConfig . Usage = usageConfig { globalDefaultUsageCheckInterval }
if err = quick . Save ( configFile , srvConfig ) ; err != nil {
return fmt . Errorf ( "Failed to migrate config from ‘%s’ to ‘%s’. %v" , cv23 . Version , srvConfig . Version , err )
}
logger . Info ( configMigrateMSGTemplate , configFile , cv23 . Version , srvConfig . Version )
return nil
}