fix: add env in minio connected

pull/1846/head
luhaoling 2 years ago
parent 496c141f35
commit 922058b868

@ -21,6 +21,7 @@ import (
"io" "io"
"net/http" "net/http"
"net/url" "net/url"
"os"
"path" "path"
"reflect" "reflect"
"strconv" "strconv"
@ -60,7 +61,8 @@ const (
const successCode = http.StatusOK const successCode = http.StatusOK
func NewMinio(cache cache.MinioCache) (s3.Interface, error) { func NewMinio(cache cache.MinioCache) (s3.Interface, error) {
u, err := url.Parse(config.Config.Object.Minio.Endpoint) initUrl := getMinioAddr("MINIO_ENDPOINT", "MINIO_ADDRESS", "MINIO_PORT", config.Config.Object.Minio.Endpoint)
u, err := url.Parse(initUrl)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -491,3 +493,17 @@ func (m *Minio) FormData(ctx context.Context, name string, size int64, contentTy
SuccessCodes: []int{successCode}, SuccessCodes: []int{successCode},
}, nil }, nil
} }
func getMinioAddr(key1, key2, key3, fallback string) string {
// Prioritize environment variables
endpoint, endpointExist := os.LookupEnv(key1)
if !endpointExist {
endpoint = fallback
}
address, addressExist := os.LookupEnv(key2)
port, portExist := os.LookupEnv(key3)
if portExist && addressExist {
endpoint = "http://" + address + ":" + port
}
return endpoint
}

@ -16,10 +16,10 @@ package rpcclient
import ( import (
"context" "context"
"net/url"
"github.com/minio/minio-go/v7" "github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials" "github.com/minio/minio-go/v7/pkg/credentials"
"net/url"
"os"
"google.golang.org/grpc" "google.golang.org/grpc"
@ -49,7 +49,7 @@ func NewThird(discov discoveryregistry.SvcDiscoveryRegistry) *Third {
func minioInit() (*minio.Client, error) { func minioInit() (*minio.Client, error) {
minioClient := &minio.Client{} minioClient := &minio.Client{}
var initUrl string var initUrl string
initUrl = config.Config.Object.Minio.Endpoint initUrl = getMinioAddr("MINIO_ENDPOINT", "MINIO_ADDRESS", "MINIO_PORT", config.Config.Object.Minio.Endpoint)
minioUrl, err := url.Parse(initUrl) minioUrl, err := url.Parse(initUrl)
if err != nil { if err != nil {
return nil, err return nil, err
@ -69,3 +69,17 @@ func minioInit() (*minio.Client, error) {
} }
return minioClient, nil return minioClient, nil
} }
func getMinioAddr(key1, key2, key3, fallback string) string {
// Prioritize environment variables
endpoint, endpointExist := os.LookupEnv(key1)
if !endpointExist {
endpoint = fallback
}
address, addressExist := os.LookupEnv(key2)
port, portExist := os.LookupEnv(key3)
if portExist && addressExist {
endpoint = "http://" + address + ":" + port
}
return endpoint
}

@ -138,16 +138,9 @@ func checkMinio() (string, error) {
return "", nil return "", nil
} }
// Prioritize environment variables endpoint, err := getMinioAddr("MINIO_ENDPOINT", "MINIO_ADDRESS", "MINIO_PORT", config.Config.Object.Minio.Endpoint)
endpoint := getEnv("MINIO_ENDPOINT", config.Config.Object.Minio.Endpoint) if err != nil {
address, addressExist := os.LookupEnv("MINIO_ADDRESS") return "", err
port, portExist := os.LookupEnv("MINIO_PORT")
if portExist && addressExist {
endpoint = "http://" + address + ":" + port
} else if !portExist && addressExist {
return "", errs.Wrap(errors.New("the MINIO_ADDRESS of minio is empty"))
} else if portExist && !addressExist {
return "", errs.Wrap(errors.New("the MINIO_PORT of minio is empty"))
} }
minio := &component.Minio{ minio := &component.Minio{
@ -179,20 +172,11 @@ func checkRedis() (string, error) {
Password: password, Password: password,
} }
addr, addrExist := os.LookupEnv("REDIS_ADDRESS") addresses, err := getAddress("REDIS_ADDRESS", "REDIS_PORT", config.Config.Redis.Address)
port, portExist := os.LookupEnv("REDIS_PORT") if err != nil {
return "", err
if addrExist && portExist {
addresses := strings.Split(addr, ",")
for i, address := range addresses {
addresses[i] = address + ":" + port
}
redis.Address = addresses
} else if !addrExist && portExist {
return "", errs.Wrap(errors.New("the REDIS_ADDRESS of minio is empty"))
} else if addrExist && !portExist {
return "", errs.Wrap(errors.New("the REDIS_PORT of minio is empty"))
} }
redis.Address = addresses
str, err := component.CheckRedis(redis) str, err := component.CheckRedis(redis)
if err != nil { if err != nil {
@ -214,19 +198,11 @@ func checkZookeeper() (string, error) {
Password: getEnv("ZOOKEEPER_PASSWORD", config.Config.Zookeeper.Password), Password: getEnv("ZOOKEEPER_PASSWORD", config.Config.Zookeeper.Password),
} }
address, addrExist := os.LookupEnv("ZOOKEEPER_ADDRESS") addresses, err := getAddress("ZOOKEEPER_ADDRESS", "ZOOKEEPER_PORT", config.Config.Zookeeper.ZkAddr)
port, portExist := os.LookupEnv("ZOOKEEPER_PORT") if err != nil {
if addrExist && portExist { return "", nil
addresses := strings.Split(address, ",")
for i, addr := range addresses {
addresses[i] = addr + ":" + port
}
zk.ZkAddr = addresses
} else if !addrExist && portExist {
return "", errs.Wrap(errors.New("the ZOOKEEPER_ADDRESS of minio is empty"))
} else if addrExist && !portExist {
return "", errs.Wrap(errors.New("the ZOOKEEPER_PORT of minio is empty"))
} }
zk.ZkAddr = addresses
str, err := component.CheckZookeeper(zk) str, err := component.CheckZookeeper(zk)
if err != nil { if err != nil {
@ -248,19 +224,11 @@ func checkKafka() (string, error) {
Addr: strings.Split(address, ","), Addr: strings.Split(address, ","),
} }
address, addrExist := os.LookupEnv("KAFKA_ADDRESS") addresses, err := getAddress("KAFKA_ADDRESS", "KAFKA_PORT", config.Config.Kafka.Addr)
port, portExist := os.LookupEnv("KAFKA_PORT") if err != nil {
if addrExist && portExist { return "", nil
addresses := strings.Split(address, ",")
for i, addr := range addresses {
addresses[i] = addr + ":" + port
}
kafka.Addr = addresses
} else if !addrExist && portExist {
return "", errs.Wrap(errors.New("the KAFKA_ADDRESS of minio is empty"))
} else if addrExist && !portExist {
return "", errs.Wrap(errors.New("the KAFKA_PORT of minio is empty"))
} }
kafka.Addr = addresses
str, kafkaClient, err := component.CheckKafka(kafka) str, kafkaClient, err := component.CheckKafka(kafka)
if err != nil { if err != nil {
@ -298,3 +266,43 @@ func isTopicPresent(topic string, topics []string) bool {
} }
return false return false
} }
func getAddress(key1, key2 string, fallback []string) ([]string, error) {
address, addrExist := os.LookupEnv(key1)
port, portExist := os.LookupEnv(key2)
if addrExist && portExist {
addresses := strings.Split(address, ",")
for i, addr := range addresses {
addresses[i] = addr + ":" + port
}
return addresses, nil
} else if !addrExist && portExist {
result := make([]string, len(config.Config.Redis.Address))
for i, addr := range config.Config.Redis.Address {
add := strings.Split(addr, ":")
result[i] = add[0] + ":" + port
}
return result, nil
} else if addrExist && !portExist {
return nil, errs.Wrap(errors.New("the ZOOKEEPER_PORT of minio is empty"))
}
return fallback, nil
}
func getMinioAddr(key1, key2, key3, fallback string) (string, error) {
// Prioritize environment variables
endpoint := getEnv(key1, fallback)
address, addressExist := os.LookupEnv(key2)
port, portExist := os.LookupEnv(key3)
if portExist && addressExist {
endpoint = "http://" + address + ":" + port
} else if !portExist && addressExist {
return "", errs.Wrap(errors.New("the MINIO_PORT of minio is empty"))
} else if portExist && !addressExist {
arr := strings.Split(config.Config.Object.Minio.Endpoint, ":")
arr[2] = port
endpoint = strings.Join(arr, ":")
}
return endpoint, nil
}
Loading…
Cancel
Save