diff --git a/ocis-pkg/registry/registry.go b/ocis-pkg/registry/registry.go new file mode 100644 index 0000000000..01d5ca15d9 --- /dev/null +++ b/ocis-pkg/registry/registry.go @@ -0,0 +1,35 @@ +package registry + +import ( + "os" + "strings" + + etcdr "github.com/micro/go-micro/v2/registry/etcd" + mdnsr "github.com/micro/go-micro/v2/registry/mdns" + + "github.com/micro/go-micro/v2/registry" +) + +var ( + registryEnv = "MICRO_REGISTRY" + registryAddressEnv = "MICRO_REGISTRY_ADDRESS" +) + +// GetRegistry returns a configured micro registry based on Micro env vars. +// It defaults to mDNS, so mind that systems with mDNS disabled by default (i.e SUSE) will have a hard time +// and it needs to explicitly use etcd. Os awareness for providing a working registry out of the box should be done. +func GetRegistry() *registry.Registry { + addresses := strings.Split(os.Getenv(registryAddressEnv), ",") + + var r registry.Registry + switch os.Getenv(registryEnv) { + case "etcd": + r = etcdr.NewRegistry( + registry.Addrs(addresses...), + ) + default: + r = mdnsr.NewRegistry() + } + + return &r +} diff --git a/ocis/pkg/command/root.go b/ocis/pkg/command/root.go index dc2c57a8bd..728ebfd3da 100644 --- a/ocis/pkg/command/root.go +++ b/ocis/pkg/command/root.go @@ -4,14 +4,11 @@ import ( "os" "strings" - etcdr "github.com/micro/go-micro/v2/registry/etcd" - mdnsr "github.com/micro/go-micro/v2/registry/mdns" - "github.com/micro/go-micro/v2" - "github.com/micro/go-micro/v2/registry" "github.com/micro/cli/v2" "github.com/owncloud/ocis/ocis-pkg/log" + oregistry "github.com/owncloud/ocis/ocis-pkg/registry" "github.com/owncloud/ocis/ocis/pkg/config" "github.com/owncloud/ocis/ocis/pkg/flagset" "github.com/owncloud/ocis/ocis/pkg/register" @@ -50,15 +47,7 @@ func Execute() error { ) } - addresses := strings.Split(os.Getenv("MICRO_REGISTRY_ADDRESS"), ",") - - var r registry.Registry - switch os.Getenv("MICRO_REGISTRY") { - case "etcd": - r = etcdr.NewRegistry(registry.Addrs(addresses...)) - default: - r = mdnsr.NewRegistry() - } + r := *oregistry.GetRegistry() opts := micro.Options{ Registry: r, diff --git a/storage/pkg/service/external/external.go b/storage/pkg/service/external/external.go index 80aef834d0..8990b4de65 100644 --- a/storage/pkg/service/external/external.go +++ b/storage/pkg/service/external/external.go @@ -2,16 +2,12 @@ package external import ( "context" - "os" - "strings" "time" - etcdr "github.com/micro/go-micro/v2/registry/etcd" - mdnsr "github.com/micro/go-micro/v2/registry/mdns" - "github.com/micro/go-micro/v2/broker" "github.com/micro/go-micro/v2/registry" "github.com/owncloud/ocis/ocis-pkg/log" + oregistry "github.com/owncloud/ocis/ocis-pkg/registry" ) // RegisterGRPCEndpoint publishes an arbitrary endpoint to the service-registry. This allows to query nodes of @@ -29,15 +25,7 @@ func RegisterGRPCEndpoint(ctx context.Context, serviceID, uuid, addr string, log node.Metadata["transport"] = "grpc" node.Metadata["protocol"] = "grpc" - addresses := strings.Split(os.Getenv("MICRO_REGISTRY_ADDRESS"), ",") - var r registry.Registry - - switch os.Getenv("MICRO_REGISTRY") { - case "etcd": - r = etcdr.NewRegistry(registry.Addrs(addresses...)) - default: - r = mdnsr.NewRegistry() - } + r := *oregistry.GetRegistry() service := ®istry.Service{ Name: serviceID,