in internal/commands/profiling/ebpf/create/network.go [117:156]
func parsingNetworkSampling(config *SamplingConfig) ([]*api.EBPFNetworkSamplingRule, error) {
rules := make([]*api.EBPFNetworkSamplingRule, 0)
if config == nil || len(config.Samplings) == 0 {
return rules, nil
}
for _, conf := range config.Samplings {
rule := &api.EBPFNetworkSamplingRule{}
rule.URIRegex = conf.URIPattern
rule.MinDuration = conf.MinDuration
if conf.When4xx == nil {
return nil, fmt.Errorf("the when_4xx is required")
}
rule.When4xx = *conf.When4xx
if conf.When5xx == nil {
return nil, fmt.Errorf("the when_5xx is required")
}
rule.When5xx = *conf.When5xx
confSetting := conf.Setting
if confSetting == nil {
return nil, fmt.Errorf("the sampling settings is required")
}
setting := &api.EBPFNetworkDataCollectingSettings{}
rule.Settings = setting
if confSetting.RequireRequest == nil {
return nil, fmt.Errorf("the sampling request is required")
}
setting.RequireCompleteRequest = *confSetting.RequireRequest
setting.MaxRequestSize = confSetting.MaxRequestSize
if confSetting.RequireResponse == nil {
return nil, fmt.Errorf("the sampling response is required")
}
setting.RequireCompleteResponse = *confSetting.RequireResponse
setting.MaxResponseSize = confSetting.MaxResponseSize
rules = append(rules, rule)
}
return rules, nil
}