App Platform: Remove mutable globals (#102962)

* App Platform: Remove mutable globals

* chore: clarify why this exists

* fix: support multi-tenant mode

* refactor: call builder providers directly

* CI: Force re-build
This commit is contained in:
Mariell Hoversholm
2025-03-27 15:46:09 +01:00
committed by GitHub
parent 031a047565
commit d0d7078953
29 changed files with 199 additions and 108 deletions
@@ -11,7 +11,6 @@ import (
"k8s.io/apiserver/pkg/server"
"k8s.io/kube-openapi/pkg/common"
"github.com/grafana/grafana/pkg/services/apiserver"
"github.com/grafana/grafana/pkg/services/apiserver/builder"
)
@@ -60,7 +59,11 @@ func TestAddPostStartHooks(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
config := server.NewRecommendedConfig(apiserver.Codecs)
t.Parallel()
scheme := builder.ProvideScheme()
codecs := builder.ProvideCodecFactory(scheme)
config := server.NewRecommendedConfig(codecs)
err := builder.AddPostStartHooks(config, tt.builders)
if tt.wantErr {
require.Error(t, err)
+32
View File
@@ -0,0 +1,32 @@
package builder
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
)
func ProvideScheme() *runtime.Scheme {
unversionedVersion := schema.GroupVersion{Group: "", Version: "v1"}
unversionedTypes := []runtime.Object{
&metav1.Status{},
&metav1.WatchEvent{},
&metav1.APIVersions{},
&metav1.APIGroupList{},
&metav1.APIGroup{},
&metav1.APIResourceList{},
&metav1.PartialObjectMetadata{},
&metav1.PartialObjectMetadataList{},
}
scheme := runtime.NewScheme()
// we need to add the options to empty v1
metav1.AddToGroupVersion(scheme, schema.GroupVersion{Group: "", Version: "v1"})
scheme.AddUnversionedTypes(unversionedVersion, unversionedTypes...)
return scheme
}
func ProvideCodecFactory(scheme *runtime.Scheme) serializer.CodecFactory {
return serializer.NewCodecFactory(scheme)
}