Provisioning: Hide full path for classic provisioing resources (#105440)
This commit is contained in:
@@ -304,14 +304,17 @@ func (a *dashboardSqlAccess) scanRow(rows *sql.Rows, history bool) (*dashboardRo
|
||||
}
|
||||
|
||||
if origin_name.String != "" {
|
||||
editable := a.provisioning.GetAllowUIUpdatesFromConfig(origin_name.String)
|
||||
prefix := a.provisioning.GetDashboardProvisionerResolvedPath(origin_name.String) + "/"
|
||||
meta.SetSourceProperties(utils.SourceProperties{
|
||||
Path: origin_path.String,
|
||||
Path: strings.TrimPrefix(origin_path.String, prefix),
|
||||
Checksum: origin_hash.String,
|
||||
TimestampMillis: origin_ts.Int64,
|
||||
})
|
||||
meta.SetManagerProperties(utils.ManagerProperties{
|
||||
Kind: utils.ManagerKindClassicFP, // nolint:staticcheck
|
||||
Identity: origin_name.String,
|
||||
Kind: utils.ManagerKindClassicFP, // nolint:staticcheck
|
||||
Identity: origin_name.String,
|
||||
AllowsEdits: editable,
|
||||
})
|
||||
} else if plugin_id.String != "" {
|
||||
meta.SetManagerProperties(utils.ManagerProperties{
|
||||
|
||||
@@ -1849,6 +1849,8 @@ func (dr *DashboardServiceImpl) saveProvisionedDashboardThroughK8s(ctx context.C
|
||||
m := utils.ManagerProperties{}
|
||||
s := utils.SourceProperties{}
|
||||
if !unprovision {
|
||||
// TODO: the path should be relative to the root
|
||||
// HOWEVER, maybe OK to leave this for now and "fix" it by using file provisioning for mode 4
|
||||
m.Kind = utils.ManagerKindClassicFP // nolint:staticcheck
|
||||
m.Identity = provisioning.Name
|
||||
s.Path = provisioning.ExternalID
|
||||
|
||||
@@ -114,11 +114,13 @@ func (s *Storage) handleManagedResourceRouting(ctx context.Context,
|
||||
return fmt.Errorf("expected managed resource")
|
||||
}
|
||||
if repo.Kind != utils.ManagerKindRepo {
|
||||
return fmt.Errorf("expected managed repository")
|
||||
if !repo.AllowsEdits {
|
||||
return fmt.Errorf("managed resource does not allow edits")
|
||||
}
|
||||
}
|
||||
src, ok := obj.GetSourceProperties()
|
||||
if !ok || src.Path == "" {
|
||||
return fmt.Errorf("missing source properties")
|
||||
return fmt.Errorf("managed resource is missing source path annotation")
|
||||
}
|
||||
|
||||
cfg, err := s.configProvider.GetRestConfig(ctx)
|
||||
|
||||
@@ -48,6 +48,7 @@ export enum ManagerKind {
|
||||
|
||||
export const AnnoKeyManagerKind = 'grafana.app/managedBy';
|
||||
export const AnnoKeyManagerIdentity = 'grafana.app/managerId';
|
||||
export const AnnoKeyManagerAllowsEdits = 'grafana.app/managerAllowsEdits';
|
||||
export const AnnoKeySourcePath = 'grafana.app/sourcePath';
|
||||
export const AnnoKeySourceChecksum = 'grafana.app/sourceChecksum';
|
||||
export const AnnoKeySourceTimestamp = 'grafana.app/sourceTimestamp';
|
||||
@@ -84,6 +85,7 @@ type GrafanaAnnotations = {
|
||||
|
||||
[AnnoKeyManagerKind]?: ManagerKind;
|
||||
[AnnoKeyManagerIdentity]?: string;
|
||||
[AnnoKeyManagerAllowsEdits]?: string;
|
||||
[AnnoKeySourcePath]?: string;
|
||||
[AnnoKeySourceChecksum]?: string;
|
||||
[AnnoKeySourceTimestamp]?: string;
|
||||
|
||||
@@ -12,6 +12,10 @@ import {
|
||||
AnnoKeyGrantPermissions,
|
||||
Resource,
|
||||
DeprecatedInternalId,
|
||||
AnnoKeyManagerKind,
|
||||
AnnoKeySourcePath,
|
||||
AnnoKeyManagerAllowsEdits,
|
||||
ManagerKind,
|
||||
} from 'app/features/apiserver/types';
|
||||
import { getDashboardUrl } from 'app/features/dashboard-scene/utils/getDashboardUrl';
|
||||
import { DeleteDashboardResponse } from 'app/features/manage-dashboards/types';
|
||||
@@ -126,6 +130,14 @@ export class K8sDashboardAPI implements DashboardAPI<DashboardDTO, Dashboard> {
|
||||
},
|
||||
};
|
||||
|
||||
const annotations = dash.metadata.annotations ?? {};
|
||||
const managerKind = annotations[AnnoKeyManagerKind];
|
||||
|
||||
if (managerKind) {
|
||||
result.meta.provisioned = annotations[AnnoKeyManagerAllowsEdits] === 'true' || managerKind === ManagerKind.Repo;
|
||||
result.meta.provisionedExternalId = annotations[AnnoKeySourcePath];
|
||||
}
|
||||
|
||||
if (dash.metadata.labels?.[DeprecatedInternalId]) {
|
||||
result.dashboard.id = parseInt(dash.metadata.labels[DeprecatedInternalId], 10);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user