func parsingNetworkSampling()

in internal/commands/profiling/ebpf/create/network.go [116:155]


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
}