Storage: Query stats within a namespace (#97403)
This commit is contained in:
@@ -122,12 +122,13 @@ func (b *backend) Stop(_ context.Context) error {
|
||||
}
|
||||
|
||||
// GetResourceStats implements Backend.
|
||||
func (b *backend) GetResourceStats(ctx context.Context, minCount int) ([]resource.ResourceStats, error) {
|
||||
func (b *backend) GetResourceStats(ctx context.Context, namespace string, minCount int) ([]resource.ResourceStats, error) {
|
||||
_, span := b.tracer.Start(ctx, tracePrefix+".GetResourceStats")
|
||||
defer span.End()
|
||||
|
||||
req := &sqlStatsRequest{
|
||||
SQLTemplate: sqltemplate.New(b.dialect),
|
||||
Namespace: namespace,
|
||||
MinCount: minCount, // not used in query... yet?
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,10 @@ SELECT
|
||||
COUNT(*),
|
||||
MAX({{ .Ident "resource_version" }})
|
||||
FROM {{ .Ident "resource" }}
|
||||
{{ if .Namespace }}
|
||||
WHERE 1 = 1
|
||||
AND {{ .Ident "namespace" }} = {{ .Arg .Namespace }}
|
||||
{{ end}}
|
||||
GROUP BY
|
||||
{{ .Ident "namespace" }},
|
||||
{{ .Ident "group" }},
|
||||
|
||||
@@ -74,7 +74,8 @@ func (r sqlResourceRequest) Validate() error {
|
||||
|
||||
type sqlStatsRequest struct {
|
||||
sqltemplate.SQLTemplate
|
||||
MinCount int
|
||||
Namespace string
|
||||
MinCount int
|
||||
}
|
||||
|
||||
func (r sqlStatsRequest) Validate() error {
|
||||
|
||||
@@ -228,6 +228,14 @@ func TestUnifiedStorageQueries(t *testing.T) {
|
||||
MinCount: 10, // Not yet used in query (only response filter)
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "query-namespace",
|
||||
Data: &sqlStatsRequest{
|
||||
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
||||
Namespace: "default",
|
||||
MinCount: 10, // Not yet used in query (only response filter)
|
||||
},
|
||||
},
|
||||
},
|
||||
}})
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ func TestIntegrationBackendHappyPath(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Greater(t, rv3, rv2)
|
||||
|
||||
stats, err := backend.GetResourceStats(ctx, 0)
|
||||
stats, err := backend.GetResourceStats(ctx, "", 0)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, stats, 1)
|
||||
require.Equal(t, int64(3), stats[0].Count)
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
SELECT
|
||||
`namespace`,
|
||||
`group`,
|
||||
`resource`,
|
||||
COUNT(*),
|
||||
MAX(`resource_version`)
|
||||
FROM `resource`
|
||||
WHERE 1 = 1
|
||||
AND `namespace` = 'default'
|
||||
GROUP BY
|
||||
`namespace`,
|
||||
`group`,
|
||||
`resource`
|
||||
;
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
SELECT
|
||||
"namespace",
|
||||
"group",
|
||||
"resource",
|
||||
COUNT(*),
|
||||
MAX("resource_version")
|
||||
FROM "resource"
|
||||
WHERE 1 = 1
|
||||
AND "namespace" = 'default'
|
||||
GROUP BY
|
||||
"namespace",
|
||||
"group",
|
||||
"resource"
|
||||
;
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
SELECT
|
||||
"namespace",
|
||||
"group",
|
||||
"resource",
|
||||
COUNT(*),
|
||||
MAX("resource_version")
|
||||
FROM "resource"
|
||||
WHERE 1 = 1
|
||||
AND "namespace" = 'default'
|
||||
GROUP BY
|
||||
"namespace",
|
||||
"group",
|
||||
"resource"
|
||||
;
|
||||
Reference in New Issue
Block a user