package models import ( "errors" "time" "github.com/grafana/grafana/pkg/components/simplejson" ) const ( DS_GRAPHITE = "graphite" DS_INFLUXDB = "influxdb" DS_INFLUXDB_08 = "influxdb_08" DS_ES = "elasticsearch" DS_OPENTSDB = "opentsdb" DS_CLOUDWATCH = "cloudwatch" DS_KAIROSDB = "kairosdb" DS_PROMETHEUS = "prometheus" DS_ACCESS_DIRECT = "direct" DS_ACCESS_PROXY = "proxy" ) // Typed errors var ( ErrDataSourceNotFound = errors.New("Data source not found") ErrDataSourceNameExists = errors.New("Data source with same name already exists") ) type DsAccess string type DataSource struct { Id int64 OrgId int64 Version int 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 JsonData *simplejson.Json 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 // Also acts as api DTO type AddDataSourceCommand struct { 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"` WithCredentials bool `json:"withCredentials"` IsDefault bool `json:"isDefault"` JsonData *simplejson.Json `json:"jsonData"` OrgId int64 `json:"-"` Result *DataSource } // Also acts as api DTO type UpdateDataSourceCommand struct { 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"` WithCredentials bool `json:"withCredentials"` IsDefault bool `json:"isDefault"` JsonData *simplejson.Json `json:"jsonData"` OrgId int64 `json:"-"` Id int64 `json:"-"` } type DeleteDataSourceCommand struct { Id int64 OrgId int64 } // --------------------- // 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 { }