Provisioning: Ignore dashboard change warning after save (#115401)
This commit is contained in:
@@ -2,6 +2,7 @@ package apistore
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"math/rand/v2"
|
||||
"strings"
|
||||
"testing"
|
||||
@@ -19,6 +20,7 @@ import (
|
||||
|
||||
authlib "github.com/grafana/authlib/types"
|
||||
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||
"github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||
)
|
||||
@@ -195,6 +197,42 @@ func TestPrepareObjectForStorage(t *testing.T) {
|
||||
require.Equal(t, int64(2), meta2.GetGeneration())
|
||||
})
|
||||
|
||||
t.Run("Update should skip incrementing generation when content is unchanged", func(t *testing.T) {
|
||||
dashboard := dashv1.Dashboard{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Name: "test",
|
||||
Generation: 123,
|
||||
Annotations: map[string]string{
|
||||
"A": "B",
|
||||
utils.AnnoKeyUpdatedTimestamp: "2025-12-17T01:01:00Z",
|
||||
},
|
||||
UID: "XXX",
|
||||
},
|
||||
Spec: v0alpha1.Unstructured{
|
||||
Object: map[string]any{
|
||||
"hello": "world",
|
||||
},
|
||||
},
|
||||
}
|
||||
dashboard.Name = "test-name"
|
||||
obj := dashboard.DeepCopyObject()
|
||||
tmp, err := utils.MetaAccessor(obj)
|
||||
tmp.SetGeneration(2)
|
||||
tmp.SetUpdatedTimestampMillis(12345)
|
||||
require.NoError(t, err)
|
||||
|
||||
v, err := s.prepareObjectForUpdate(ctx, obj, &dashboard)
|
||||
require.NoError(t, err)
|
||||
require.False(t, v.hasChanged, "no changes")
|
||||
|
||||
out := &unstructured.Unstructured{}
|
||||
err = json.Unmarshal(v.raw.Bytes(), out)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, int64(123), tmp.GetGeneration())
|
||||
require.Equal(t, "2025-12-17T01:01:00Z", tmp.GetAnnotation(utils.AnnoKeyUpdatedTimestamp))
|
||||
})
|
||||
|
||||
s.opts.RequireDeprecatedInternalID = true
|
||||
t.Run("Should generate internal id", func(t *testing.T) {
|
||||
dashboard := dashv1.Dashboard{}
|
||||
|
||||
Reference in New Issue
Block a user