Search: Include managedBy in DashboardHit result (#111600)
This commit is contained in:
@@ -2043,13 +2043,13 @@ func (dr *DashboardServiceImpl) searchProvisionedDashboardsThroughK8s(ctx contex
|
||||
|
||||
dashs := make([]*dashboardProvisioningWithUID, 0)
|
||||
for _, hit := range searchResults.Hits {
|
||||
if utils.ParseManagerKindString(hit.Field.GetNestedString(resource.SEARCH_FIELD_MANAGER_KIND)) != utils.ManagerKindClassicFP { // nolint:staticcheck
|
||||
if utils.ParseManagerKindString(string(hit.ManagedBy.Kind)) != utils.ManagerKindClassicFP { // nolint:staticcheck
|
||||
continue
|
||||
}
|
||||
|
||||
provisioning := &dashboardProvisioningWithUID{
|
||||
DashboardProvisioning: dashboards.DashboardProvisioning{
|
||||
Name: hit.Field.GetNestedString(resource.SEARCH_FIELD_MANAGER_ID),
|
||||
Name: hit.ManagedBy.ID,
|
||||
ExternalID: hit.Field.GetNestedString(resource.SEARCH_FIELD_SOURCE_PATH),
|
||||
CheckSum: hit.Field.GetNestedString(resource.SEARCH_FIELD_SOURCE_CHECKSUM),
|
||||
Updated: hit.Field.GetNestedInt64(resource.SEARCH_FIELD_SOURCE_TIME),
|
||||
|
||||
@@ -5,21 +5,24 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||
"github.com/grafana/grafana/pkg/storage/unified/resourcepb"
|
||||
|
||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||
"github.com/grafana/grafana/pkg/storage/unified/resourcepb"
|
||||
)
|
||||
|
||||
var (
|
||||
excludedFields = map[string]string{
|
||||
resource.SEARCH_FIELD_EXPLAIN: "",
|
||||
resource.SEARCH_FIELD_SCORE: "",
|
||||
resource.SEARCH_FIELD_TITLE: "",
|
||||
resource.SEARCH_FIELD_FOLDER: "",
|
||||
resource.SEARCH_FIELD_TAGS: "",
|
||||
resource.SEARCH_FIELD_DESCRIPTION: "",
|
||||
// These fields exist at the top-level of DashboardHit
|
||||
standardFields = map[string]string{
|
||||
resource.SEARCH_FIELD_EXPLAIN: "",
|
||||
resource.SEARCH_FIELD_SCORE: "",
|
||||
resource.SEARCH_FIELD_TITLE: "",
|
||||
resource.SEARCH_FIELD_FOLDER: "",
|
||||
resource.SEARCH_FIELD_TAGS: "",
|
||||
resource.SEARCH_FIELD_DESCRIPTION: "",
|
||||
resource.SEARCH_FIELD_MANAGER_ID: "",
|
||||
resource.SEARCH_FIELD_MANAGER_KIND: "",
|
||||
}
|
||||
|
||||
IncludeFields = []string{
|
||||
@@ -56,6 +59,8 @@ func ParseResults(result *resourcepb.ResourceSearchResponse, offset int64) (v0al
|
||||
descriptionIDX := -1
|
||||
scoreIDX := -1
|
||||
explainIDX := -1
|
||||
managerKindIDX := -1
|
||||
managerIdIDX := -1
|
||||
|
||||
for i, v := range result.Results.Columns {
|
||||
switch v.Name {
|
||||
@@ -69,6 +74,10 @@ func ParseResults(result *resourcepb.ResourceSearchResponse, offset int64) (v0al
|
||||
folderIDX = i
|
||||
case resource.SEARCH_FIELD_TAGS:
|
||||
tagsIDX = i
|
||||
case resource.SEARCH_FIELD_MANAGER_ID:
|
||||
managerIdIDX = i
|
||||
case resource.SEARCH_FIELD_MANAGER_KIND:
|
||||
managerKindIDX = i
|
||||
case resource.SEARCH_FIELD_DESCRIPTION:
|
||||
descriptionIDX = i
|
||||
}
|
||||
@@ -89,9 +98,10 @@ func ParseResults(result *resourcepb.ResourceSearchResponse, offset int64) (v0al
|
||||
return v0alpha1.SearchResults{}, fmt.Errorf("error parsing Search Response: mismatch number of columns and cells")
|
||||
}
|
||||
|
||||
// Dynamically defined fields
|
||||
fields := &common.Unstructured{}
|
||||
for colIndex, col := range result.Results.Columns {
|
||||
if _, ok := excludedFields[col.Name]; !ok {
|
||||
if _, ok := standardFields[col.Name]; !ok {
|
||||
val, err := resource.DecodeCell(col, colIndex, row.Cells[colIndex])
|
||||
if err != nil {
|
||||
return v0alpha1.SearchResults{}, err
|
||||
@@ -122,6 +132,12 @@ func ParseResults(result *resourcepb.ResourceSearchResponse, offset int64) (v0al
|
||||
if descriptionIDX >= 0 && row.Cells[descriptionIDX] != nil {
|
||||
hit.Description = string(row.Cells[descriptionIDX])
|
||||
}
|
||||
if managerIdIDX >= 0 && row.Cells[managerIdIDX] != nil {
|
||||
hit.ManagedBy.ID = string(row.Cells[managerIdIDX])
|
||||
}
|
||||
if managerKindIDX >= 0 && row.Cells[managerKindIDX] != nil {
|
||||
hit.ManagedBy.Kind = utils.ManagerKind(row.Cells[managerKindIDX])
|
||||
}
|
||||
if tagsIDX >= 0 && row.Cells[tagsIDX] != nil {
|
||||
_ = json.Unmarshal(row.Cells[tagsIDX], &hit.Tags)
|
||||
}
|
||||
|
||||
@@ -276,12 +276,8 @@ func (ss *FolderUnifiedStoreImpl) GetChildren(ctx context.Context, q folder.GetC
|
||||
UID: item.Name,
|
||||
Title: item.Title,
|
||||
ParentUID: item.Folder,
|
||||
ManagedBy: item.ManagedBy.Kind,
|
||||
}
|
||||
|
||||
if item.Field.GetNestedString(resource.SEARCH_FIELD_MANAGER_KIND) != "" {
|
||||
f.ManagedBy = utils.ParseManagerKindString(item.Field.GetNestedString(resource.SEARCH_FIELD_MANAGER_KIND))
|
||||
}
|
||||
|
||||
hits = append(hits, f)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user