From 0aa29f37b037d51bfcf86fe47562f2249a1ebecf Mon Sep 17 00:00:00 2001 From: Gorka Ludlow Date: Thu, 11 Jul 2024 19:50:45 -0300 Subject: [PATCH] fix: set api host on embedded configs (#253) * feat: add api host to serrvice config struct * chore: add api host to config files * feat: add api host to service flags * feat: solver add service options * refactor(powLogs): set host via init instead of fetching from env * refacotr(metricsDashboard): set host via init instead of fetching via env and move struct definition to top of file * chore: init logger when instantiating resource provider service * chore: init logger when instantiating job creator service * chore: add services to solver instance params and init logger when instantiating the solver service --- pkg/data/types.go | 1 + pkg/jobcreator/controller.go | 2 ++ pkg/metricsDashboard/logger.go | 21 ++++++++++++--------- pkg/options/configs/dev.toml | 1 + pkg/options/configs/devnet.toml | 1 + pkg/options/configs/testnet.toml | 1 + pkg/options/services.go | 11 +++++++++++ pkg/options/solver.go | 6 ++++-- pkg/powLogs/logger.go | 7 +++++-- pkg/resourceprovider/resourceprovider.go | 1 + pkg/solver/server.go | 5 +++++ pkg/solver/solver.go | 8 +++++--- 12 files changed, 49 insertions(+), 16 deletions(-) diff --git a/pkg/data/types.go b/pkg/data/types.go index 87e0e2fc..20869888 100644 --- a/pkg/data/types.go +++ b/pkg/data/types.go @@ -85,6 +85,7 @@ const ( type ServiceConfig struct { Solver string `json:"solver" toml:"solver"` Mediator []string `json:"mediator" toml:"mediator"` + APIHost string `json:"api_host" toml:"api_host"` } // posted to the solver by a job creator diff --git a/pkg/jobcreator/controller.go b/pkg/jobcreator/controller.go index 0163aa9d..c711524a 100644 --- a/pkg/jobcreator/controller.go +++ b/pkg/jobcreator/controller.go @@ -54,6 +54,8 @@ func NewJobCreatorController( return nil, err } + metricsDashboard.Init(options.Offer.Services.APIHost) + controller := &JobCreatorController{ solverClient: solverClient, options: options, diff --git a/pkg/metricsDashboard/logger.go b/pkg/metricsDashboard/logger.go index 08e29636..35a2d6c2 100644 --- a/pkg/metricsDashboard/logger.go +++ b/pkg/metricsDashboard/logger.go @@ -2,7 +2,6 @@ package metricsDashboard import ( "encoding/json" - "os" "time" "github.com/lilypad-tech/lilypad/pkg/data" @@ -15,7 +14,14 @@ const nodeConnectionEndpoint = "uptimes" const dealsEndpoint = "deals" const namespace = "metrics-dashboard" -var host = os.Getenv("API_HOST") +var host string + +type NodeConnectionParams struct { + Event string + ID string + CountryCode string + IP string +} type DealPayload struct { ID string @@ -24,6 +30,10 @@ type DealPayload struct { JobID string } +func Init(h string) { + host = h +} + func TrackJobOfferUpdate(evOffer data.JobOfferContainer) { if host == "" { return @@ -68,13 +78,6 @@ func TrackNodeInfo(resourceOffer data.ResourceOffer) { http.GenericJSONPostClient(url, payload) } -type NodeConnectionParams struct { - Event string - ID string - CountryCode string - IP string -} - func TrackNodeConnectionEvent(params NodeConnectionParams) { if host == "" { return diff --git a/pkg/options/configs/dev.toml b/pkg/options/configs/dev.toml index 1a0f922e..0001e39b 100644 --- a/pkg/options/configs/dev.toml +++ b/pkg/options/configs/dev.toml @@ -1,6 +1,7 @@ [services] solver = "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC" mediator = ["0x90F79bf6EB2c4f870365E785982E1f101E93b906"] +api_host = "http://localhost:8002/" [web3] rpc_url = "ws://localhost:8548" diff --git a/pkg/options/configs/devnet.toml b/pkg/options/configs/devnet.toml index c6d94417..f27717f6 100644 --- a/pkg/options/configs/devnet.toml +++ b/pkg/options/configs/devnet.toml @@ -1,6 +1,7 @@ [services] solver = "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC" mediator = ["0x90F79bf6EB2c4f870365E785982E1f101E93b906"] +api_host = "https://api-devnet.lilypad.tech/" [web3] rpc_url = "wss://devnet-chain-ws.lilypad.tech" diff --git a/pkg/options/configs/testnet.toml b/pkg/options/configs/testnet.toml index 77d32291..9df0cb9b 100644 --- a/pkg/options/configs/testnet.toml +++ b/pkg/options/configs/testnet.toml @@ -1,6 +1,7 @@ [services] solver = "0xe05e1b71955da4934938a6b16f97e1db9de6b764" mediator = ["0x7B49d6ee530B0A538D26E344f3B02E79ACa96De2"] +api_host = "https://api-testnet.lilypad.tech/" [web3] rpc_url = "wss://arb-sepolia.g.alchemy.com/v2/4PDb7czJf8E6z7ZjhXB0Z5fdU1XaQT0u" diff --git a/pkg/options/services.go b/pkg/options/services.go index dcfcdfb3..b3313e70 100644 --- a/pkg/options/services.go +++ b/pkg/options/services.go @@ -11,6 +11,7 @@ func GetDefaultServicesOptions() data.ServiceConfig { return data.ServiceConfig{ Solver: GetDefaultServeOptionString("SERVICE_SOLVER", ""), Mediator: GetDefaultServeOptionStringArray("SERVICE_MEDIATORS", []string{}), + APIHost: GetDefaultServeOptionString("API_HOST", ""), } } @@ -23,6 +24,10 @@ func AddServicesCliFlags(cmd *cobra.Command, servicesConfig *data.ServiceConfig) &servicesConfig.Mediator, "service-mediators", servicesConfig.Mediator, `The mediators we trust (SERVICE_MEDIATORS)`, ) + cmd.PersistentFlags().StringVar( + &servicesConfig.APIHost, "api-host", servicesConfig.APIHost, + `The api host to connect to (API_HOST)`, + ) } func ProcessServicesOptions(options data.ServiceConfig, network string) (data.ServiceConfig, error) { @@ -38,6 +43,9 @@ func ProcessServicesOptions(options data.ServiceConfig, network string) (data.Se if len(options.Mediator) == 0 { options.Mediator = config.ServiceConfig.Mediator } + if options.APIHost == "" { + options.APIHost = config.ServiceConfig.APIHost + } return options, nil } @@ -49,5 +57,8 @@ func CheckServicesOptions(options data.ServiceConfig) error { if len(options.Mediator) == 0 { return fmt.Errorf("No mediators services specified - please use SERVICE_MEDIATORS or --service-mediators") } + if len(options.APIHost) == 0 { + return fmt.Errorf("No api host specified - please use API_HOST or --api-host") + } return nil } diff --git a/pkg/options/solver.go b/pkg/options/solver.go index 99d5801d..09595eb2 100644 --- a/pkg/options/solver.go +++ b/pkg/options/solver.go @@ -8,8 +8,9 @@ import ( func NewSolverOptions() solver.SolverOptions { options := solver.SolverOptions{ - Server: GetDefaultServerOptions(), - Web3: GetDefaultWeb3Options(), + Server: GetDefaultServerOptions(), + Web3: GetDefaultWeb3Options(), + Services: GetDefaultServicesOptions(), } options.Web3.Service = system.SolverService return options @@ -18,6 +19,7 @@ func NewSolverOptions() solver.SolverOptions { func AddSolverCliFlags(cmd *cobra.Command, options *solver.SolverOptions) { AddWeb3CliFlags(cmd, &options.Web3) AddServerCliFlags(cmd, &options.Server) + AddServicesCliFlags(cmd, &options.Services) } func CheckSolverOptions(options solver.SolverOptions) error { diff --git a/pkg/powLogs/logger.go b/pkg/powLogs/logger.go index 5067615f..fc0e19f8 100644 --- a/pkg/powLogs/logger.go +++ b/pkg/powLogs/logger.go @@ -2,7 +2,6 @@ package powLogs import ( "encoding/json" - "os" "github.com/lilypad-tech/lilypad/pkg/data" "github.com/lilypad-tech/lilypad/pkg/http" @@ -22,7 +21,11 @@ const namespace = "pow-logs" const eventsEndpoint = "events" const hashrateEndpoint = "hashrates" -var host = os.Getenv("API_HOST") +var host string + +func Init(h string) { + host = h +} func TrackEvent(data PowLog) { if host == "" { diff --git a/pkg/resourceprovider/resourceprovider.go b/pkg/resourceprovider/resourceprovider.go index 0a9d8663..56518e9b 100644 --- a/pkg/resourceprovider/resourceprovider.go +++ b/pkg/resourceprovider/resourceprovider.go @@ -91,6 +91,7 @@ func NewResourceProvider( options: options, web3SDK: web3SDK, } + powLogs.Init(options.Offers.Services.APIHost) return solver, nil } diff --git a/pkg/solver/server.go b/pkg/solver/server.go index 14238b64..57233ee8 100644 --- a/pkg/solver/server.go +++ b/pkg/solver/server.go @@ -24,18 +24,23 @@ type solverServer struct { options http.ServerOptions controller *SolverController store store.SolverStore + services data.ServiceConfig } func NewSolverServer( options http.ServerOptions, controller *SolverController, store store.SolverStore, + services data.ServiceConfig, ) (*solverServer, error) { server := &solverServer{ options: options, controller: controller, store: store, } + + metricsDashboard.Init(services.APIHost) + return server, nil } diff --git a/pkg/solver/solver.go b/pkg/solver/solver.go index 2d06ddc2..fedd5efc 100644 --- a/pkg/solver/solver.go +++ b/pkg/solver/solver.go @@ -3,6 +3,7 @@ package solver import ( "context" + "github.com/lilypad-tech/lilypad/pkg/data" "github.com/lilypad-tech/lilypad/pkg/http" "github.com/lilypad-tech/lilypad/pkg/solver/store" "github.com/lilypad-tech/lilypad/pkg/system" @@ -11,8 +12,9 @@ import ( ) type SolverOptions struct { - Web3 web3.Web3Options - Server http.ServerOptions + Web3 web3.Web3Options + Server http.ServerOptions + Services data.ServiceConfig } type Solver struct { @@ -32,7 +34,7 @@ func NewSolver( if err != nil { return nil, err } - server, err := NewSolverServer(options.Server, controller, store) + server, err := NewSolverServer(options.Server, controller, store, options.Services) if err != nil { return nil, err }