Skip to content

Commit 68f93c9

Browse files
Refactor CreateOrUpdateRouterRequest
1 parent 24ed856 commit 68f93c9

File tree

4 files changed

+176
-180
lines changed

4 files changed

+176
-180
lines changed

api/turing/api/request/request.go

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -107,58 +107,55 @@ func (r CreateOrUpdateRouterRequest) BuildRouter(projectID models.ID) *models.Ro
107107
}
108108

109109
// BuildRouterVersion builds the router version model from the entire request payload
110-
func (r CreateOrUpdateRouterRequest) BuildRouterVersion(
110+
func (r RouterConfig) BuildRouterVersion(
111111
router *models.Router,
112112
defaults *config.RouterDefaults,
113113
cryptoSvc service.CryptoService,
114114
expSvc service.ExperimentsService,
115115
ensemblersSvc service.EnsemblersService,
116116
) (rv *models.RouterVersion, err error) {
117-
if r.Config == nil {
118-
return nil, errors.New("router config is empty")
119-
}
120117
rv = &models.RouterVersion{
121118
RouterID: router.ID,
122119
Router: router,
123120
Image: defaults.Image,
124121
Status: models.RouterVersionStatusPending,
125-
Routes: r.Config.Routes,
126-
DefaultRouteID: r.Config.DefaultRouteID,
127-
TrafficRules: r.Config.TrafficRules,
122+
Routes: r.Routes,
123+
DefaultRouteID: r.DefaultRouteID,
124+
TrafficRules: r.TrafficRules,
128125
ExperimentEngine: &models.ExperimentEngine{
129-
Type: r.Config.ExperimentEngine.Type,
126+
Type: r.ExperimentEngine.Type,
130127
},
131-
ResourceRequest: r.Config.ResourceRequest,
132-
Timeout: r.Config.Timeout,
128+
ResourceRequest: r.ResourceRequest,
129+
Timeout: r.Timeout,
133130
LogConfig: &models.LogConfig{
134131
LogLevel: routercfg.LogLevel(defaults.LogLevel),
135132
CustomMetricsEnabled: defaults.CustomMetricsEnabled,
136133
FiberDebugLogEnabled: defaults.FiberDebugLogEnabled,
137134
JaegerEnabled: defaults.JaegerEnabled,
138-
ResultLoggerType: r.Config.LogConfig.ResultLoggerType,
135+
ResultLoggerType: r.LogConfig.ResultLoggerType,
139136
},
140137
}
141-
if r.Config.Enricher != nil {
142-
rv.Enricher = r.Config.Enricher.BuildEnricher()
138+
if r.Enricher != nil {
139+
rv.Enricher = r.Enricher.BuildEnricher()
143140
}
144-
if r.Config.Ensembler != nil {
141+
if r.Ensembler != nil {
145142
// Ensure ensembler config is set based on the ensembler type
146-
if r.Config.Ensembler.Type == models.EnsemblerDockerType && r.Config.Ensembler.DockerConfig == nil {
143+
if r.Ensembler.Type == models.EnsemblerDockerType && r.Ensembler.DockerConfig == nil {
147144
return nil, errors.New("missing ensembler docker config")
148145
}
149-
if r.Config.Ensembler.Type == models.EnsemblerStandardType && r.Config.Ensembler.StandardConfig == nil {
146+
if r.Ensembler.Type == models.EnsemblerStandardType && r.Ensembler.StandardConfig == nil {
150147
return nil, errors.New("missing ensembler standard config")
151148
}
152-
if r.Config.Ensembler.Type == models.EnsemblerPyFuncType {
153-
if r.Config.Ensembler.PyfuncConfig == nil {
149+
if r.Ensembler.Type == models.EnsemblerPyFuncType {
150+
if r.Ensembler.PyfuncConfig == nil {
154151
return nil, errors.New("missing ensembler pyfunc reference config")
155152
}
156153

157154
// Verify if the ensembler given by its ProjectID and EnsemblerID exist
158155
ensembler, err := ensemblersSvc.FindByID(
159-
*r.Config.Ensembler.PyfuncConfig.EnsemblerID,
156+
*r.Ensembler.PyfuncConfig.EnsemblerID,
160157
service.EnsemblersFindByIDOptions{
161-
ProjectID: r.Config.Ensembler.PyfuncConfig.ProjectID,
158+
ProjectID: r.Ensembler.PyfuncConfig.ProjectID,
162159
})
163160
if err != nil {
164161
return nil, fmt.Errorf("failed to find specified ensembler: %w", err)
@@ -172,20 +169,20 @@ func (r CreateOrUpdateRouterRequest) BuildRouterVersion(
172169
return nil, fmt.Errorf("only pyfunc ensemblers allowed; ensembler type given: %T", v)
173170
}
174171
}
175-
rv.Ensembler = r.Config.Ensembler
172+
rv.Ensembler = r.Ensembler
176173
}
177174
switch rv.LogConfig.ResultLoggerType {
178175
case models.BigQueryLogger:
179176
rv.LogConfig.BigQueryConfig = &models.BigQueryConfig{
180-
Table: r.Config.LogConfig.BigQueryConfig.Table,
181-
ServiceAccountSecret: r.Config.LogConfig.BigQueryConfig.ServiceAccountSecret,
177+
Table: r.LogConfig.BigQueryConfig.Table,
178+
ServiceAccountSecret: r.LogConfig.BigQueryConfig.ServiceAccountSecret,
182179
BatchLoad: true, // default for now
183180
}
184181
case models.KafkaLogger:
185182
rv.LogConfig.KafkaConfig = &models.KafkaConfig{
186-
Brokers: r.Config.LogConfig.KafkaConfig.Brokers,
187-
Topic: r.Config.LogConfig.KafkaConfig.Topic,
188-
SerializationFormat: r.Config.LogConfig.KafkaConfig.SerializationFormat,
183+
Brokers: r.LogConfig.KafkaConfig.Brokers,
184+
Topic: r.LogConfig.KafkaConfig.Topic,
185+
SerializationFormat: r.LogConfig.KafkaConfig.SerializationFormat,
189186
}
190187
}
191188
if rv.ExperimentEngine.Type != models.ExperimentEngineTypeNop {
@@ -203,15 +200,15 @@ func (r CreateOrUpdateRouterRequest) BuildRouterVersion(
203200
}
204201

205202
// BuildExperimentEngineConfig creates the Experiment config from the given input properties
206-
func (r CreateOrUpdateRouterRequest) BuildExperimentEngineConfig(
203+
func (r RouterConfig) BuildExperimentEngineConfig(
207204
router *models.Router,
208205
cryptoSvc service.CryptoService,
209206
expSvc service.ExperimentsService,
210207
) (json.RawMessage, error) {
211-
rawExpConfig := r.Config.ExperimentEngine.Config
208+
rawExpConfig := r.ExperimentEngine.Config
212209

213210
// Handle missing passkey / encrypt it in Standard experiment config
214-
if expSvc.IsStandardExperimentManager(r.Config.ExperimentEngine.Type) {
211+
if expSvc.IsStandardExperimentManager(r.ExperimentEngine.Type) {
215212
// Convert the new config to the standard type
216213
expConfig, err := manager.ParseStandardExperimentConfig(rawExpConfig)
217214
if err != nil {
@@ -221,7 +218,7 @@ func (r CreateOrUpdateRouterRequest) BuildExperimentEngineConfig(
221218
if expConfig.Client.Passkey == "" {
222219
// Extract existing router version config
223220
if router.CurrRouterVersion != nil &&
224-
router.CurrRouterVersion.ExperimentEngine.Type == r.Config.ExperimentEngine.Type {
221+
router.CurrRouterVersion.ExperimentEngine.Type == r.ExperimentEngine.Type {
225222
currVerExpConfig, err := manager.ParseStandardExperimentConfig(router.CurrRouterVersion.ExperimentEngine.Config)
226223
if err != nil {
227224
return nil, fmt.Errorf("Error parsing existing experiment config: %v", err)

0 commit comments

Comments
 (0)