chore: import upstream snapshot with attribution
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
govulncheck / govulncheck (push) Has been cancelled
Lint / golangci-lint (push) Has been cancelled
Run Tests / Unit Tests (push) Has been cancelled
Run Tests / Etcd Integration Tests (push) Has been cancelled
Harness (E2E) / Harnesses (mock LLM) (push) Has been cancelled
Harness (E2E) / Provider harnesses (live LLM conformance) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
// Package profileconfig provides grouped plugin profiles for go-micro
|
||||
package profile
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
natslib "github.com/nats-io/nats.go"
|
||||
"go-micro.dev/v6/broker"
|
||||
"go-micro.dev/v6/broker/nats"
|
||||
"go-micro.dev/v6/events"
|
||||
nevents "go-micro.dev/v6/events/natsjs"
|
||||
"go-micro.dev/v6/registry"
|
||||
nreg "go-micro.dev/v6/registry/nats"
|
||||
"go-micro.dev/v6/store"
|
||||
nstore "go-micro.dev/v6/store/nats-js-kv"
|
||||
|
||||
"go-micro.dev/v6/transport"
|
||||
ntx "go-micro.dev/v6/transport/nats"
|
||||
)
|
||||
|
||||
type Profile struct {
|
||||
Registry registry.Registry
|
||||
Broker broker.Broker
|
||||
Store store.Store
|
||||
Transport transport.Transport
|
||||
Stream events.Stream
|
||||
}
|
||||
|
||||
// LocalProfile returns a profile with local mDNS as the registry, HTTP as the broker, file as the store, and HTTP as the transport
|
||||
// It is used for local development and testing
|
||||
func LocalProfile() (Profile, error) {
|
||||
stream, err := events.NewStream()
|
||||
return Profile{
|
||||
Registry: registry.NewMDNSRegistry(),
|
||||
Broker: broker.NewHttpBroker(),
|
||||
Store: store.NewFileStore(),
|
||||
Transport: transport.NewHTTPTransport(),
|
||||
Stream: stream,
|
||||
}, err
|
||||
}
|
||||
|
||||
// NatsProfile returns a profile with NATS as the registry, broker, store, and transport
|
||||
// It uses the environment variable MICR_NATS_ADDRESS to set the NATS server address
|
||||
// If the variable is not set, it defaults to nats://0.0.0.0:4222 which will connect to a local NATS server
|
||||
func NatsProfile() (Profile, error) {
|
||||
addr := os.Getenv("MICRO_NATS_ADDRESS")
|
||||
if addr == "" {
|
||||
addr = "nats://0.0.0.0:4222"
|
||||
}
|
||||
// Split the address by comma, trim whitespace, and convert to a slice of strings
|
||||
addrs := splitNatsAdressList(addr)
|
||||
|
||||
reg := nreg.NewNatsRegistry(registry.Addrs(addrs...))
|
||||
|
||||
nopts := natslib.GetDefaultOptions()
|
||||
nopts.Servers = addrs
|
||||
brok := nats.NewNatsBroker(broker.Addrs(addrs...), nats.Options(nopts))
|
||||
|
||||
st := nstore.NewStore(nstore.NatsOptions(natslib.Options{Servers: addrs}))
|
||||
tx := ntx.NewTransport(ntx.Options(natslib.Options{Servers: addrs}))
|
||||
|
||||
stream, err := nevents.NewStream(
|
||||
nevents.Address(addr),
|
||||
)
|
||||
|
||||
registry.DefaultRegistry = reg
|
||||
broker.DefaultBroker = brok
|
||||
store.DefaultStore = st
|
||||
transport.DefaultTransport = tx
|
||||
return Profile{
|
||||
Registry: reg,
|
||||
Broker: brok,
|
||||
Store: st,
|
||||
Transport: tx,
|
||||
Stream: stream,
|
||||
}, err
|
||||
}
|
||||
|
||||
func splitNatsAdressList(addr string) []string {
|
||||
// Split the address by comma
|
||||
addrs := strings.Split(addr, ",")
|
||||
// Trim any whitespace from each address
|
||||
for i, a := range addrs {
|
||||
addrs[i] = strings.TrimSpace(a)
|
||||
}
|
||||
return addrs
|
||||
}
|
||||
|
||||
// Add more profiles as needed, e.g. grpc
|
||||
Reference in New Issue
Block a user