verify all nodes have same ENVs in bootstrap (#13096)

This commit is contained in:
Harshavardhana 2021-08-30 08:27:39 -07:00 committed by GitHub
parent 35f2552fc5
commit 88e0aa1cb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -24,6 +24,7 @@ import (
"io" "io"
"net/http" "net/http"
"net/url" "net/url"
"reflect"
"runtime" "runtime"
"time" "time"
@ -32,6 +33,7 @@ import (
xhttp "github.com/minio/minio/internal/http" xhttp "github.com/minio/minio/internal/http"
"github.com/minio/minio/internal/logger" "github.com/minio/minio/internal/logger"
"github.com/minio/minio/internal/rest" "github.com/minio/minio/internal/rest"
"github.com/minio/pkg/env"
) )
const ( const (
@ -52,8 +54,8 @@ type bootstrapRESTServer struct{}
// ServerSystemConfig - captures information about server configuration. // ServerSystemConfig - captures information about server configuration.
type ServerSystemConfig struct { type ServerSystemConfig struct {
MinioPlatform string MinioPlatform string
MinioRuntime string
MinioEndpoints EndpointServerPools MinioEndpoints EndpointServerPools
MinioEnv map[string]string
} }
// Diff - returns error on first difference found in two configs. // Diff - returns error on first difference found in two configs.
@ -82,15 +84,23 @@ func (s1 ServerSystemConfig) Diff(s2 ServerSystemConfig) error {
s2.MinioEndpoints[i].Endpoints[j]) s2.MinioEndpoints[i].Endpoints[j])
} }
} }
}
if !reflect.DeepEqual(s1.MinioEnv, s2.MinioEnv) {
return fmt.Errorf("Expected same MINIO_ environment variables and values")
} }
return nil return nil
} }
func getServerSystemCfg() ServerSystemConfig { func getServerSystemCfg() ServerSystemConfig {
envs := env.List("MINIO_")
envValues := make(map[string]string, len(envs))
for _, envK := range envs {
envValues[envK] = env.Get(envK, "")
}
return ServerSystemConfig{ return ServerSystemConfig{
MinioPlatform: fmt.Sprintf("OS: %s | Arch: %s", runtime.GOOS, runtime.GOARCH), MinioPlatform: fmt.Sprintf("OS: %s | Arch: %s", runtime.GOOS, runtime.GOARCH),
MinioEndpoints: globalEndpoints, MinioEndpoints: globalEndpoints,
MinioEnv: envValues,
} }
} }