@@ -17,6 +17,7 @@ import (
1717
1818 "github.com/open-edge-platform/infra-core/apiv2/v2/internal/common"
1919 restv1 "github.com/open-edge-platform/infra-core/apiv2/v2/internal/pbapi/services/v1"
20+ "github.com/open-edge-platform/infra-core/apiv2/v2/internal/scenario"
2021 api "github.com/open-edge-platform/infra-core/apiv2/v2/pkg/api/v2"
2122 inv_client "github.com/open-edge-platform/infra-core/inventory/v2/pkg/client"
2223 "github.com/open-edge-platform/infra-core/inventory/v2/pkg/logging"
@@ -32,27 +33,26 @@ type serviceClientsSignature func(
3233 endpoint string ,
3334 opts []grpc.DialOption ) (err error )
3435
35- // servicesClients defines a list of all gRPC service clients that must be
36- // registered to serve REST API.
37- var servicesClients = []serviceClientsSignature {
38- restv1 .RegisterRegionServiceHandlerFromEndpoint ,
39- restv1 .RegisterSiteServiceHandlerFromEndpoint ,
40- restv1 .RegisterLocationServiceHandlerFromEndpoint ,
41- restv1 .RegisterHostServiceHandlerFromEndpoint ,
42- restv1 .RegisterOperatingSystemServiceHandlerFromEndpoint ,
43- restv1 .RegisterInstanceServiceHandlerFromEndpoint ,
44- restv1 .RegisterScheduleServiceHandlerFromEndpoint ,
45- restv1 .RegisterWorkloadServiceHandlerFromEndpoint ,
46- restv1 .RegisterWorkloadMemberServiceHandlerFromEndpoint ,
47- restv1 .RegisterProviderServiceHandlerFromEndpoint ,
48- restv1 .RegisterTelemetryLogsGroupServiceHandlerFromEndpoint ,
49- restv1 .RegisterTelemetryMetricsGroupServiceHandlerFromEndpoint ,
50- restv1 .RegisterTelemetryMetricsProfileServiceHandlerFromEndpoint ,
51- restv1 .RegisterTelemetryLogsProfileServiceHandlerFromEndpoint ,
52- restv1 .RegisterLocalAccountServiceHandlerFromEndpoint ,
53- restv1 .RegisterCustomConfigServiceHandlerFromEndpoint ,
54- restv1 .RegisterOSUpdatePolicyHandlerFromEndpoint ,
55- restv1 .RegisterOSUpdateRunHandlerFromEndpoint ,
36+ // servicesClients maps gRPC service names to their grpc-gateway registration functions.
37+ var servicesClients = map [string ]serviceClientsSignature {
38+ "RegionService" : restv1 .RegisterRegionServiceHandlerFromEndpoint ,
39+ "SiteService" : restv1 .RegisterSiteServiceHandlerFromEndpoint ,
40+ "LocationService" : restv1 .RegisterLocationServiceHandlerFromEndpoint ,
41+ "HostService" : restv1 .RegisterHostServiceHandlerFromEndpoint ,
42+ "OperatingSystemService" : restv1 .RegisterOperatingSystemServiceHandlerFromEndpoint ,
43+ "InstanceService" : restv1 .RegisterInstanceServiceHandlerFromEndpoint ,
44+ "ScheduleService" : restv1 .RegisterScheduleServiceHandlerFromEndpoint ,
45+ "WorkloadService" : restv1 .RegisterWorkloadServiceHandlerFromEndpoint ,
46+ "WorkloadMemberService" : restv1 .RegisterWorkloadMemberServiceHandlerFromEndpoint ,
47+ "ProviderService" : restv1 .RegisterProviderServiceHandlerFromEndpoint ,
48+ "TelemetryLogsGroupService" : restv1 .RegisterTelemetryLogsGroupServiceHandlerFromEndpoint ,
49+ "TelemetryMetricsGroupService" : restv1 .RegisterTelemetryMetricsGroupServiceHandlerFromEndpoint ,
50+ "TelemetryMetricsProfileService" : restv1 .RegisterTelemetryMetricsProfileServiceHandlerFromEndpoint ,
51+ "TelemetryLogsProfileService" : restv1 .RegisterTelemetryLogsProfileServiceHandlerFromEndpoint ,
52+ "LocalAccountService" : restv1 .RegisterLocalAccountServiceHandlerFromEndpoint ,
53+ "CustomConfigService" : restv1 .RegisterCustomConfigServiceHandlerFromEndpoint ,
54+ "OSUpdatePolicyService" : restv1 .RegisterOSUpdatePolicyHandlerFromEndpoint ,
55+ "OSUpdateRunService" : restv1 .RegisterOSUpdateRunHandlerFromEndpoint ,
5656}
5757
5858const (
@@ -90,18 +90,42 @@ func WrapH(h http.Handler) echo.HandlerFunc {
9090}
9191
9292func (m * Manager ) setupClients (mux * runtime.ServeMux ) error {
93- for _ , serviceClient := range servicesClients {
94- err := serviceClient (m .ctx , mux , m .cfg .GRPCEndpoint ,
93+ scenarioName := m .cfg .Scenario
94+ if scenarioName == "" {
95+ return fmt .Errorf ("scenario is not set in config" )
96+ }
97+
98+ // build a map of allowed services for quick lookup
99+ allowed , err := BuildAllowedClientList (scenarioName , scenario .Allowlist )
100+ if err != nil {
101+ return err
102+ }
103+
104+ for serviceName , serviceClient := range servicesClients {
105+ if _ , isAllowed := allowed [serviceName ]; ! isAllowed {
106+ zlog .Debug ().Str ("service" , serviceName ).Str ("scenario" , scenarioName ).
107+ Msg ("skipping service client not allowed for scenario" )
108+ continue
109+ }
110+
111+ if err := serviceClient (
112+ m .ctx ,
113+ mux ,
114+ m .cfg .GRPCEndpoint ,
95115 []grpc.DialOption {
96116 grpc .WithTransportCredentials (insecure .NewCredentials ()),
97117 // Use Inventory client max message size, to keep Inventory and API consistent.
98118 grpc .WithDefaultCallOptions (grpc .MaxCallRecvMsgSize (inv_client .MaxMessageSize )),
99- })
100- if err != nil {
101- zlog .InfraErr (err ).Msgf ("failed to set service client %v" , serviceClient )
119+ },
120+ ); err != nil {
121+ zlog .InfraErr (err ).Str ("service" , serviceName ).Str ("scenario" , scenarioName ).
122+ Msg ("failed to set service client" )
102123 return err
103124 }
125+
126+ zlog .Info ().Str ("service" , serviceName ).Str ("scenario" , scenarioName ).Msg ("registered gRPC client" )
104127 }
128+
105129 return nil
106130}
107131
0 commit comments