Skip to content

Commit dabfdf9

Browse files
committed
return empty datasource model instead of an error if datasource name doesn't match
1 parent 82867cb commit dabfdf9

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

tools/datasources.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ func getDatasourceByName(ctx context.Context, args GetDatasourceByNameParams) (*
100100
c := mcpgrafana.GrafanaClientFromContext(ctx)
101101
datasource, err := c.Datasources.GetDataSourceByName(args.Name)
102102
if err != nil {
103+
if strings.Contains(err.Error(), "404") {
104+
return &models.DataSource{}, nil // Not found, return empty datasource without error
105+
}
103106
return nil, fmt.Errorf("get datasource by name %s: %w", args.Name, err)
104107
}
105108
return datasource.Payload, nil

tools/datasources_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,14 @@ func TestDatasourcesTools(t *testing.T) {
9292
require.NoError(t, err)
9393
assert.Equal(t, "Prometheus", result.Name)
9494
})
95+
96+
t.Run("get datasource by name - not found", func(t *testing.T) {
97+
ctx := newTestContext()
98+
result, err := getDatasourceByName(ctx, GetDatasourceByNameParams{
99+
Name: "non-existent-datasource",
100+
})
101+
require.NoError(t, err)
102+
assert.NotNil(t, result)
103+
assert.Equal(t, "", result.Name)
104+
})
95105
}

0 commit comments

Comments
 (0)