Skip to content

Commit

Permalink
Adapt client/apiutil.NewDynamicRESTMapper signature and add `*http.…
Browse files Browse the repository at this point in the history
  • Loading branch information
ary1992 committed Jun 23, 2023
1 parent 41c6e5d commit 2dfb839
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 4 deletions.
4 changes: 3 additions & 1 deletion cmd/gardener-resource-manager/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"context"
"fmt"
"net"
"net/http"
"os"
goruntime "runtime"
"strconv"
Expand Down Expand Up @@ -205,9 +206,10 @@ func run(ctx context.Context, log logr.Logger, cfg *config.ResourceManagerConfig

// use dynamic rest mapper for target cluster, which will automatically rediscover resources on NoMatchErrors
// but is rate-limited to not issue to many discovery calls (rate-limit shared across all reconciliations)
opts.MapperProvider = func(config *rest.Config) (meta.RESTMapper, error) {
opts.MapperProvider = func(config *rest.Config, httpClient *http.Client) (meta.RESTMapper, error) {
return apiutil.NewDynamicRESTMapper(
config,
httpClient,
apiutil.WithLazyDiscovery,
apiutil.WithLimiter(rate.NewLimiter(rate.Every(1*time.Minute), 1)), // rediscover at maximum every minute
)
Expand Down
7 changes: 6 additions & 1 deletion extensions/pkg/util/shoot_clients.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,12 @@ func NewClientForShoot(ctx context.Context, c client.Client, namespace string, o
ApplyRESTOptions(shootRESTConfig, restOptions)

if opts.Mapper == nil {
mapper, err := apiutil.NewDynamicRESTMapper(shootRESTConfig, apiutil.WithLazyDiscovery)
httpClient, err := rest.HTTPClientFor(shootRESTConfig)
if err != nil {
return nil, nil, fmt.Errorf("failed to get HTTP client for config: %w", err)
}

mapper, err := apiutil.NewDynamicRESTMapper(shootRESTConfig, httpClient, apiutil.WithLazyDiscovery)
if err != nil {
return nil, nil, fmt.Errorf("failed to create new DynamicRESTMapper: %w", err)
}
Expand Down
6 changes: 6 additions & 0 deletions pkg/client/kubernetes/runtime_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,15 @@ func setCacheOptionsDefaults(options *cache.Options) error {

func setClientOptionsDefaults(config *rest.Config, options *client.Options) error {
if options.Mapper == nil {
httpClient, err := rest.HTTPClientFor(config)
if err != nil {
return fmt.Errorf("failed to get HTTP client for config: %w", err)
}

// default the client's REST mapper to a dynamic REST mapper (automatically rediscovers resources on NoMatchErrors)
mapper, err := apiutil.NewDynamicRESTMapper(
config,
httpClient,
apiutil.WithLazyDiscovery,
apiutil.WithLimiter(rate.NewLimiter(rate.Every(5*time.Second), 1)),
)
Expand Down
5 changes: 4 additions & 1 deletion test/integration/gardenlet/seed/seed/seed_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/rest"
"k8s.io/utils/pointer"
"sigs.k8s.io/controller-runtime/pkg/cache"
"sigs.k8s.io/controller-runtime/pkg/client"
Expand Down Expand Up @@ -89,7 +90,9 @@ var _ = Describe("Seed controller tests", func() {
})

By("Setup manager")
mapper, err := apiutil.NewDynamicRESTMapper(restConfig)
httpClient, err := rest.HTTPClientFor(restConfig)
Expect(err).NotTo(HaveOccurred())
mapper, err := apiutil.NewDynamicRESTMapper(restConfig, httpClient)
Expect(err).NotTo(HaveOccurred())

mgr, err := manager.New(restConfig, manager.Options{
Expand Down
5 changes: 4 additions & 1 deletion test/integration/operator/garden/garden_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/rest"
clientcmdlatest "k8s.io/client-go/tools/clientcmd/api/latest"
clientcmdv1 "k8s.io/client-go/tools/clientcmd/api/v1"
"k8s.io/utils/pointer"
Expand Down Expand Up @@ -110,7 +111,9 @@ var _ = Describe("Garden controller tests", func() {
})

By("Setup manager")
mapper, err := apiutil.NewDynamicRESTMapper(restConfig)
httpClient, err := rest.HTTPClientFor(restConfig)
Expect(err).NotTo(HaveOccurred())
mapper, err := apiutil.NewDynamicRESTMapper(restConfig, httpClient)
Expect(err).NotTo(HaveOccurred())

mgr, err := manager.New(restConfig, manager.Options{
Expand Down

0 comments on commit 2dfb839

Please sign in to comment.