grafana/pkg/models/datasource.go

157 lines
4.1 KiB
Go
Raw Normal View History

2014-12-16 19:04:08 +08:00
package models
2014-12-19 03:26:06 +08:00
import (
"errors"
"time"
2016-03-12 06:28:33 +08:00
"github.com/grafana/grafana/pkg/components/simplejson"
2014-12-19 03:26:06 +08:00
)
2014-12-16 19:04:08 +08:00
const (
DS_GRAPHITE = "graphite"
DS_INFLUXDB = "influxdb"
DS_INFLUXDB_08 = "influxdb_08"
2015-01-17 17:39:26 +08:00
DS_ES = "elasticsearch"
DS_OPENTSDB = "opentsdb"
2015-08-13 20:20:47 +08:00
DS_CLOUDWATCH = "cloudwatch"
DS_KAIROSDB = "kairosdb"
DS_PROMETHEUS = "prometheus"
DS_ACCESS_DIRECT = "direct"
DS_ACCESS_PROXY = "proxy"
2014-12-16 19:04:08 +08:00
)
2014-12-19 03:26:06 +08:00
// Typed errors
var (
ErrDataSourceNotFound = errors.New("Data source not found")
ErrDataSourceNameExists = errors.New("Data source with same name already exists")
2014-12-19 03:26:06 +08:00
)
2014-12-16 19:04:08 +08:00
type DsAccess string
type DataSource struct {
Id int64
OrgId int64
Version int
2014-12-16 19:04:08 +08:00
Name string
Type string
Access DsAccess
Url string
Password string
User string
Database string
BasicAuth bool
BasicAuthUser string
BasicAuthPassword string
TlsAuth bool
TlsClientCert string
TlsClientKey string
WithCredentials bool
IsDefault bool
2016-03-12 06:28:33 +08:00
JsonData *simplejson.Json
2014-12-16 19:04:08 +08:00
Created time.Time
Updated time.Time
}
var knownDatasourcePlugins map[string]bool = map[string]bool{
DS_ES: true,
DS_GRAPHITE: true,
DS_INFLUXDB: true,
DS_INFLUXDB_08: true,
DS_KAIROSDB: true,
DS_CLOUDWATCH: true,
DS_PROMETHEUS: true,
DS_OPENTSDB: true,
"opennms": true,
"druid": true,
"dalmatinerdb": true,
"gnocci": true,
"zabbix": true,
}
func IsKnownDataSourcePlugin(dsType string) bool {
_, exists := knownDatasourcePlugins[dsType]
return exists
}
// ----------------------
// COMMANDS
2014-12-19 03:26:06 +08:00
2015-01-09 23:36:23 +08:00
// Also acts as api DTO
2014-12-16 23:45:07 +08:00
type AddDataSourceCommand struct {
2016-03-12 06:28:33 +08:00
Name string `json:"name" binding:"Required"`
Type string `json:"type" binding:"Required"`
Access DsAccess `json:"access" binding:"Required"`
Url string `json:"url"`
Password string `json:"password"`
Database string `json:"database"`
User string `json:"user"`
BasicAuth bool `json:"basicAuth"`
BasicAuthUser string `json:"basicAuthUser"`
BasicAuthPassword string `json:"basicAuthPassword"`
TlsAuth bool `json:"tlsAuth"`
TlsClientCert string `json:"tlsClientCert"`
TlsClientKey string `json:"tlsClientKey"`
2016-03-12 06:28:33 +08:00
WithCredentials bool `json:"withCredentials"`
IsDefault bool `json:"isDefault"`
JsonData *simplejson.Json `json:"jsonData"`
OrgId int64 `json:"-"`
Result *DataSource
2014-12-16 23:45:07 +08:00
}
2014-12-18 00:32:22 +08:00
2015-01-09 23:36:23 +08:00
// Also acts as api DTO
2014-12-18 00:32:22 +08:00
type UpdateDataSourceCommand struct {
2016-03-12 06:28:33 +08:00
Name string `json:"name" binding:"Required"`
Type string `json:"type" binding:"Required"`
Access DsAccess `json:"access" binding:"Required"`
Url string `json:"url"`
Password string `json:"password"`
User string `json:"user"`
Database string `json:"database"`
BasicAuth bool `json:"basicAuth"`
BasicAuthUser string `json:"basicAuthUser"`
BasicAuthPassword string `json:"basicAuthPassword"`
TlsAuth bool `json:"tlsAuth"`
TlsClientCert string `json:"tlsClientCert"`
TlsClientKey string `json:"tlsClientKey"`
2016-03-12 06:28:33 +08:00
WithCredentials bool `json:"withCredentials"`
IsDefault bool `json:"isDefault"`
JsonData *simplejson.Json `json:"jsonData"`
OrgId int64 `json:"-"`
Id int64 `json:"-"`
2014-12-18 00:32:22 +08:00
}
type DeleteDataSourceCommand struct {
Id int64
OrgId int64
2014-12-18 00:32:22 +08:00
}
// ---------------------
// QUERIES
type GetDataSourcesQuery struct {
OrgId int64
Result []*DataSource
}
type GetDataSourceByIdQuery struct {
Id int64
OrgId int64
Result *DataSource
}
type GetDataSourceByNameQuery struct {
Name string
OrgId int64
Result *DataSource
}
// ---------------------
// EVENTS
type DataSourceCreatedEvent struct {
}