mirror of
https://github.com/minio/minio.git
synced 2025-11-07 04:42:56 -05:00
Add functionality to add old buckets to etcd on startup
Buckets already present on a Minio server before it joins a bucket federated deployment will now be added to etcd during startup. In case of a bucket name collision, admin is informed via Minio server console message. Added configuration migration for configuration stored in etcd backend. Also, environment variables are updated and ListBucket path style request is no longer forwarded.
This commit is contained in:
@@ -191,10 +191,10 @@ func NewLocalConfig(data interface{}) (Config, error) {
|
||||
return d, nil
|
||||
}
|
||||
|
||||
// GetVersion - extracts the version information.
|
||||
func GetVersion(filename string) (version string, err error) {
|
||||
// GetLocalVersion - extracts the version information.
|
||||
func GetLocalVersion(filename string) (version string, err error) {
|
||||
var qc Config
|
||||
if qc, err = Load(filename, &struct {
|
||||
if qc, err = LoadLocalConfig(filename, &struct {
|
||||
Version string
|
||||
}{}); err != nil {
|
||||
return "", err
|
||||
@@ -202,16 +202,16 @@ func GetVersion(filename string) (version string, err error) {
|
||||
return qc.Version(), err
|
||||
}
|
||||
|
||||
// Load - loads json config from filename for the a given struct data
|
||||
func Load(filename string, data interface{}) (qc Config, err error) {
|
||||
// LoadLocalConfig - loads json config from filename for the a given struct data
|
||||
func LoadLocalConfig(filename string, data interface{}) (qc Config, err error) {
|
||||
if qc, err = NewLocalConfig(data); err == nil {
|
||||
err = qc.Load(filename)
|
||||
}
|
||||
return qc, err
|
||||
}
|
||||
|
||||
// Save - saves given configuration data into given file as JSON.
|
||||
func Save(filename string, data interface{}) (err error) {
|
||||
// SaveLocalConfig - saves given configuration data into given file as JSON.
|
||||
func SaveLocalConfig(filename string, data interface{}) (err error) {
|
||||
var qc Config
|
||||
if qc, err = NewLocalConfig(data); err == nil {
|
||||
err = qc.Save(filename)
|
||||
|
||||
@@ -71,7 +71,7 @@ func (d etcdConfig) Save(filename string) error {
|
||||
|
||||
kapi := etcdc.NewKeysAPI(d.clnt)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
|
||||
_, err = kapi.Create(ctx, filename, string(dataBytes))
|
||||
_, err = kapi.Update(ctx, filename, string(dataBytes))
|
||||
cancel()
|
||||
return err
|
||||
}
|
||||
@@ -173,3 +173,32 @@ func NewEtcdConfig(data interface{}, clnt etcdc.Client) (Config, error) {
|
||||
d.lock = &sync.Mutex{}
|
||||
return d, nil
|
||||
}
|
||||
|
||||
// GetEtcdVersion - extracts the version information.
|
||||
func GetEtcdVersion(filename string, clnt etcdc.Client) (version string, err error) {
|
||||
var qc Config
|
||||
if qc, err = LoadEtcdConfig(filename, &struct {
|
||||
Version string
|
||||
}{}, clnt); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return qc.Version(), err
|
||||
}
|
||||
|
||||
// LoadEtcdConfig - loads json config from etcd backend for the given struct data
|
||||
func LoadEtcdConfig(filename string, data interface{}, clnt etcdc.Client) (qc Config, err error) {
|
||||
if qc, err = NewEtcdConfig(data, clnt); err == nil {
|
||||
err = qc.Load(filename)
|
||||
}
|
||||
return qc, err
|
||||
}
|
||||
|
||||
// SaveEtcdConfig - saves given configuration data into etcd backend.
|
||||
func SaveEtcdConfig(filename string, data interface{}, clnt etcdc.Client) (err error) {
|
||||
var qc Config
|
||||
if qc, err = NewEtcdConfig(data, clnt); err == nil {
|
||||
err = qc.Save(filename)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ func TestReadVersion(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
version, err := GetVersion("test.json")
|
||||
version, err := GetLocalVersion("test.json")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -69,7 +69,7 @@ func TestReadVersionErr(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
_, err = GetVersion("test.json")
|
||||
_, err = GetLocalVersion("test.json")
|
||||
if err == nil {
|
||||
t.Fatal("Unexpected should fail to fetch version")
|
||||
}
|
||||
@@ -79,7 +79,7 @@ func TestReadVersionErr(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
_, err = GetVersion("test.json")
|
||||
_, err = GetLocalVersion("test.json")
|
||||
if err == nil {
|
||||
t.Fatal("Unexpected should fail to fetch version")
|
||||
}
|
||||
@@ -155,7 +155,7 @@ func TestLoadFile(t *testing.T) {
|
||||
Directories []string
|
||||
}
|
||||
saveMe := myStruct{}
|
||||
_, err := Load("test.json", &saveMe)
|
||||
_, err := LoadLocalConfig("test.json", &saveMe)
|
||||
if err == nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -167,7 +167,7 @@ func TestLoadFile(t *testing.T) {
|
||||
if err = file.Close(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err = Load("test.json", &saveMe)
|
||||
_, err = LoadLocalConfig("test.json", &saveMe)
|
||||
if err == nil {
|
||||
t.Fatal("Unexpected should fail to load empty JSON")
|
||||
}
|
||||
@@ -195,7 +195,7 @@ func TestLoadFile(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
saveMe1 := myStruct{}
|
||||
_, err = Load("test.json", &saveMe1)
|
||||
_, err = LoadLocalConfig("test.json", &saveMe1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user