diff --git a/backend/common_test.go b/backend/common_test.go index e624899e3..d93c68562 100644 --- a/backend/common_test.go +++ b/backend/common_test.go @@ -88,6 +88,7 @@ func TestDataSourceInstanceSettings(t *testing.T) { UID: "uid1", User: "user", Type: "example-datasource", + System: false, JSONData: []byte("{}"), BasicAuthEnabled: true, BasicAuthUser: "buser", @@ -120,6 +121,7 @@ func TestDataSourceInstanceSettings(t *testing.T) { Name: "ds2", UID: "uid2", Type: "example-datasource-2", + System: false, User: "user", JSONData: []byte("{}"), BasicAuthEnabled: false, diff --git a/backend/convert_from_protobuf.go b/backend/convert_from_protobuf.go index 386da0c4b..ad6f431c5 100644 --- a/backend/convert_from_protobuf.go +++ b/backend/convert_from_protobuf.go @@ -60,6 +60,7 @@ func (f ConvertFromProtobuf) DataSourceInstanceSettings(proto *pluginv2.DataSour ID: proto.Id, UID: proto.Uid, Type: pluginID, + System: proto.System, Name: proto.Name, URL: proto.Url, User: proto.User, diff --git a/backend/convert_from_protobuf_test.go b/backend/convert_from_protobuf_test.go index fde664035..3aa03457f 100644 --- a/backend/convert_from_protobuf_test.go +++ b/backend/convert_from_protobuf_test.go @@ -156,6 +156,7 @@ var protoDataSourceInstanceSettings = &pluginv2.DataSourceInstanceSettings{ DecryptedSecureJsonData: map[string]string{"secret": "quiet"}, LastUpdatedMS: lastUpdatedMS, ApiVersion: "v0alpha3", + System: true, } func TestConvertFromProtobufDataSourceInstanceSettings(t *testing.T) { @@ -195,6 +196,7 @@ func TestConvertFromProtobufDataSourceInstanceSettings(t *testing.T) { requireCounter.Equal(t, map[string]string{"secret": "quiet"}, sdkDSIS.DecryptedSecureJSONData) requireCounter.Equal(t, lastUpdatedTime, sdkDSIS.Updated) requireCounter.Equal(t, protoDSIS.ApiVersion, sdkDSIS.APIVersion) + requireCounter.Equal(t, protoDSIS.System, sdkDSIS.System) require.Equal(t, requireCounter.Count, sdkWalker.FieldCount, "untested fields in conversion") } @@ -270,6 +272,7 @@ func TestConvertFromProtobufPluginContext(t *testing.T) { requireCounter.Equal(t, protoCtx.DataSourceInstanceSettings.Database, sdkCtx.DataSourceInstanceSettings.Database) requireCounter.Equal(t, protoCtx.DataSourceInstanceSettings.BasicAuthEnabled, sdkCtx.DataSourceInstanceSettings.BasicAuthEnabled) requireCounter.Equal(t, protoCtx.DataSourceInstanceSettings.BasicAuthUser, sdkCtx.DataSourceInstanceSettings.BasicAuthUser) + requireCounter.Equal(t, protoCtx.DataSourceInstanceSettings.System, sdkCtx.DataSourceInstanceSettings.System) requireCounter.Equal(t, json.RawMessage(protoCtx.DataSourceInstanceSettings.JsonData), sdkCtx.DataSourceInstanceSettings.JSONData) requireCounter.Equal(t, map[string]string{"secret": "quiet"}, sdkCtx.DataSourceInstanceSettings.DecryptedSecureJSONData) requireCounter.Equal(t, time.Unix(0, 86400*2*1e9), sdkCtx.DataSourceInstanceSettings.Updated) @@ -431,6 +434,7 @@ func TestConvertFromProtobufQueryDataRequest(t *testing.T) { requireCounter.Equal(t, protoQDR.PluginContext.DataSourceInstanceSettings.Database, sdkQDR.PluginContext.DataSourceInstanceSettings.Database) requireCounter.Equal(t, protoQDR.PluginContext.DataSourceInstanceSettings.BasicAuthEnabled, sdkQDR.PluginContext.DataSourceInstanceSettings.BasicAuthEnabled) requireCounter.Equal(t, protoQDR.PluginContext.DataSourceInstanceSettings.BasicAuthUser, sdkQDR.PluginContext.DataSourceInstanceSettings.BasicAuthUser) + requireCounter.Equal(t, protoQDR.PluginContext.DataSourceInstanceSettings.System, sdkQDR.PluginContext.DataSourceInstanceSettings.System) requireCounter.Equal(t, json.RawMessage(protoQDR.PluginContext.DataSourceInstanceSettings.JsonData), sdkQDR.PluginContext.DataSourceInstanceSettings.JSONData) requireCounter.Equal(t, map[string]string{"secret": "quiet"}, sdkQDR.PluginContext.DataSourceInstanceSettings.DecryptedSecureJSONData) requireCounter.Equal(t, time.Unix(0, 86400*2*1e9), sdkQDR.PluginContext.DataSourceInstanceSettings.Updated) @@ -604,6 +608,7 @@ func TestConvertFromProtobufAdmissionRequest(t *testing.T) { requireCounter.Equal(t, map[string]string{"secret": "quiet"}, sdkAR.PluginContext.DataSourceInstanceSettings.DecryptedSecureJSONData) requireCounter.Equal(t, time.Unix(0, 86400*2*1e9), sdkAR.PluginContext.DataSourceInstanceSettings.Updated) requireCounter.Equal(t, protoAR.PluginContext.UserAgent, sdkAR.PluginContext.UserAgent.String()) + requireCounter.Equal(t, protoAR.PluginContext.DataSourceInstanceSettings.System, sdkAR.PluginContext.DataSourceInstanceSettings.System, "System must be equal") // The actual request values requireCounter.Equal(t, protoAR.Kind.Group, sdkAR.Kind.Group) @@ -729,6 +734,7 @@ func TestConvertFromProtobufConversionRequest(t *testing.T) { requireCounter.Equal(t, protoCR.PluginContext.DataSourceInstanceSettings.Database, sdkCR.PluginContext.DataSourceInstanceSettings.Database) requireCounter.Equal(t, protoCR.PluginContext.DataSourceInstanceSettings.BasicAuthEnabled, sdkCR.PluginContext.DataSourceInstanceSettings.BasicAuthEnabled) requireCounter.Equal(t, protoCR.PluginContext.DataSourceInstanceSettings.BasicAuthUser, sdkCR.PluginContext.DataSourceInstanceSettings.BasicAuthUser) + requireCounter.Equal(t, protoCR.PluginContext.DataSourceInstanceSettings.System, sdkCR.PluginContext.DataSourceInstanceSettings.System) requireCounter.Equal(t, json.RawMessage(protoCR.PluginContext.DataSourceInstanceSettings.JsonData), sdkCR.PluginContext.DataSourceInstanceSettings.JSONData) requireCounter.Equal(t, map[string]string{"secret": "quiet"}, sdkCR.PluginContext.DataSourceInstanceSettings.DecryptedSecureJSONData) requireCounter.Equal(t, time.Unix(0, 86400*2*1e9), sdkCR.PluginContext.DataSourceInstanceSettings.Updated) diff --git a/backend/convert_to_protobuf.go b/backend/convert_to_protobuf.go index 9c31cc2e4..597fd0776 100644 --- a/backend/convert_to_protobuf.go +++ b/backend/convert_to_protobuf.go @@ -107,6 +107,7 @@ func (t ConvertToProtobuf) DataSourceInstanceSettings(s *DataSourceInstanceSetti DecryptedSecureJsonData: s.DecryptedSecureJSONData, LastUpdatedMS: s.Updated.UnixNano() / int64(time.Millisecond), ApiVersion: s.APIVersion, + System: s.System, } } diff --git a/backend/convert_to_protobuf_test.go b/backend/convert_to_protobuf_test.go index c72a3167b..942d6960f 100644 --- a/backend/convert_to_protobuf_test.go +++ b/backend/convert_to_protobuf_test.go @@ -169,6 +169,7 @@ var testPluginContext = PluginContext{ ID: 1, UID: "uid", Type: "pluginID", + System: true, Name: "name", URL: "http://example.com", User: "user", diff --git a/genproto/pluginv2/backend.pb.go b/genproto/pluginv2/backend.pb.go index 7a8004f22..ea3a8a9b3 100644 --- a/genproto/pluginv2/backend.pb.go +++ b/genproto/pluginv2/backend.pb.go @@ -315,7 +315,7 @@ type DataSourceInstanceSettings struct { ApiVersion string `protobuf:"bytes,12,opt,name=apiVersion,proto3" json:"apiVersion,omitempty"` // This indicates that the instance is a system instance and should not appear // in Grafana except through code that will explicitly request system data sources - System bool `protobuf:"bytes,1,opt,name=system,proto3" json:"system,omitempty"` + System bool `protobuf:"varint,13,opt,name=system,proto3" json:"system,omitempty"` } func (x *DataSourceInstanceSettings) Reset() { @@ -427,6 +427,13 @@ func (x *DataSourceInstanceSettings) GetUid() string { return "" } +func (x *DataSourceInstanceSettings) GetSystem() bool { + if x != nil { + return x.System + } + return false +} + func (x *DataSourceInstanceSettings) GetApiVersion() string { if x != nil { return x.ApiVersion diff --git a/proto/backend.proto b/proto/backend.proto index 4e7b847b5..a37b91b0f 100644 --- a/proto/backend.proto +++ b/proto/backend.proto @@ -38,6 +38,7 @@ message DataSourceInstanceSettings { // The API version when the settings were saved. // NOTE: this may be an older version than the current apiVersion string apiVersion = 12; + bool system = 13; } message User {