Storage: Use our own key format and support unnamespaced objects (#83929)

* use our own key format and support unnamespaced objects

* fix tests
This commit is contained in:
Dan Cech
2024-03-05 16:31:39 -05:00
committed by GitHub
parent 01fb2cff62
commit 7e4badff1d
6 changed files with 217 additions and 171 deletions
@@ -1099,8 +1099,12 @@ func (s *sqlEntityServer) List(ctx context.Context, r *entity.EntityListRequest)
return nil, err
}
args = append(args, key.Namespace, key.Group, key.Resource)
whereclause := "(" + s.dialect.Quote("namespace") + "=? AND " + s.dialect.Quote("group") + "=? AND " + s.dialect.Quote("resource") + "=?"
args = append(args, key.Group, key.Resource)
whereclause := "(" + s.dialect.Quote("group") + "=? AND " + s.dialect.Quote("resource") + "=?"
if key.Namespace != "" {
args = append(args, key.Namespace)
whereclause += " AND " + s.dialect.Quote("namespace") + "=?"
}
if key.Name != "" {
args = append(args, key.Name)
whereclause += " AND " + s.dialect.Quote("name") + "=?"
@@ -1257,8 +1261,12 @@ func (s *sqlEntityServer) watchInit(ctx context.Context, r *entity.EntityWatchRe
return err
}
args = append(args, key.Namespace, key.Group, key.Resource)
whereclause := "(" + s.dialect.Quote("namespace") + "=? AND " + s.dialect.Quote("group") + "=? AND " + s.dialect.Quote("resource") + "=?"
args = append(args, key.Group, key.Resource)
whereclause := "(" + s.dialect.Quote("group") + "=? AND " + s.dialect.Quote("resource") + "=?"
if key.Namespace != "" {
args = append(args, key.Namespace)
whereclause += " AND " + s.dialect.Quote("namespace") + "=?"
}
if key.Name != "" {
args = append(args, key.Name)
whereclause += " AND " + s.dialect.Quote("name") + "=?"
@@ -1465,7 +1473,7 @@ func watchMatches(r *entity.EntityWatchRequest, result *entity.Entity) bool {
return false
}
if key.Namespace == result.Namespace && key.Group == result.Group && key.Resource == result.Resource && (key.Name == "" || key.Name == result.Name) {
if key.Group == result.Group && key.Resource == result.Resource && (key.Namespace == "" || key.Namespace == result.Namespace) && (key.Name == "" || key.Name == result.Name) {
matched = true
break
}
@@ -34,7 +34,7 @@ func TestCreate(t *testing.T) {
Resource: "playlists",
Namespace: "default",
Name: "set-minimum-uid",
Key: "/playlist.grafana.app/playlists/default/set-minimum-uid",
Key: "/playlist.grafana.app/playlists/namespaces/default/set-minimum-uid",
CreatedBy: "set-minimum-creator",
Origin: &entity.EntityOriginInfo{},
},
@@ -44,7 +44,7 @@ func TestCreate(t *testing.T) {
{
"request with no entity creator",
&entity.Entity{
Key: "/playlist.grafana.app/playlists/default/set-only-key",
Key: "/playlist.grafana.app/playlists/namespaces/default/set-only-key",
},
true,
false,