refactor(setting): Allow public use of reading typed quota & dataproxy settings

This commit is contained in:
Andres Torres
2025-11-17 21:02:17 -05:00
parent 6f9c867660
commit d2836657c4
4 changed files with 314 additions and 41 deletions
+60 -21
View File
@@ -8,29 +8,68 @@ import (
const defaultDataProxyRowLimit = int64(1000000)
type ProxySettings struct {
SendUserHeader bool
Logging bool
Timeout int
DialTimeout int
KeepAlive int
TLSHandshakeTimeout int
ExpectContinueTimeout int
MaxConnsPerHost int
MaxIdleConns int
IdleConnTimeout int
ResponseLimit int64
RowLimit int64
UserAgent string
}
func readDataProxySettings(iniFile *ini.File, cfg *Cfg) error {
dataproxy := iniFile.Section("dataproxy")
cfg.SendUserHeader = dataproxy.Key("send_user_header").MustBool(false)
cfg.DataProxyLogging = dataproxy.Key("logging").MustBool(false)
cfg.DataProxyTimeout = dataproxy.Key("timeout").MustInt(30)
cfg.DataProxyDialTimeout = dataproxy.Key("dialTimeout").MustInt(10)
cfg.DataProxyKeepAlive = dataproxy.Key("keep_alive_seconds").MustInt(30)
cfg.DataProxyTLSHandshakeTimeout = dataproxy.Key("tls_handshake_timeout_seconds").MustInt(10)
cfg.DataProxyExpectContinueTimeout = dataproxy.Key("expect_continue_timeout_seconds").MustInt(1)
cfg.DataProxyMaxConnsPerHost = dataproxy.Key("max_conns_per_host").MustInt(0)
cfg.DataProxyMaxIdleConns = dataproxy.Key("max_idle_connections").MustInt()
cfg.DataProxyIdleConnTimeout = dataproxy.Key("idle_conn_timeout_seconds").MustInt(90)
cfg.ResponseLimit = dataproxy.Key("response_limit").MustInt64(0)
cfg.DataProxyRowLimit = dataproxy.Key("row_limit").MustInt64(defaultDataProxyRowLimit)
cfg.DataProxyUserAgent = dataproxy.Key("user_agent").String()
proxy := ReadDataProxySettings(iniFile)
if cfg.DataProxyUserAgent == "" {
cfg.DataProxyUserAgent = fmt.Sprintf("Grafana/%s", BuildVersion)
}
if cfg.DataProxyRowLimit <= 0 {
cfg.DataProxyRowLimit = defaultDataProxyRowLimit
}
cfg.SendUserHeader = proxy.SendUserHeader
cfg.DataProxyLogging = proxy.Logging
cfg.DataProxyTimeout = proxy.Timeout
cfg.DataProxyDialTimeout = proxy.DialTimeout
cfg.DataProxyKeepAlive = proxy.KeepAlive
cfg.DataProxyTLSHandshakeTimeout = proxy.TLSHandshakeTimeout
cfg.DataProxyExpectContinueTimeout = proxy.ExpectContinueTimeout
cfg.DataProxyMaxConnsPerHost = proxy.MaxConnsPerHost
cfg.DataProxyMaxIdleConns = proxy.MaxIdleConns
cfg.DataProxyIdleConnTimeout = proxy.IdleConnTimeout
cfg.ResponseLimit = proxy.ResponseLimit
cfg.DataProxyRowLimit = proxy.RowLimit
cfg.DataProxyUserAgent = proxy.UserAgent
return nil
}
func ReadDataProxySettings(iniFile *ini.File) ProxySettings {
section := iniFile.Section("dataproxy")
proxy := ProxySettings{
SendUserHeader: section.Key("send_user_header").MustBool(false),
Logging: section.Key("logging").MustBool(false),
Timeout: section.Key("timeout").MustInt(30),
DialTimeout: section.Key("dialTimeout").MustInt(10),
KeepAlive: section.Key("keep_alive_seconds").MustInt(30),
TLSHandshakeTimeout: section.Key("tls_handshake_timeout_seconds").MustInt(10),
ExpectContinueTimeout: section.Key("expect_continue_timeout_seconds").MustInt(1),
MaxConnsPerHost: section.Key("max_conns_per_host").MustInt(0),
MaxIdleConns: section.Key("max_idle_connections").MustInt(),
IdleConnTimeout: section.Key("idle_conn_timeout_seconds").MustInt(90),
ResponseLimit: section.Key("response_limit").MustInt64(0),
RowLimit: section.Key("row_limit").MustInt64(defaultDataProxyRowLimit),
UserAgent: section.Key("user_agent").String(),
}
if proxy.UserAgent == "" {
proxy.UserAgent = fmt.Sprintf("Grafana/%s", BuildVersion)
}
if proxy.RowLimit <= 0 {
proxy.RowLimit = defaultDataProxyRowLimit
}
return proxy
}