mirror of
https://github.com/absmach/magistrala.git
synced 2026-06-23 04:10:28 +00:00
NOISSUE - Remove internal env package (#32)
* refactor(env): Remove internal env package - update env package to v10 - fix jaeger not sending traces - added jaeger URL as url.URL rather than string value - made changes to jaeger provider * feat(auth): Modify env variables in .env file Update the AccessDuration variable in main.go to reflect the desired token duration for authentication. Additionally, modify various environment variables in the .env file related to the auth module. These changes include updating configuration settings for auth and datastore services, such as token duration, logging level, database details, and server settings. These modifications are necessary for proper functionality and are intended for use in a Docker Compose file. Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> * fix(docker): fix incorrect variable name in docker-compose.yml Fixed an issue where the variable name for the PostgreSQL database was incorrect in the docker-compose.yml file. Updated the variable name from "MG_AUTH_DB" to "MG_AUTH_DB_NAME" to properly set the name of the database. Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com> --------- Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
This commit is contained in:
+16
-24
@@ -7,6 +7,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
@@ -22,7 +23,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/postgres"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
grpcserver "github.com/absmach/magistrala/internal/server/grpc"
|
||||
@@ -32,6 +32,7 @@ import (
|
||||
v1 "github.com/authzed/authzed-go/proto/authzed/api/v1"
|
||||
"github.com/authzed/authzed-go/v1"
|
||||
"github.com/authzed/grpcutil"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
@@ -53,17 +54,17 @@ const (
|
||||
)
|
||||
|
||||
type config struct {
|
||||
LogLevel string `env:"MG_AUTH_LOG_LEVEL" envDefault:"info"`
|
||||
SecretKey string `env:"MG_AUTH_SECRET_KEY" envDefault:"secret"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_AUTH_ADAPTER_INSTANCE_ID" envDefault:""`
|
||||
AccessDuration string `env:"MG_AUTH_ACCESS_TOKEN_DURATION" envDefault:"30m"`
|
||||
RefreshDuration string `env:"MG_AUTH_REFRESH_TOKEN_DURATION" envDefault:"24h"`
|
||||
SpicedbHost string `env:"MG_SPICEDB_HOST" envDefault:"localhost"`
|
||||
SpicedbPort string `env:"MG_SPICEDB_PORT" envDefault:"50051"`
|
||||
SpicedbSchemaFile string `env:"MG_SPICEDB_SCHEMA_FILE" envDefault:"./docker/spicedb/schema.zed"`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
LogLevel string `env:"MG_AUTH_LOG_LEVEL" envDefault:"info"`
|
||||
SecretKey string `env:"MG_AUTH_SECRET_KEY" envDefault:"secret"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_AUTH_ADAPTER_INSTANCE_ID" envDefault:""`
|
||||
AccessDuration time.Duration `env:"MG_AUTH_ACCESS_TOKEN_DURATION" envDefault:"1h"`
|
||||
RefreshDuration time.Duration `env:"MG_AUTH_REFRESH_TOKEN_DURATION" envDefault:"24h"`
|
||||
SpicedbHost string `env:"MG_SPICEDB_HOST" envDefault:"localhost"`
|
||||
SpicedbPort string `env:"MG_SPICEDB_PORT" envDefault:"50051"`
|
||||
SpicedbSchemaFile string `env:"MG_SPICEDB_SCHEMA_FILE" envDefault:"./docker/spicedb/schema.zed"`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -126,7 +127,7 @@ func main() {
|
||||
svc := newService(db, tracer, cfg, dbConfig, logger, spicedbclient)
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err.Error()))
|
||||
exitCode = 1
|
||||
return
|
||||
@@ -134,7 +135,7 @@ func main() {
|
||||
hs := httpserver.New(ctx, cancel, svcName, httpServerConfig, httpapi.MakeHandler(svc, logger, cfg.InstanceID), logger)
|
||||
|
||||
grpcServerConfig := server.Config{Port: defSvcGRPCPort}
|
||||
if err := env.Parse(&grpcServerConfig, env.Options{Prefix: envPrefixGrpc}); err != nil {
|
||||
if err := env.ParseWithOptions(&grpcServerConfig, env.Options{Prefix: envPrefixGrpc}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s gRPC server configuration : %s", svcName, err.Error()))
|
||||
exitCode = 1
|
||||
return
|
||||
@@ -205,16 +206,7 @@ func newService(db *sqlx.DB, tracer trace.Tracer, cfg config, dbConfig pgclient.
|
||||
idProvider := uuid.New()
|
||||
t := jwt.New([]byte(cfg.SecretKey))
|
||||
|
||||
aDuration, err := time.ParseDuration(cfg.AccessDuration)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to parse access token duration: %s", err.Error()))
|
||||
}
|
||||
rDuration, err := time.ParseDuration(cfg.RefreshDuration)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to parse refresh token duration: %s", err.Error()))
|
||||
}
|
||||
|
||||
svc := auth.New(keysRepo, domainsRepo, idProvider, t, pa, aDuration, rDuration)
|
||||
svc := auth.New(keysRepo, domainsRepo, idProvider, t, pa, cfg.AccessDuration, cfg.RefreshDuration)
|
||||
svc = api.LoggingMiddleware(svc, logger)
|
||||
counter, latency := internal.MakeMetrics("groups", "api")
|
||||
svc = api.MetricsMiddleware(svc, counter, latency)
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -21,7 +22,6 @@ import (
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
"github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/postgres"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
@@ -29,6 +29,7 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/events/store"
|
||||
mgsdk "github.com/absmach/magistrala/pkg/sdk/go"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
@@ -50,7 +51,7 @@ type config struct {
|
||||
EncKey string `env:"MG_BOOTSTRAP_ENCRYPT_KEY" envDefault:"12345678910111213141516171819202"`
|
||||
ESConsumerName string `env:"MG_BOOTSTRAP_EVENT_CONSUMER" envDefault:"bootstrap"`
|
||||
ThingsURL string `env:"MG_THINGS_URL" envDefault:"http://localhost:9000"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_BOOTSTRAP_INSTANCE_ID" envDefault:""`
|
||||
ESURL string `env:"MG_BOOTSTRAP_ES_URL" envDefault:"redis://localhost:6379/0"`
|
||||
@@ -133,7 +134,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
cassandraclient "github.com/absmach/magistrala/internal/clients/cassandra"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -22,6 +21,7 @@ import (
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
"github.com/absmach/magistrala/readers/cassandra"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/gocql/gocql"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -100,7 +100,7 @@ func main() {
|
||||
|
||||
// Create new http server
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -18,13 +19,13 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
cassandraclient "github.com/absmach/magistrala/internal/clients/cassandra"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/gocql/gocql"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -41,7 +42,7 @@ type config struct {
|
||||
LogLevel string `env:"MG_CASSANDRA_WRITER_LOG_LEVEL" envDefault:"info"`
|
||||
ConfigPath string `env:"MG_CASSANDRA_WRITER_CONFIG_PATH" envDefault:"/config.toml"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_CASSANDRA_WRITER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -74,7 +75,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+4
-3
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -20,13 +21,13 @@ import (
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/postgres"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
mgsdk "github.com/absmach/magistrala/pkg/sdk/go"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
@@ -45,7 +46,7 @@ type config struct {
|
||||
LogLevel string `env:"MG_CERTS_LOG_LEVEL" envDefault:"info"`
|
||||
CertsURL string `env:"MG_SDK_CERTS_URL" envDefault:"http://localhost"`
|
||||
ThingsURL string `env:"MG_THINGS_URL" envDefault:"http://things:9000"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_CERTS_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -137,7 +138,7 @@ func main() {
|
||||
svc := newService(auth, db, tracer, logger, cfg, dbConfig, pkiclient)
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+5
-4
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -17,7 +18,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authapi "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
coapserver "github.com/absmach/magistrala/internal/server/coap"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
@@ -25,6 +25,7 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -40,7 +41,7 @@ const (
|
||||
type config struct {
|
||||
LogLevel string `env:"MG_COAP_ADAPTER_LOG_LEVEL" envDefault:"info"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_COAP_ADAPTER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -72,14 +73,14 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
coapServerConfig := server.Config{Port: defSvcCoAPPort}
|
||||
if err := env.Parse(&coapServerConfig, env.Options{Prefix: envPrefix}); err != nil {
|
||||
if err := env.ParseWithOptions(&coapServerConfig, env.Options{Prefix: envPrefix}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s CoAP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+4
-3
@@ -9,6 +9,7 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -17,7 +18,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authapi "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -26,6 +26,7 @@ import (
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/messaging/handler"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
mproxy "github.com/mainflux/mproxy/pkg/http"
|
||||
"github.com/mainflux/mproxy/pkg/session"
|
||||
@@ -44,7 +45,7 @@ const (
|
||||
type config struct {
|
||||
LogLevel string `env:"MG_HTTP_ADAPTER_LOG_LEVEL" envDefault:"info"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_HTTP_ADAPTER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -76,7 +77,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefix}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefix}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
influxdbclient "github.com/absmach/magistrala/internal/clients/influxdb"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -22,6 +21,7 @@ import (
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
"github.com/absmach/magistrala/readers/influxdb"
|
||||
"github.com/caarlos0/env/v10"
|
||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -35,8 +35,8 @@ const (
|
||||
)
|
||||
|
||||
type config struct {
|
||||
LogLevel string `env:"MG_INFLUX_READER_LOG_LEVEL" envDefault:"info"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
LogLevel string `env:"MG_INFLUX_READER_LOG_LEVEL" envDefault:"info"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_INFLUX_READER_INSTANCE_ID" envDefault:""`
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ func main() {
|
||||
logger.Info("Successfully connected to things grpc server " + tcHandler.Secure())
|
||||
|
||||
influxDBConfig := influxdbclient.Config{}
|
||||
if err := env.Parse(&influxDBConfig, env.Options{Prefix: envPrefixDB}); err != nil {
|
||||
if err := env.ParseWithOptions(&influxDBConfig, env.Options{Prefix: envPrefixDB}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load InfluxDB client configuration from environment variable : %s", err))
|
||||
exitCode = 1
|
||||
return
|
||||
@@ -109,7 +109,7 @@ func main() {
|
||||
repo := newService(client, repocfg, logger)
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -17,13 +18,13 @@ import (
|
||||
"github.com/absmach/magistrala/consumers/writers/influxdb"
|
||||
influxdbclient "github.com/absmach/magistrala/internal/clients/influxdb"
|
||||
"github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
@@ -39,7 +40,7 @@ type config struct {
|
||||
LogLevel string `env:"MG_INFLUX_WRITER_LOG_LEVEL" envDefault:"info"`
|
||||
ConfigPath string `env:"MG_INFLUX_WRITER_CONFIG_PATH" envDefault:"/config.toml"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_INFLUX_WRITER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -71,7 +72,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
@@ -100,7 +101,7 @@ func main() {
|
||||
pubSub = brokerstracing.NewPubSub(httpServerConfig, tracer, pubSub)
|
||||
|
||||
influxDBConfig := influxdbclient.Config{}
|
||||
if err := env.Parse(&influxDBConfig, env.Options{Prefix: envPrefixDB}); err != nil {
|
||||
if err := env.ParseWithOptions(&influxDBConfig, env.Options{Prefix: envPrefixDB}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load InfluxDB client configuration from environment variable : %s", err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+4
-3
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
@@ -15,7 +16,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
"github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
redisclient "github.com/absmach/magistrala/internal/clients/redis"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -28,6 +28,7 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
mqttpaho "github.com/eclipse/paho.mqtt.golang"
|
||||
"github.com/go-redis/redis/v8"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
@@ -54,7 +55,7 @@ type config struct {
|
||||
LoraMsgTimeout time.Duration `env:"MG_LORA_ADAPTER_MESSAGES_TIMEOUT" envDefault:"30s"`
|
||||
ESConsumerName string `env:"MG_LORA_ADAPTER_EVENT_CONSUMER" envDefault:"lora-adapter"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_LORA_ADAPTER_INSTANCE_ID" envDefault:""`
|
||||
ESURL string `env:"MG_LORA_ADAPTER_ES_URL" envDefault:"redis://localhost:6379/0"`
|
||||
@@ -88,7 +89,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
mongoclient "github.com/absmach/magistrala/internal/clients/mongo"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -22,6 +21,7 @@ import (
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
"github.com/absmach/magistrala/readers/mongodb"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -95,7 +95,7 @@ func main() {
|
||||
logger.Info("Successfully connected to things grpc server " + tcHandler.Secure())
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -18,13 +19,13 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
mongoclient "github.com/absmach/magistrala/internal/clients/mongo"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -41,7 +42,7 @@ type config struct {
|
||||
LogLevel string `env:"MG_MONGO_WRITER_LOG_LEVEL" envDefault:"info"`
|
||||
ConfigPath string `env:"MG_MONGO_WRITER_CONFIG_PATH" envDefault:"/config.toml"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_MONGO_WRITER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -73,7 +74,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+3
-2
@@ -10,13 +10,13 @@ import (
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
authapi "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/mqtt"
|
||||
@@ -28,6 +28,7 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/messaging/handler"
|
||||
mqttpub "github.com/absmach/magistrala/pkg/messaging/mqtt"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/cenkalti/backoff/v4"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
mp "github.com/mainflux/mproxy/pkg/mqtt"
|
||||
@@ -51,7 +52,7 @@ type config struct {
|
||||
HTTPTargetPort string `env:"MG_MQTT_ADAPTER_WS_TARGET_PORT" envDefault:"8080"`
|
||||
HTTPTargetPath string `env:"MG_MQTT_ADAPTER_WS_TARGET_PATH" envDefault:"/mqtt"`
|
||||
Instance string `env:"MG_MQTT_ADAPTER_INSTANCE" envDefault:""`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_MQTT_ADAPTER_INSTANCE_ID" envDefault:""`
|
||||
|
||||
+4
-3
@@ -8,13 +8,13 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
redisclient "github.com/absmach/magistrala/internal/clients/redis"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -27,6 +27,7 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/go-redis/redis/v8"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -48,7 +49,7 @@ type config struct {
|
||||
LogLevel string `env:"MG_OPCUA_ADAPTER_LOG_LEVEL" envDefault:"info"`
|
||||
ESConsumerName string `env:"MG_OPCUA_ADAPTER_EVENT_CONSUMER" envDefault:"opcua-adapter"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_OPCUA_ADAPTER_INSTANCE_ID" envDefault:""`
|
||||
ESURL string `env:"MG_OPCUA_ADAPTER_ES_URL" envDefault:"redis://localhost:6379/0"`
|
||||
@@ -87,7 +88,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -22,6 +21,7 @@ import (
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
"github.com/absmach/magistrala/readers/postgres"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -103,7 +103,7 @@ func main() {
|
||||
repo := newService(db, logger)
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -18,13 +19,13 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -42,7 +43,7 @@ type config struct {
|
||||
LogLevel string `env:"MG_POSTGRES_WRITER_LOG_LEVEL" envDefault:"info"`
|
||||
ConfigPath string `env:"MG_POSTGRES_WRITER_CONFIG_PATH" envDefault:"/config.toml"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_POSTGRES_WRITER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -74,7 +75,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
"reflect"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -24,6 +23,7 @@ import (
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/absmach/magistrala/provision"
|
||||
"github.com/absmach/magistrala/provision/api"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
)
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -21,7 +22,6 @@ import (
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -29,6 +29,7 @@ import (
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/ulid"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
@@ -48,7 +49,7 @@ type config struct {
|
||||
From string `env:"MG_SMPP_NOTIFIER_FROM_ADDR" envDefault:""`
|
||||
ConfigPath string `env:"MG_SMPP_NOTIFIER_CONFIG_PATH" envDefault:"/config.toml"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_SMPP_NOTIFIER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -94,7 +95,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -22,7 +23,6 @@ import (
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/email"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -30,6 +30,7 @@ import (
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/ulid"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
@@ -49,7 +50,7 @@ type config struct {
|
||||
ConfigPath string `env:"MG_SMTP_NOTIFIER_CONFIG_PATH" envDefault:"/config.toml"`
|
||||
From string `env:"MG_SMTP_NOTIFIER_FROM_ADDR" envDefault:""`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_SMTP_NOTIFIER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -97,7 +98,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+17
-21
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
@@ -17,7 +18,6 @@ import (
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
redisclient "github.com/absmach/magistrala/internal/clients/redis"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
mggroups "github.com/absmach/magistrala/internal/groups"
|
||||
gapi "github.com/absmach/magistrala/internal/groups/api"
|
||||
gpostgres "github.com/absmach/magistrala/internal/groups/postgres"
|
||||
@@ -38,6 +38,7 @@ import (
|
||||
thingspg "github.com/absmach/magistrala/things/postgres"
|
||||
localusers "github.com/absmach/magistrala/things/standalone"
|
||||
ctracing "github.com/absmach/magistrala/things/tracing"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-redis/redis/v8"
|
||||
"github.com/jmoiron/sqlx"
|
||||
@@ -59,16 +60,16 @@ const (
|
||||
)
|
||||
|
||||
type config struct {
|
||||
LogLevel string `env:"MG_THINGS_LOG_LEVEL" envDefault:"info"`
|
||||
StandaloneID string `env:"MG_THINGS_STANDALONE_ID" envDefault:""`
|
||||
StandaloneToken string `env:"MG_THINGS_STANDALONE_TOKEN" envDefault:""`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
CacheKeyDuration string `env:"MG_THINGS_CACHE_KEY_DURATION" envDefault:"10m"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_THINGS_INSTANCE_ID" envDefault:""`
|
||||
ESURL string `env:"MG_THINGS_ES_URL" envDefault:"redis://localhost:6379/0"`
|
||||
CacheURL string `env:"MG_THINGS_CACHE_URL" envDefault:"redis://localhost:6379/0"`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
LogLevel string `env:"MG_THINGS_LOG_LEVEL" envDefault:"info"`
|
||||
StandaloneID string `env:"MG_THINGS_STANDALONE_ID" envDefault:""`
|
||||
StandaloneToken string `env:"MG_THINGS_STANDALONE_TOKEN" envDefault:""`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
CacheKeyDuration time.Duration `env:"MG_THINGS_CACHE_KEY_DURATION" envDefault:"10m"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_THINGS_INSTANCE_ID" envDefault:""`
|
||||
ESURL string `env:"MG_THINGS_ES_URL" envDefault:"redis://localhost:6379/0"`
|
||||
CacheURL string `env:"MG_THINGS_CACHE_URL" envDefault:"redis://localhost:6379/0"`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -162,7 +163,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
@@ -171,7 +172,7 @@ func main() {
|
||||
httpSvc := httpserver.New(ctx, cancel, svcName, httpServerConfig, httpapi.MakeHandler(csvc, gsvc, mux, logger, cfg.InstanceID), logger)
|
||||
|
||||
grpcServerConfig := server.Config{Port: defSvcAuthGRPCPort}
|
||||
if err := env.Parse(&grpcServerConfig, env.Options{Prefix: envPrefixGRPC}); err != nil {
|
||||
if err := env.ParseWithOptions(&grpcServerConfig, env.Options{Prefix: envPrefixGRPC}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s gRPC server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
@@ -205,24 +206,19 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func newService(ctx context.Context, db *sqlx.DB, dbConfig pgclient.Config, auth magistrala.AuthServiceClient, cacheClient *redis.Client, keyDuration, esURL string, tracer trace.Tracer, logger mglog.Logger) (things.Service, groups.Service, error) {
|
||||
func newService(ctx context.Context, db *sqlx.DB, dbConfig pgclient.Config, auth magistrala.AuthServiceClient, cacheClient *redis.Client, keyDuration time.Duration, esURL string, tracer trace.Tracer, logger mglog.Logger) (things.Service, groups.Service, error) {
|
||||
database := postgres.NewDatabase(db, dbConfig, tracer)
|
||||
cRepo := thingspg.NewRepository(database)
|
||||
gRepo := gpostgres.New(database)
|
||||
|
||||
idp := uuid.New()
|
||||
|
||||
kDuration, err := time.ParseDuration(keyDuration)
|
||||
if err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to parse cache key duration: %s", err.Error()))
|
||||
}
|
||||
|
||||
thingCache := thcache.NewCache(cacheClient, kDuration)
|
||||
thingCache := thcache.NewCache(cacheClient, keyDuration)
|
||||
|
||||
csvc := things.NewService(auth, cRepo, gRepo, thingCache, idp)
|
||||
gsvc := mggroups.NewService(gRepo, idp, auth)
|
||||
|
||||
csvc, err = thevents.NewEventStoreMiddleware(ctx, csvc, esURL)
|
||||
csvc, err := thevents.NewEventStoreMiddleware(ctx, csvc, esURL)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authclient "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -22,6 +21,7 @@ import (
|
||||
"github.com/absmach/magistrala/readers"
|
||||
"github.com/absmach/magistrala/readers/api"
|
||||
"github.com/absmach/magistrala/readers/timescale"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -101,7 +101,7 @@ func main() {
|
||||
logger.Info("Successfully connected to things grpc server " + tcHandler.Secure())
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -18,13 +19,13 @@ import (
|
||||
"github.com/absmach/magistrala/internal"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
"github.com/absmach/magistrala/pkg/messaging/brokers"
|
||||
brokerstracing "github.com/absmach/magistrala/pkg/messaging/brokers/tracing"
|
||||
"github.com/absmach/magistrala/pkg/uuid"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"golang.org/x/sync/errgroup"
|
||||
@@ -42,7 +43,7 @@ type config struct {
|
||||
LogLevel string `env:"MG_TIMESCALE_WRITER_LOG_LEVEL" envDefault:"info"`
|
||||
ConfigPath string `env:"MG_TIMESCALE_WRITER_CONFIG_PATH" envDefault:"/config.toml"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_TIMESCALE_WRITER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -74,7 +75,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+4
-3
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
@@ -16,7 +17,6 @@ import (
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
mongoclient "github.com/absmach/magistrala/internal/clients/mongo"
|
||||
redisclient "github.com/absmach/magistrala/internal/clients/redis"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -31,6 +31,7 @@ import (
|
||||
"github.com/absmach/magistrala/twins/events"
|
||||
twmongodb "github.com/absmach/magistrala/twins/mongodb"
|
||||
"github.com/absmach/magistrala/twins/tracing"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/go-redis/redis/v8"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
@@ -51,7 +52,7 @@ type config struct {
|
||||
StandaloneToken string `env:"MG_TWINS_STANDALONE_TOKEN" envDefault:""`
|
||||
ChannelID string `env:"MG_TWINS_CHANNEL_ID" envDefault:""`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_TWINS_INSTANCE_ID" envDefault:""`
|
||||
ESURL string `env:"MG_TWINS_ES_URL" envDefault:"redis://localhost:6379/0"`
|
||||
@@ -85,7 +86,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+15
-16
@@ -8,6 +8,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
"regexp"
|
||||
"time"
|
||||
@@ -19,7 +20,6 @@ import (
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
pgclient "github.com/absmach/magistrala/internal/clients/postgres"
|
||||
"github.com/absmach/magistrala/internal/email"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
mggroups "github.com/absmach/magistrala/internal/groups"
|
||||
gapi "github.com/absmach/magistrala/internal/groups/api"
|
||||
gevents "github.com/absmach/magistrala/internal/groups/events"
|
||||
@@ -40,6 +40,7 @@ import (
|
||||
"github.com/absmach/magistrala/users/hasher"
|
||||
clientspg "github.com/absmach/magistrala/users/postgres"
|
||||
ctracing "github.com/absmach/magistrala/users/tracing"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/jmoiron/sqlx"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
@@ -58,20 +59,18 @@ const (
|
||||
)
|
||||
|
||||
type config struct {
|
||||
LogLevel string `env:"MG_USERS_LOG_LEVEL" envDefault:"info"`
|
||||
SecretKey string `env:"MG_USERS_SECRET_KEY" envDefault:"secret"`
|
||||
AdminEmail string `env:"MG_USERS_ADMIN_EMAIL" envDefault:""`
|
||||
AdminPassword string `env:"MG_USERS_ADMIN_PASSWORD" envDefault:""`
|
||||
PassRegexText string `env:"MG_USERS_PASS_REGEX" envDefault:"^.{8,}$"`
|
||||
AccessDuration string `env:"MG_USERS_ACCESS_TOKEN_DURATION" envDefault:"15m"`
|
||||
RefreshDuration string `env:"MG_USERS_REFRESH_TOKEN_DURATION" envDefault:"24h"`
|
||||
ResetURL string `env:"MG_TOKEN_RESET_ENDPOINT" envDefault:"/reset-request"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_USERS_INSTANCE_ID" envDefault:""`
|
||||
ESURL string `env:"MG_USERS_ES_URL" envDefault:"redis://localhost:6379/0"`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
PassRegex *regexp.Regexp
|
||||
LogLevel string `env:"MG_USERS_LOG_LEVEL" envDefault:"info"`
|
||||
SecretKey string `env:"MG_USERS_SECRET_KEY" envDefault:"secret"`
|
||||
AdminEmail string `env:"MG_USERS_ADMIN_EMAIL" envDefault:""`
|
||||
AdminPassword string `env:"MG_USERS_ADMIN_PASSWORD" envDefault:""`
|
||||
PassRegexText string `env:"MG_USERS_PASS_REGEX" envDefault:"^.{8,}$"`
|
||||
ResetURL string `env:"MG_TOKEN_RESET_ENDPOINT" envDefault:"/reset-request"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_USERS_INSTANCE_ID" envDefault:""`
|
||||
ESURL string `env:"MG_USERS_ES_URL" envDefault:"redis://localhost:6379/0"`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
PassRegex *regexp.Regexp
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -159,7 +158,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err.Error()))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+4
-3
@@ -8,13 +8,13 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/url"
|
||||
"os"
|
||||
|
||||
"github.com/absmach/magistrala"
|
||||
"github.com/absmach/magistrala/internal"
|
||||
authapi "github.com/absmach/magistrala/internal/clients/grpc/auth"
|
||||
jaegerclient "github.com/absmach/magistrala/internal/clients/jaeger"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
httpserver "github.com/absmach/magistrala/internal/server/http"
|
||||
mglog "github.com/absmach/magistrala/logger"
|
||||
@@ -25,6 +25,7 @@ import (
|
||||
"github.com/absmach/magistrala/ws"
|
||||
"github.com/absmach/magistrala/ws/api"
|
||||
"github.com/absmach/magistrala/ws/tracing"
|
||||
"github.com/caarlos0/env/v10"
|
||||
chclient "github.com/mainflux/callhome/pkg/client"
|
||||
"github.com/mainflux/mproxy/pkg/session"
|
||||
"github.com/mainflux/mproxy/pkg/websockets"
|
||||
@@ -43,7 +44,7 @@ const (
|
||||
type config struct {
|
||||
LogLevel string `env:"MG_WS_ADAPTER_LOG_LEVEL" envDefault:"info"`
|
||||
BrokerURL string `env:"MG_MESSAGE_BROKER_URL" envDefault:"nats://localhost:4222"`
|
||||
JaegerURL string `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
JaegerURL url.URL `env:"MG_JAEGER_URL" envDefault:"http://jaeger:14268/api/traces"`
|
||||
SendTelemetry bool `env:"MG_SEND_TELEMETRY" envDefault:"true"`
|
||||
InstanceID string `env:"MG_WS_ADAPTER_INSTANCE_ID" envDefault:""`
|
||||
TraceRatio float64 `env:"MG_JAEGER_TRACE_RATIO" envDefault:"1.0"`
|
||||
@@ -75,7 +76,7 @@ func main() {
|
||||
}
|
||||
|
||||
httpServerConfig := server.Config{Port: defSvcHTTPPort}
|
||||
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
if err := env.ParseWithOptions(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
|
||||
logger.Error(fmt.Sprintf("failed to load %s HTTP server configuration : %s", svcName, err))
|
||||
exitCode = 1
|
||||
return
|
||||
|
||||
+26
-9
@@ -56,11 +56,10 @@ MG_ES_STORE_TYPE=${MG_MESSAGE_BROKER_TYPE}
|
||||
MG_ES_STORE_URL=${MG_NATS_URL}
|
||||
|
||||
## Jaeger
|
||||
MG_JAEGER_PORT=6831
|
||||
MG_JAEGER_COLLECTOR_OTLP_ENABLED=true
|
||||
MG_JAEGER_FRONTEND=16686
|
||||
MG_JAEGER_COLLECTOR=14268
|
||||
MG_JAEGER_CONFIGS=5778
|
||||
MG_JAEGER_URL=http://jaeger:14268/api/traces
|
||||
MG_JAEGER_OLTP_HTTP=4318
|
||||
MG_JAEGER_URL=http://jaeger:4318
|
||||
MG_JAEGER_TRACE_RATIO=1.0
|
||||
|
||||
## Call home
|
||||
@@ -73,17 +72,35 @@ MG_POSTGRES_MAX_CONNECTIONS=100
|
||||
|
||||
### Auth
|
||||
MG_AUTH_LOG_LEVEL=debug
|
||||
MG_AUTH_HTTP_HOST=auth
|
||||
MG_AUTH_HTTP_PORT=8189
|
||||
MG_AUTH_HTTP_SERVER_CERT=
|
||||
MG_AUTH_HTTP_SERVER_KEY=
|
||||
MG_AUTH_GRPC_HOST=auth
|
||||
MG_AUTH_GRPC_PORT=8181
|
||||
MG_AUTH_GRPC_URL=auth:8181
|
||||
MG_AUTH_GRPC_TIMEOUT=300s
|
||||
MG_AUTH_GRPC_SERVER_CERT=${GRPC_MTLS:+./ssl/certs/auth-grpc-server.crt}${GRPC_TLS:+./ssl/certs/auth-grpc-server.crt}
|
||||
MG_AUTH_GRPC_SERVER_KEY=${GRPC_MTLS:+./ssl/certs/auth-grpc-server.key}${GRPC_TLS:+./ssl/certs/auth-grpc-server.key}
|
||||
MG_AUTH_GRPC_SERVER_CA_CERTS=${GRPC_MTLS:+./ssl/certs/ca.crt}${GRPC_TLS:+./ssl/certs/ca.crt}
|
||||
MG_AUTH_DB_HOST=auth-db
|
||||
MG_AUTH_DB_PORT=5432
|
||||
MG_AUTH_DB_USER=magistrala
|
||||
MG_AUTH_DB_PASS=magistrala
|
||||
MG_AUTH_DB=auth
|
||||
MG_AUTH_SECRET=secret
|
||||
MG_AUTH_ACCESS_TOKEN_DURATION="300m"
|
||||
MG_AUTH_DB_NAME=auth
|
||||
MG_AUTH_DB_SSL_MODE=disable
|
||||
MG_AUTH_DB_SSL_CERT=
|
||||
MG_AUTH_DB_SSL_KEY=
|
||||
MG_AUTH_DB_SSL_ROOT_CERT=
|
||||
MG_AUTH_SECRET_KEY=HyE2D4RUt9nnKG6v8zKEqAp6g6ka8hhZsqUpzgKvnwpXrNVQSH
|
||||
MG_AUTH_ACCESS_TOKEN_DURATION="1h"
|
||||
MG_AUTH_REFRESH_TOKEN_DURATION="24h"
|
||||
MG_AUTH_ADAPTER_INSTANCE_ID=
|
||||
|
||||
#### Auth GRPC Client Config
|
||||
MG_AUTH_GRPC_URL=auth:8181
|
||||
MG_AUTH_GRPC_TIMEOUT=300s
|
||||
MG_AUTH_GRPC_CLIENT_CERT=${GRPC_MTLS:+./ssl/certs/auth-grpc-client.crt}
|
||||
MG_AUTH_GRPC_CLIENT_KEY=${GRPC_MTLS:+./ssl/certs/auth-grpc-client.key}
|
||||
MG_AUTH_GRPC_CLIENT_CA_CERTS=${GRPC_MTLS:+./ssl/certs/ca.crt}
|
||||
|
||||
### SpiceDB Datastore config
|
||||
MG_SPICEDB_DB_USER=magistrala
|
||||
|
||||
+30
-11
@@ -79,7 +79,7 @@ services:
|
||||
environment:
|
||||
POSTGRES_USER: ${MG_AUTH_DB_USER}
|
||||
POSTGRES_PASSWORD: ${MG_AUTH_DB_PASS}
|
||||
POSTGRES_DB: ${MG_AUTH_DB}
|
||||
POSTGRES_DB: ${MG_AUTH_DB_NAME}
|
||||
networks:
|
||||
- magistrala-base-net
|
||||
volumes:
|
||||
@@ -95,19 +95,38 @@ services:
|
||||
- ${MG_AUTH_GRPC_PORT}
|
||||
restart: on-failure
|
||||
environment:
|
||||
MG_AUTH_LOG_LEVEL: ${MG_AUTH_LOG_LEVEL}
|
||||
MG_SPICEDB_SCHEMA_FILE: ${MG_SPICEDB_SCHEMA_FILE}
|
||||
MG_SPICEDB_HOST: ${MG_SPICEDB_HOST}
|
||||
MG_SPICEDB_PORT: ${MG_SPICEDB_PORT}
|
||||
MG_AUTH_LOG_LEVEL: ${MG_AUTH_LOG_LEVEL}
|
||||
MG_AUTH_DB_HOST: auth-db
|
||||
MG_AUTH_ACCESS_TOKEN_DURATION: ${MG_AUTH_ACCESS_TOKEN_DURATION}
|
||||
MG_AUTH_REFRESH_TOKEN_DURATION: ${MG_AUTH_REFRESH_TOKEN_DURATION}
|
||||
MG_AUTH_SECRET_KEY: ${MG_AUTH_SECRET_KEY}
|
||||
MG_AUTH_HTTP_HOST: ${MG_AUTH_HTTP_HOST}
|
||||
MG_AUTH_HTTP_PORT: ${MG_AUTH_HTTP_PORT}
|
||||
MG_AUTH_HTTP_SERVER_CERT: ${MG_AUTH_HTTP_SERVER_CERT}
|
||||
MG_AUTH_HTTP_SERVER_KEY: ${MG_AUTH_HTTP_SERVER_KEY}
|
||||
MG_AUTH_GRPC_HOST: ${MG_AUTH_GRPC_HOST}
|
||||
MG_AUTH_GRPC_PORT: ${MG_AUTH_GRPC_PORT}
|
||||
## Compose supports parameter expansion in environment,
|
||||
## Eg: ${VAR:+replacement} or ${VAR+replacement} -> replacement if VAR is set and non-empty, otherwise empty
|
||||
## Eg :${VAR:-default} or ${VAR-default} -> value of VAR if set and non-empty, otherwise default
|
||||
MG_AUTH_GRPC_SERVER_CERT: ${MG_AUTH_GRPC_SERVER_CERT:+/auth-grpc-server.crt}
|
||||
MG_AUTH_GRPC_SERVER_KEY: ${MG_AUTH_GRPC_SERVER_KEY:+/auth-grpc-server.key}
|
||||
MG_AUTH_GRPC_SERVER_CA_CERTS: ${MG_AUTH_GRPC_SERVER_CA_CERTS:+/auth-grpc-server-ca.crt}
|
||||
MG_AUTH_DB_HOST: ${MG_AUTH_DB_HOST}
|
||||
MG_AUTH_DB_PORT: ${MG_AUTH_DB_PORT}
|
||||
MG_AUTH_DB_USER: ${MG_AUTH_DB_USER}
|
||||
MG_AUTH_DB_PASS: ${MG_AUTH_DB_PASS}
|
||||
MG_AUTH_DB: ${MG_AUTH_DB}
|
||||
MG_AUTH_HTTP_PORT: ${MG_AUTH_HTTP_PORT}
|
||||
MG_AUTH_GRPC_PORT: ${MG_AUTH_GRPC_PORT}
|
||||
MG_AUTH_SECRET: ${MG_AUTH_SECRET}
|
||||
MG_AUTH_ACCESS_TOKEN_DURATION: ${MG_AUTH_ACCESS_TOKEN_DURATION}
|
||||
MG_AUTH_DB_NAME: ${MG_AUTH_DB_NAME}
|
||||
MG_AUTH_DB_SSL_MODE: ${MG_AUTH_DB_SSL_MODE}
|
||||
MG_AUTH_DB_SSL_CERT: ${MG_AUTH_DB_SSL_CERT}
|
||||
MG_AUTH_DB_SSL_KEY: ${MG_AUTH_DB_SSL_KEY}
|
||||
MG_AUTH_DB_SSL_ROOT_CERT: ${MG_AUTH_DB_SSL_ROOT_CERT}
|
||||
MG_JAEGER_URL: ${MG_JAEGER_URL}
|
||||
MG_JAEGER_TRACE_RATIO: ${MG_JAEGER_TRACE_RATIO}
|
||||
MG_SEND_TELEMETRY: ${MG_SEND_TELEMETRY}
|
||||
MG_AUTH_ADAPTER_INSTANCE_ID: ${MG_AUTH_ADAPTER_INSTANCE_ID}
|
||||
ports:
|
||||
- ${MG_AUTH_HTTP_PORT}:${MG_AUTH_HTTP_PORT}
|
||||
- ${MG_AUTH_GRPC_PORT}:${MG_AUTH_GRPC_PORT}
|
||||
@@ -353,11 +372,11 @@ services:
|
||||
jaeger:
|
||||
image: jaegertracing/all-in-one:1.38.0
|
||||
container_name: magistrala-jaeger
|
||||
environment:
|
||||
COLLECTOR_OTLP_ENABLED: ${MG_JAEGER_COLLECTOR_OTLP_ENABLED}
|
||||
ports:
|
||||
- ${MG_JAEGER_PORT}:${MG_JAEGER_PORT}/udp
|
||||
- ${MG_JAEGER_FRONTEND}:${MG_JAEGER_FRONTEND}
|
||||
- ${MG_JAEGER_COLLECTOR}:${MG_JAEGER_COLLECTOR}
|
||||
- ${MG_JAEGER_CONFIGS}:${MG_JAEGER_CONFIGS}
|
||||
- ${MG_JAEGER_OLTP_HTTP}:${MG_JAEGER_OLTP_HTTP}
|
||||
networks:
|
||||
- magistrala-base-net
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ require (
|
||||
github.com/0x6flab/namegenerator v1.1.0
|
||||
github.com/authzed/authzed-go v0.10.1
|
||||
github.com/authzed/grpcutil v0.0.0-20230908193239-4286bb1d6403
|
||||
github.com/caarlos0/env/v7 v7.1.0
|
||||
github.com/caarlos0/env/v10 v10.0.0
|
||||
github.com/cenkalti/backoff/v4 v4.2.1
|
||||
github.com/docker/docker v24.0.7+incompatible
|
||||
github.com/eclipse/paho.mqtt.golang v1.4.3
|
||||
|
||||
@@ -131,8 +131,8 @@ github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ
|
||||
github.com/bytedance/sonic v1.10.2 h1:GQebETVBxYB7JGWJtLBi07OVzWwt+8dWA00gEVW2ZFE=
|
||||
github.com/bytedance/sonic v1.10.2/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4=
|
||||
github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34=
|
||||
github.com/caarlos0/env/v7 v7.1.0 h1:9lzTF5amyQeWHZzuZeKlCb5FWSUxpG1js43mhbY8ozg=
|
||||
github.com/caarlos0/env/v7 v7.1.0/go.mod h1:LPPWniDUq4JaO6Q41vtlyikhMknqymCLBw0eX4dcH1E=
|
||||
github.com/caarlos0/env/v10 v10.0.0 h1:yIHUBZGsyqCnpTkbjk8asUlx6RFhhEs+h7TOBdgdzXA=
|
||||
github.com/caarlos0/env/v10 v10.0.0/go.mod h1:ZfulV76NvVPw3tm591U4SwL3Xx9ldzBP9aGxzeN7G18=
|
||||
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
|
||||
github.com/cenkalti/backoff v2.0.0+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
package cassandra
|
||||
|
||||
import (
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"github.com/gocql/gocql"
|
||||
)
|
||||
|
||||
@@ -34,7 +34,7 @@ func Setup(envPrefix string) (*gocql.Session, error) {
|
||||
// the initial query in database.
|
||||
func SetupDB(envPrefix string, initQuery string) (*gocql.Session, error) {
|
||||
config := Config{}
|
||||
if err := env.Parse(&config, env.Options{Prefix: envPrefix}); err != nil {
|
||||
if err := env.ParseWithOptions(&config, env.Options{Prefix: envPrefix}); err != nil {
|
||||
return nil, errors.Wrap(errConfig, err)
|
||||
}
|
||||
cs, err := Connect(config)
|
||||
|
||||
@@ -7,9 +7,9 @@ import (
|
||||
"github.com/absmach/magistrala"
|
||||
authgrpc "github.com/absmach/magistrala/auth/api/grpc"
|
||||
grpcclient "github.com/absmach/magistrala/internal/clients/grpc"
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
thingsauth "github.com/absmach/magistrala/things/api/grpc"
|
||||
"github.com/caarlos0/env/v10"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -22,7 +22,7 @@ var errGrpcConfig = errors.New("failed to load grpc configuration")
|
||||
// Setup loads Auth gRPC configuration from environment variable and creates new Auth gRPC API.
|
||||
func Setup(svcName string) (magistrala.AuthServiceClient, grpcclient.ClientHandler, error) {
|
||||
config := grpcclient.Config{}
|
||||
if err := env.Parse(&config, env.Options{Prefix: envAuthGrpcPrefix}); err != nil {
|
||||
if err := env.ParseWithOptions(&config, env.Options{Prefix: envAuthGrpcPrefix}); err != nil {
|
||||
return nil, nil, errors.Wrap(errGrpcConfig, err)
|
||||
}
|
||||
c, ch, err := grpcclient.Setup(config, svcName)
|
||||
@@ -36,7 +36,7 @@ func Setup(svcName string) (magistrala.AuthServiceClient, grpcclient.ClientHandl
|
||||
// Setup loads Auth gRPC configuration from environment variable and creates new Auth gRPC API.
|
||||
func SetupAuthz(svcName string) (magistrala.AuthzServiceClient, grpcclient.ClientHandler, error) {
|
||||
config := grpcclient.Config{}
|
||||
if err := env.Parse(&config, env.Options{Prefix: envAuthzGrpcPrefix}); err != nil {
|
||||
if err := env.ParseWithOptions(&config, env.Options{Prefix: envAuthzGrpcPrefix}); err != nil {
|
||||
return nil, nil, errors.Wrap(errGrpcConfig, err)
|
||||
}
|
||||
c, ch, err := grpcclient.Setup(config, svcName)
|
||||
|
||||
@@ -7,8 +7,8 @@ import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/caarlos0/env/v10"
|
||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||
)
|
||||
|
||||
@@ -36,7 +36,7 @@ type Config struct {
|
||||
// Setup load configuration from environment variable, create InfluxDB client and connect to InfluxDB server.
|
||||
func Setup(ctx context.Context, envPrefix string) (influxdb2.Client, error) {
|
||||
config := Config{}
|
||||
if err := env.Parse(&config, env.Options{Prefix: envPrefix}); err != nil {
|
||||
if err := env.ParseWithOptions(&config, env.Options{Prefix: envPrefix}); err != nil {
|
||||
return nil, errors.Wrap(errConfig, err)
|
||||
}
|
||||
return Connect(ctx, config)
|
||||
|
||||
@@ -25,8 +25,8 @@ var (
|
||||
)
|
||||
|
||||
// NewProvider initializes Jaeger TraceProvider.
|
||||
func NewProvider(ctx context.Context, svcName, jaegerUrl, instanceID string, fraction float64) (*trace.TracerProvider, error) {
|
||||
if jaegerUrl == "" {
|
||||
func NewProvider(ctx context.Context, svcName string, jaegerUrl url.URL, instanceID string, fraction float64) (*trace.TracerProvider, error) {
|
||||
if jaegerUrl == (url.URL{}) {
|
||||
return nil, errNoURL
|
||||
}
|
||||
|
||||
@@ -34,27 +34,21 @@ func NewProvider(ctx context.Context, svcName, jaegerUrl, instanceID string, fra
|
||||
return nil, errNoSvcName
|
||||
}
|
||||
|
||||
url, err := url.Parse(jaegerUrl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var exporter *otlptrace.Exporter
|
||||
switch url.Scheme {
|
||||
var client otlptrace.Client
|
||||
switch jaegerUrl.Scheme {
|
||||
case "http":
|
||||
exporter, err = otlptracehttp.New(ctx, otlptracehttp.WithEndpoint(url.Host), otlptracehttp.WithURLPath(url.Path), otlptracehttp.WithInsecure())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client = otlptracehttp.NewClient(otlptracehttp.WithEndpoint(jaegerUrl.Host), otlptracehttp.WithURLPath(jaegerUrl.Path), otlptracehttp.WithInsecure())
|
||||
case "https":
|
||||
exporter, err = otlptracehttp.New(ctx, otlptracehttp.WithEndpoint(url.Host), otlptracehttp.WithURLPath(url.Path))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
client = otlptracehttp.NewClient(otlptracehttp.WithEndpoint(jaegerUrl.Host), otlptracehttp.WithURLPath(jaegerUrl.Path))
|
||||
default:
|
||||
return nil, errUnsupportedTraceURLScheme
|
||||
}
|
||||
|
||||
exporter, err := otlptrace.New(ctx, client)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
attributes := []attribute.KeyValue{
|
||||
semconv.ServiceNameKey.String(svcName),
|
||||
attribute.String("host.id", instanceID),
|
||||
|
||||
@@ -7,8 +7,8 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/caarlos0/env/v10"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
"go.mongodb.org/mongo-driver/mongo/options"
|
||||
)
|
||||
@@ -40,7 +40,7 @@ func Connect(cfg Config) (*mongo.Database, error) {
|
||||
// Setup load configuration from environment, create new MongoDB client and connect to MongoDB server.
|
||||
func Setup(envPrefix string) (*mongo.Database, error) {
|
||||
cfg := Config{}
|
||||
if err := env.Parse(&cfg, env.Options{Prefix: envPrefix}); err != nil {
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: envPrefix}); err != nil {
|
||||
return nil, errors.Wrap(errConfig, err)
|
||||
}
|
||||
db, err := Connect(cfg)
|
||||
|
||||
@@ -6,8 +6,8 @@ package postgres
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/absmach/magistrala/internal/env"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/caarlos0/env/v10"
|
||||
_ "github.com/jackc/pgx/v5/stdlib" // required for SQL access
|
||||
"github.com/jmoiron/sqlx"
|
||||
migrate "github.com/rubenv/sql-migrate"
|
||||
@@ -41,7 +41,7 @@ func Setup(prefix string, migrations migrate.MemoryMigrationSource) (*sqlx.DB, e
|
||||
// unapplied database migrations. A non-nil error is returned to indicate failure.
|
||||
func SetupWithConfig(prefix string, migrations migrate.MemoryMigrationSource, defConfig Config) (*sqlx.DB, error) {
|
||||
cfg := defConfig
|
||||
if err := env.Parse(&cfg, env.Options{Prefix: prefix}); err != nil {
|
||||
if err := env.ParseWithOptions(&cfg, env.Options{Prefix: prefix}); err != nil {
|
||||
return nil, errors.Wrap(errConfig, err)
|
||||
}
|
||||
return SetupDB(cfg, migrations)
|
||||
@@ -82,7 +82,7 @@ func MigrateDB(db *sqlx.DB, migrations migrate.MemoryMigrationSource) error {
|
||||
}
|
||||
|
||||
func (c *Config) LoadEnv(prefix string) error {
|
||||
if err := env.Parse(c, env.Options{Prefix: prefix}); err != nil {
|
||||
if err := env.ParseWithOptions(c, env.Options{Prefix: prefix}); err != nil {
|
||||
return errors.Wrap(errConfig, err)
|
||||
}
|
||||
return nil
|
||||
|
||||
Vendored
-6
@@ -1,6 +0,0 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
// Package env contains the domain concept definitions needed to support
|
||||
// magistrala environment variable functionality.
|
||||
package env
|
||||
Vendored
-41
@@ -1,41 +0,0 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package env
|
||||
|
||||
import (
|
||||
"github.com/caarlos0/env/v7"
|
||||
)
|
||||
|
||||
type Options struct {
|
||||
// Environment keys and values that will be accessible for the service
|
||||
Environment map[string]string
|
||||
|
||||
// TagName specifies another tagname to use rather than the default env
|
||||
TagName string
|
||||
|
||||
// RequiredIfNoDef automatically sets all env as required if they do not declare 'envDefault'
|
||||
RequiredIfNoDef bool
|
||||
|
||||
// OnSet allows to run a function when a value is set
|
||||
OnSet env.OnSetFn
|
||||
|
||||
// Prefix define a prefix for each key
|
||||
Prefix string
|
||||
}
|
||||
|
||||
func Parse(v interface{}, opts ...Options) error {
|
||||
altOpts := []env.Options{}
|
||||
|
||||
for _, opt := range opts {
|
||||
altOpts = append(altOpts, env.Options{
|
||||
Environment: opt.Environment,
|
||||
TagName: opt.TagName,
|
||||
RequiredIfNoDef: opt.RequiredIfNoDef,
|
||||
OnSet: opt.OnSet,
|
||||
Prefix: opt.Prefix,
|
||||
})
|
||||
}
|
||||
|
||||
return env.Parse(v, altOpts...)
|
||||
}
|
||||
Vendored
-235
@@ -1,235 +0,0 @@
|
||||
// Copyright (c) Magistrala
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package env
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/absmach/magistrala/internal/clients/grpc"
|
||||
"github.com/absmach/magistrala/internal/server"
|
||||
"github.com/absmach/magistrala/pkg/errors"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
var errNotDuration error = errors.New("unable to parse duration")
|
||||
|
||||
func TestParseServerConfig(t *testing.T) {
|
||||
tests := []struct {
|
||||
description string
|
||||
config *server.Config
|
||||
expectedConfig *server.Config
|
||||
options []Options
|
||||
err error
|
||||
}{
|
||||
{
|
||||
"Parsing with Server Config",
|
||||
&server.Config{},
|
||||
&server.Config{
|
||||
Host: "localhost",
|
||||
Port: "8080",
|
||||
CertFile: "cert",
|
||||
KeyFile: "key",
|
||||
ServerCAFile: "server-ca-certs",
|
||||
ClientCAFile: "client-ca-certs",
|
||||
},
|
||||
[]Options{
|
||||
{
|
||||
Environment: map[string]string{
|
||||
"HOST": "localhost",
|
||||
"PORT": "8080",
|
||||
"SERVER_CERT": "cert",
|
||||
"SERVER_KEY": "key",
|
||||
"SERVER_CA_CERTS": "server-ca-certs",
|
||||
"CLIENT_CA_CERTS": "client-ca-certs",
|
||||
},
|
||||
},
|
||||
},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"Parsing with Server Config with Prefix",
|
||||
&server.Config{},
|
||||
&server.Config{
|
||||
Host: "localhost",
|
||||
Port: "8080",
|
||||
CertFile: "cert",
|
||||
KeyFile: "key",
|
||||
ServerCAFile: "server-ca-certs",
|
||||
ClientCAFile: "client-ca-certs",
|
||||
},
|
||||
[]Options{
|
||||
{
|
||||
Environment: map[string]string{
|
||||
"MG-HOST": "localhost",
|
||||
"MG-PORT": "8080",
|
||||
"MG-SERVER_CERT": "cert",
|
||||
"MG-SERVER_KEY": "key",
|
||||
"MG-SERVER_CA_CERTS": "server-ca-certs",
|
||||
"MG-CLIENT_CA_CERTS": "client-ca-certs",
|
||||
},
|
||||
Prefix: "MG-",
|
||||
},
|
||||
},
|
||||
nil,
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
err := Parse(test.config, test.options...)
|
||||
switch test.err {
|
||||
case nil:
|
||||
assert.NoError(t, err, fmt.Sprintf("%s: expected no error but got %v", test.description, err))
|
||||
default:
|
||||
assert.Error(t, err, fmt.Sprintf("%s: expected error but got nil", test.description))
|
||||
}
|
||||
assert.Equal(t, test.expectedConfig, test.config, fmt.Sprintf("%s: expected %v got %v", test.description, test.expectedConfig, test.config))
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseGRPCConfig(t *testing.T) {
|
||||
tests := []struct {
|
||||
description string
|
||||
config *grpc.Config
|
||||
expectedConfig *grpc.Config
|
||||
options []Options
|
||||
err error
|
||||
}{
|
||||
{
|
||||
"Parsing a grpc.Config struct",
|
||||
&grpc.Config{},
|
||||
&grpc.Config{
|
||||
URL: "val.com",
|
||||
Timeout: time.Second,
|
||||
},
|
||||
[]Options{
|
||||
{
|
||||
Environment: map[string]string{
|
||||
"URL": "val.com",
|
||||
"TIMEOUT": time.Second.String(),
|
||||
},
|
||||
},
|
||||
},
|
||||
nil,
|
||||
},
|
||||
{
|
||||
"Invalid type parsing",
|
||||
&grpc.Config{},
|
||||
&grpc.Config{URL: "val.com"},
|
||||
[]Options{
|
||||
{
|
||||
Environment: map[string]string{
|
||||
"URL": "val.com",
|
||||
"TIMEOUT": "invalid",
|
||||
},
|
||||
},
|
||||
},
|
||||
errNotDuration,
|
||||
},
|
||||
{
|
||||
"Parsing all configs",
|
||||
&grpc.Config{},
|
||||
&grpc.Config{
|
||||
URL: "val.com",
|
||||
Timeout: time.Second,
|
||||
ServerCAFile: "server-ca-cert",
|
||||
ClientCert: "client-cert",
|
||||
ClientKey: "client-key",
|
||||
},
|
||||
[]Options{
|
||||
{
|
||||
Environment: map[string]string{
|
||||
"MG-URL": "val.com",
|
||||
"MG-TIMEOUT": "1s",
|
||||
"MG-SERVER_CA_CERTS": "server-ca-cert",
|
||||
"MG-CLIENT_CERT": "client-cert",
|
||||
"MG-CLIENT_KEY": "client-key",
|
||||
},
|
||||
Prefix: "MG-",
|
||||
},
|
||||
},
|
||||
nil,
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
err := Parse(test.config, test.options...)
|
||||
switch test.err {
|
||||
case nil:
|
||||
assert.NoError(t, err, fmt.Sprintf("%s: expected no error but got %v", test.description, err))
|
||||
default:
|
||||
assert.Error(t, err, fmt.Sprintf("%s: expected error but got nil", test.description))
|
||||
}
|
||||
assert.Equal(t, test.expectedConfig, test.config, fmt.Sprintf("%s: expected %v got %v", test.description, test.expectedConfig, test.config))
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseCustomConfig(t *testing.T) {
|
||||
type CustomConfig struct {
|
||||
Field1 string `env:"FIELD1" envDefault:"val1"`
|
||||
Field2 int `env:"FIELD2"`
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
description string
|
||||
config *CustomConfig
|
||||
expectedConfig *CustomConfig
|
||||
options []Options
|
||||
err error
|
||||
}{
|
||||
{
|
||||
"parse with missing required field",
|
||||
&CustomConfig{},
|
||||
&CustomConfig{Field1: "test val"},
|
||||
[]Options{
|
||||
{
|
||||
Environment: map[string]string{
|
||||
"FIELD1": "test val",
|
||||
},
|
||||
RequiredIfNoDef: true,
|
||||
},
|
||||
},
|
||||
errors.New(`required environment variable "FIELD2" not set`),
|
||||
},
|
||||
{
|
||||
"parse with wrong type",
|
||||
&CustomConfig{},
|
||||
&CustomConfig{Field1: "test val"},
|
||||
[]Options{
|
||||
{
|
||||
Environment: map[string]string{
|
||||
"FIELD1": "test val",
|
||||
"FIELD2": "not int",
|
||||
},
|
||||
},
|
||||
},
|
||||
errors.New(`strconv.ParseInt`),
|
||||
},
|
||||
{
|
||||
"parse with prefix",
|
||||
&CustomConfig{},
|
||||
&CustomConfig{Field1: "test val", Field2: 2},
|
||||
[]Options{
|
||||
{
|
||||
Environment: map[string]string{
|
||||
"MG-FIELD1": "test val",
|
||||
"MG-FIELD2": "2",
|
||||
},
|
||||
Prefix: "MG-",
|
||||
},
|
||||
},
|
||||
nil,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
err := Parse(test.config, test.options...)
|
||||
switch test.err {
|
||||
case nil:
|
||||
assert.NoError(t, err, fmt.Sprintf("expected no error but got %v", err))
|
||||
default:
|
||||
assert.Error(t, err, "expected error but got nil")
|
||||
}
|
||||
assert.Equal(t, test.expectedConfig, test.config, fmt.Sprintf("expected %v got %v", test.expectedConfig, test.config))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user