func matchAgentConfig()

in internal/agentcfg/fetch.go [69:107]


func matchAgentConfig(query Query, cfgs []AgentConfig) Result {
	name, env := query.Service.Name, query.Service.Environment
	result := zeroResult()
	var nameConf, envConf, defaultConf *AgentConfig

	for i, cfg := range cfgs {
		if cfg.ServiceName == name && cfg.ServiceEnvironment == env {
			nameConf = &cfgs[i]
			break
		} else if cfg.ServiceName == name && cfg.ServiceEnvironment == "" {
			nameConf = &cfgs[i]
		} else if cfg.ServiceName == "" && cfg.ServiceEnvironment == env {
			envConf = &cfgs[i]
		} else if cfg.ServiceName == "" && cfg.ServiceEnvironment == "" {
			defaultConf = &cfgs[i]
		}
	}

	if nameConf != nil {
		result = Result{Source{
			Settings: nameConf.Config,
			Etag:     nameConf.Etag,
			Agent:    nameConf.AgentName,
		}}
	} else if envConf != nil {
		result = Result{Source{
			Settings: envConf.Config,
			Etag:     envConf.Etag,
			Agent:    envConf.AgentName,
		}}
	} else if defaultConf != nil {
		result = Result{Source{
			Settings: defaultConf.Config,
			Etag:     defaultConf.Etag,
			Agent:    defaultConf.AgentName,
		}}
	}
	return result
}