diff --git a/Gopkg.toml b/Gopkg.toml index e43e22b2c..156a64f21 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -68,11 +68,6 @@ name = "github.com/Azure/azure-sdk-for-go" version = "~10.2.1-beta" -[[constraint]] - name = "github.com/Azure/go-autorest" - version = "~8.1.x" - - [[constraint]] name = "cloud.google.com/go" version = "0.11.0" diff --git a/hack/build-image/Dockerfile b/hack/build-image/Dockerfile index 410f952f2..56457abaf 100644 --- a/hack/build-image/Dockerfile +++ b/hack/build-image/Dockerfile @@ -17,6 +17,6 @@ FROM golang:1.10-alpine3.7 RUN apk add --update --no-cache git bash && \ mkdir -p /go/src/k8s.io && \ cd /go/src/k8s.io && \ - git clone -b kubernetes-1.10.0 https://github.com/kubernetes/code-generator && \ - git clone -b kubernetes-1.10.0 https://github.com/kubernetes/apimachinery && \ + git clone -b kubernetes-1.11.0 https://github.com/kubernetes/code-generator && \ + git clone -b kubernetes-1.11.0 https://github.com/kubernetes/apimachinery && \ echo chmod -R a+w /go diff --git a/pkg/client/dynamic.go b/pkg/client/dynamic.go index 50b720efa..ead119d8b 100644 --- a/pkg/client/dynamic.go +++ b/pkg/client/dynamic.go @@ -17,8 +17,6 @@ limitations under the License. package client import ( - "github.com/pkg/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" @@ -38,24 +36,17 @@ type DynamicFactory interface { // dynamicFactory implements DynamicFactory. type dynamicFactory struct { - clientPool dynamic.ClientPool + dynamicClient dynamic.Interface } // NewDynamicFactory returns a new ClientPool-based dynamic factory. -func NewDynamicFactory(clientPool dynamic.ClientPool) DynamicFactory { - return &dynamicFactory{clientPool: clientPool} +func NewDynamicFactory(dynamicClient dynamic.Interface) DynamicFactory { + return &dynamicFactory{dynamicClient: dynamicClient} } func (f *dynamicFactory) ClientForGroupVersionResource(gv schema.GroupVersion, resource metav1.APIResource, namespace string) (Dynamic, error) { - // client-go doesn't actually use the kind when getting the dynamic client from the client pool; - // it only needs the group and version. - dynamicClient, err := f.clientPool.ClientForGroupVersionKind(gv.WithKind("")) - if err != nil { - return nil, errors.Wrapf(err, "error getting client for GroupVersion %s, Resource %s", gv.String, resource.String()) - } - return &dynamicResourceClient{ - resourceClient: dynamicClient.Resource(&resource, namespace), + resourceClient: f.dynamicClient.Resource(gv.WithResource(resource.Name)).Namespace(namespace), }, nil } diff --git a/pkg/cloudprovider/aws/block_store_test.go b/pkg/cloudprovider/aws/block_store_test.go index b3581c1e1..b503ca826 100644 --- a/pkg/cloudprovider/aws/block_store_test.go +++ b/pkg/cloudprovider/aws/block_store_test.go @@ -31,7 +31,9 @@ import ( func TestGetVolumeID(t *testing.T) { b := &blockStore{} - pv := &unstructured.Unstructured{} + pv := &unstructured.Unstructured{ + Object: map[string]interface{}{}, + } // missing spec.awsElasticBlockStore -> no error volumeID, err := b.GetVolumeID(pv) @@ -69,7 +71,9 @@ func TestGetVolumeID(t *testing.T) { func TestSetVolumeID(t *testing.T) { b := &blockStore{} - pv := &unstructured.Unstructured{} + pv := &unstructured.Unstructured{ + Object: map[string]interface{}{}, + } // missing spec.awsElasticBlockStore -> error updatedPV, err := b.SetVolumeID(pv, "vol-updated") diff --git a/pkg/cloudprovider/azure/block_store_test.go b/pkg/cloudprovider/azure/block_store_test.go index 3d45e8fa4..42b25c73e 100644 --- a/pkg/cloudprovider/azure/block_store_test.go +++ b/pkg/cloudprovider/azure/block_store_test.go @@ -29,7 +29,9 @@ import ( func TestGetVolumeID(t *testing.T) { b := &blockStore{} - pv := &unstructured.Unstructured{} + pv := &unstructured.Unstructured{ + Object: map[string]interface{}{}, + } // missing spec.azureDisk -> no error volumeID, err := b.GetVolumeID(pv) @@ -58,7 +60,9 @@ func TestSetVolumeID(t *testing.T) { subscription: "sub", } - pv := &unstructured.Unstructured{} + pv := &unstructured.Unstructured{ + Object: map[string]interface{}{}, + } // missing spec.azureDisk -> error updatedPV, err := b.SetVolumeID(pv, "updated") diff --git a/pkg/cloudprovider/gcp/block_store_test.go b/pkg/cloudprovider/gcp/block_store_test.go index efebd5b7d..36e330dd0 100644 --- a/pkg/cloudprovider/gcp/block_store_test.go +++ b/pkg/cloudprovider/gcp/block_store_test.go @@ -32,7 +32,9 @@ import ( func TestGetVolumeID(t *testing.T) { b := &blockStore{} - pv := &unstructured.Unstructured{} + pv := &unstructured.Unstructured{ + Object: map[string]interface{}{}, + } // missing spec.gcePersistentDisk -> no error volumeID, err := b.GetVolumeID(pv) @@ -58,7 +60,9 @@ func TestGetVolumeID(t *testing.T) { func TestSetVolumeID(t *testing.T) { b := &blockStore{} - pv := &unstructured.Unstructured{} + pv := &unstructured.Unstructured{ + Object: map[string]interface{}{}, + } // missing spec.gcePersistentDisk -> error updatedPV, err := b.SetVolumeID(pv, "abc123") diff --git a/pkg/cmd/server/server.go b/pkg/cmd/server/server.go index d7a3f1ef5..477e8a7b3 100644 --- a/pkg/cmd/server/server.go +++ b/pkg/cmd/server/server.go @@ -151,7 +151,7 @@ type server struct { backupService cloudprovider.BackupService snapshotService cloudprovider.SnapshotService discoveryClient discovery.DiscoveryInterface - clientPool dynamic.ClientPool + dynamicClient dynamic.Interface sharedInformerFactory informers.SharedInformerFactory ctx context.Context cancelFunc context.CancelFunc @@ -182,6 +182,11 @@ func newServer(namespace, baseName, pluginDir, metricsAddr string, logger *logru return nil, err } + dynamicClient, err := dynamic.NewForConfig(clientConfig) + if err != nil { + return nil, err + } + ctx, cancelFunc := context.WithCancel(context.Background()) s := &server{ @@ -191,7 +196,7 @@ func newServer(namespace, baseName, pluginDir, metricsAddr string, logger *logru kubeClient: kubeClient, arkClient: arkClient, discoveryClient: arkClient.Discovery(), - clientPool: dynamic.NewDynamicClientPool(clientConfig), + dynamicClient: dynamicClient, sharedInformerFactory: informers.NewFilteredSharedInformerFactory(arkClient, 0, namespace, nil), ctx: ctx, cancelFunc: cancelFunc, @@ -562,7 +567,7 @@ func (s *server) runControllers(config *api.Config) error { backupper, err := backup.NewKubernetesBackupper( discoveryHelper, - client.NewDynamicFactory(s.clientPool), + client.NewDynamicFactory(s.dynamicClient), podexec.NewPodCommandExecutor(s.kubeClientConfig, s.kubeClient.CoreV1().RESTClient()), s.snapshotService, s.resticManager, @@ -638,7 +643,7 @@ func (s *server) runControllers(config *api.Config) error { restorer, err := restore.NewKubernetesRestorer( discoveryHelper, - client.NewDynamicFactory(s.clientPool), + client.NewDynamicFactory(s.dynamicClient), s.backupService, s.snapshotService, config.ResourcePriorities, diff --git a/pkg/cmd/util/output/output.go b/pkg/cmd/util/output/output.go index a621f5af3..de8d2433d 100644 --- a/pkg/cmd/util/output/output.go +++ b/pkg/cmd/util/output/output.go @@ -162,7 +162,6 @@ func NewPrinter(cmd *cobra.Command) (*printers.HumanReadablePrinter, error) { } printer := printers.NewHumanReadablePrinter( - nil, // encoder, only needed if we want/need to convert unstructured/unknown to typed objects nil, // decoder, only needed if we want/need to convert unstructured/unknown to typed objects options, ) diff --git a/pkg/discovery/helper.go b/pkg/discovery/helper.go index fd23e8dce..4f6cfb085 100644 --- a/pkg/discovery/helper.go +++ b/pkg/discovery/helper.go @@ -28,7 +28,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/discovery" - "k8s.io/client-go/dynamic" + "k8s.io/client-go/restmapper" ) // Helper exposes functions for interacting with the Kubernetes discovery @@ -91,11 +91,11 @@ func (h *helper) Refresh() error { h.lock.Lock() defer h.lock.Unlock() - groupResources, err := discovery.GetAPIGroupResources(h.discoveryClient) + groupResources, err := restmapper.GetAPIGroupResources(h.discoveryClient) if err != nil { return errors.WithStack(err) } - mapper := discovery.NewRESTMapper(groupResources, dynamic.VersionInterfaces) + mapper := restmapper.NewDiscoveryRESTMapper(groupResources) shortcutExpander, err := kcmdutil.NewShortcutExpander(mapper, h.discoveryClient, h.logger) if err != nil { return errors.WithStack(err)