Skip to content

Commit

Permalink
UPSTREAM: <carry>: use hardcoded rest mapper from library-go
Browse files Browse the repository at this point in the history
  • Loading branch information
tkashem committed Mar 15, 2022
1 parent d67dd91 commit 58f3815
Show file tree
Hide file tree
Showing 16 changed files with 243 additions and 103 deletions.
2 changes: 1 addition & 1 deletion go.mod
Expand Up @@ -68,7 +68,7 @@ require (
github.com/openshift/api v0.0.0-20211209173311-a19f3b9052a6
github.com/openshift/apiserver-library-go v0.0.0-20211209162547-8c11dbc46b6e
github.com/openshift/client-go v0.0.0-20211209144617-7385dd6338e3
github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
github.com/openshift/library-go v0.0.0-20220315122757-21a67f25d837
github.com/pkg/errors v0.9.1
github.com/pmezard/go-difflib v1.0.0
github.com/prometheus/client_golang v1.11.0
Expand Down
103 changes: 3 additions & 100 deletions pkg/kubeapiserver/admission/patch_restmapper.go
@@ -1,108 +1,11 @@
package admission

import (
"fmt"

"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime/schema"
)

// defaultRESTMappings contains enough RESTMappings to have enough of the kube-controller-manager succeed when running
// against a kube-apiserver that cannot reach aggregated APIs to do a full mapping. This happens when the OwnerReferencesPermissionEnforcement
// admission plugin runs to confirm permissions. Don't add things just because you don't want to fail. These are here so that
// we can start enough back up to get the rest of the system working correctly.
var defaultRESTMappings = []meta.RESTMapping{
{
GroupVersionKind: schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ConfigMap"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Pod"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ReplicationController"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "", Version: "v1", Resource: "replicationcontrollers"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "", Version: "v1", Kind: "Secret"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "", Version: "v1", Resource: "secrets"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "", Version: "v1", Kind: "ServiceAccount"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "", Version: "v1", Resource: "serviceaccounts"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "ControllerRevision"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "controllerrevisions"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "DaemonSet"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "daemonsets"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "Deployment"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "deployments"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "ReplicaSet"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "replicasets"},
},
{
GroupVersionKind: schema.GroupVersionKind{Group: "apps", Version: "v1", Kind: "StatefulSet"},
Scope: meta.RESTScopeNamespace,
Resource: schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "statefulsets"},
},
}
"github.com/openshift/library-go/pkg/client/openshiftrestmapper"
)

func NewAdmissionRESTMapper(delegate meta.RESTMapper) meta.RESTMapper {
ret := HardCodedFirstRESTMapper{
Mapping: map[schema.GroupVersionKind]meta.RESTMapping{},
RESTMapper: delegate,
}
for i := range defaultRESTMappings {
curr := defaultRESTMappings[i]
ret.Mapping[curr.GroupVersionKind] = curr
}
return ret
}

// HardCodedFirstRESTMapper is a RESTMapper that will look for hardcoded mappings first, then delegate.
// This is done in service to `OwnerReferencesPermissionEnforcement`
type HardCodedFirstRESTMapper struct {
Mapping map[schema.GroupVersionKind]meta.RESTMapping
meta.RESTMapper
}

var _ meta.RESTMapper = HardCodedFirstRESTMapper{}

func (m HardCodedFirstRESTMapper) String() string {
return fmt.Sprintf("HardCodedRESTMapper{\n\t%v\n%v\n}", m.Mapping, m.RESTMapper)
}

// RESTMapping is the only function called today. The firsthit restmapper ought to make this work right. OwnerReferencesPermissionEnforcement
// only ever calls with one version.
func (m HardCodedFirstRESTMapper) RESTMappings(gk schema.GroupKind, versions ...string) ([]*meta.RESTMapping, error) {
// not exactly one version, delegate
if len(versions) != 1 {
return m.RESTMapper.RESTMappings(gk, versions...)
}
gvk := gk.WithVersion(versions[0])

single, ok := m.Mapping[gvk]
// not handled, delegate
if !ok {
return m.RESTMapper.RESTMappings(gk, versions...)
}

return []*meta.RESTMapping{&single}, nil
return openshiftrestmapper.NewOpenShiftHardcodedRESTMapper(delegate)
}
1 change: 1 addition & 0 deletions staging/src/k8s.io/api/go.mod
Expand Up @@ -16,6 +16,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/apiextensions-apiserver/go.mod
Expand Up @@ -41,6 +41,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
3 changes: 2 additions & 1 deletion staging/src/k8s.io/apiserver/go.mod
Expand Up @@ -18,7 +18,7 @@ require (
github.com/googleapis/gnostic v0.5.5
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
github.com/openshift/library-go v0.0.0-20220315122757-21a67f25d837
github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.7.0
go.etcd.io/etcd/api/v3 v3.5.0
Expand Down Expand Up @@ -59,6 +59,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/cli-runtime/go.mod
Expand Up @@ -30,6 +30,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/cloud-provider/go.mod
Expand Up @@ -26,6 +26,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/controller-manager/go.mod
Expand Up @@ -23,6 +23,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/kube-aggregator/go.mod
Expand Up @@ -29,6 +29,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/kube-controller-manager/go.mod
Expand Up @@ -15,6 +15,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/kubectl/go.mod
Expand Up @@ -50,6 +50,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/legacy-cloud-providers/go.mod
Expand Up @@ -44,6 +44,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/pod-security-admission/go.mod
Expand Up @@ -25,6 +25,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down
1 change: 1 addition & 0 deletions staging/src/k8s.io/sample-apiserver/go.mod
Expand Up @@ -21,6 +21,7 @@ replace (
github.com/imdario/mergo => github.com/imdario/mergo v0.3.5
github.com/mattn/go-colorable => github.com/mattn/go-colorable v0.0.9
github.com/onsi/ginkgo => github.com/openshift/ginkgo v4.7.0-origin.0+incompatible
github.com/openshift/library-go => github.com/openshift/library-go v0.0.0-20211209153216-ed9bc958bd8a
k8s.io/api => ../api
k8s.io/apiextensions-apiserver => ../apiextensions-apiserver
k8s.io/apimachinery => ../apimachinery
Expand Down

0 comments on commit 58f3815

Please sign in to comment.