2023-10-17 11:29:06 -04:00
|
|
|
package grafanaapiserver
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
2023-10-23 14:42:10 -04:00
|
|
|
"net"
|
2023-10-17 11:29:06 -04:00
|
|
|
"path/filepath"
|
2023-10-23 14:42:10 -04:00
|
|
|
"strconv"
|
2023-10-17 11:29:06 -04:00
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
|
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type config struct {
|
|
|
|
|
enabled bool
|
|
|
|
|
devMode bool
|
|
|
|
|
|
2023-10-23 14:42:10 -04:00
|
|
|
ip net.IP
|
|
|
|
|
port int
|
|
|
|
|
host string
|
|
|
|
|
apiURL string
|
|
|
|
|
|
2023-10-27 16:39:27 -04:00
|
|
|
storageType StorageType
|
|
|
|
|
|
2023-10-17 11:29:06 -04:00
|
|
|
etcdServers []string
|
|
|
|
|
dataPath string
|
|
|
|
|
|
|
|
|
|
logLevel int
|
|
|
|
|
}
|
|
|
|
|
|
2023-11-13 11:39:01 -08:00
|
|
|
func newConfig(cfg *setting.Cfg, features featuremgmt.FeatureToggles) *config {
|
2023-10-17 11:29:06 -04:00
|
|
|
defaultLogLevel := 0
|
2023-10-23 14:42:10 -04:00
|
|
|
ip := net.ParseIP(cfg.HTTPAddr)
|
|
|
|
|
apiURL := cfg.AppURL
|
|
|
|
|
port, err := strconv.Atoi(cfg.HTTPPort)
|
|
|
|
|
if err != nil {
|
|
|
|
|
port = 3000
|
|
|
|
|
}
|
|
|
|
|
|
2023-10-17 11:29:06 -04:00
|
|
|
if cfg.Env == setting.Dev {
|
|
|
|
|
defaultLogLevel = 10
|
2023-10-23 14:42:10 -04:00
|
|
|
port = 6443
|
|
|
|
|
ip = net.ParseIP("127.0.0.1")
|
|
|
|
|
apiURL = fmt.Sprintf("https://%s:%d", ip, port)
|
2023-10-17 11:29:06 -04:00
|
|
|
}
|
|
|
|
|
|
2023-10-23 14:42:10 -04:00
|
|
|
host := fmt.Sprintf("%s:%d", ip, port)
|
|
|
|
|
|
2023-10-17 11:29:06 -04:00
|
|
|
return &config{
|
2023-11-14 12:50:27 -08:00
|
|
|
enabled: features.IsEnabledGlobally(featuremgmt.FlagGrafanaAPIServer),
|
Storage: Unified Storage based on Entity API (#71977)
* first round of entityapi updates
- quote column names and clean up insert/update queries
- replace grn with guid
- streamline table structure
fixes
streamline entity history
move EntitySummary into proto
remove EntitySummary
add guid to json
fix tests
change DB_Uuid to DB_NVarchar
fix folder test
convert interface to any
more cleanup
start entity store under grafana-apiserver dskit target
CRUD working, kind of
rough cut of wiring entity api to kube-apiserver
fake grafana user in context
add key to entity
list working
revert unnecessary changes
move entity storage files to their own package, clean up
use accessor to read/write grafana annotations
implement separate Create and Update functions
* go mod tidy
* switch from Kind to resource
* basic grpc storage server
* basic support for grpc entity store
* don't connect to database unless it's needed, pass user identity over grpc
* support getting user from k8s context, fix some mysql issues
* assign owner to snowflake dependency
* switch from ulid to uuid for guids
* cleanup, rename Search to List
* remove entityListResult
* EntityAPI: remove extra user abstraction (#79033)
* remove extra user abstraction
* add test stub (but
* move grpc context setup into client wrapper, fix lint issue
* remove unused constants
* remove custom json stuff
* basic list filtering, add todo
* change target to storage-server, allow entityStore flag in prod mode
* fix issue with Update
* EntityAPI: make test work, need to resolve expected differences (#79123)
* make test work, need to resolve expected differences
* remove the fields not supported by legacy
* sanitize out the bits legacy does not support
* sanitize out the bits legacy does not support
---------
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* update feature toggle generated files
* remove unused http headers
* update feature flag strategy
* devmode
* update readme
* spelling
* readme
---------
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2023-12-06 21:21:21 +01:00
|
|
|
devMode: features.IsEnabledGlobally(featuremgmt.FlagGrafanaAPIServerEnsureKubectlAccess),
|
2023-10-17 11:29:06 -04:00
|
|
|
dataPath: filepath.Join(cfg.DataPath, "grafana-apiserver"),
|
2023-10-23 14:42:10 -04:00
|
|
|
ip: ip,
|
|
|
|
|
port: port,
|
|
|
|
|
host: host,
|
2023-10-17 11:29:06 -04:00
|
|
|
logLevel: cfg.SectionWithEnvOverrides("grafana-apiserver").Key("log_level").MustInt(defaultLogLevel),
|
|
|
|
|
etcdServers: cfg.SectionWithEnvOverrides("grafana-apiserver").Key("etcd_servers").Strings(","),
|
2023-10-27 16:39:27 -04:00
|
|
|
storageType: StorageType(cfg.SectionWithEnvOverrides("grafana-apiserver").Key("storage_type").MustString(string(StorageTypeLegacy))),
|
2023-10-23 14:42:10 -04:00
|
|
|
apiURL: apiURL,
|
2023-10-17 11:29:06 -04:00
|
|
|
}
|
|
|
|
|
}
|