From b8e3c19ed9047701d83a9c0a0c3559cf3cf4992e Mon Sep 17 00:00:00 2001 From: David Eads Date: Fri, 13 Oct 2017 09:53:55 -0400 Subject: [PATCH] UPSTREAM: : drop in 1.9 rebase. Shims enough admission webhook to work without modifying api --- .../apis/admissionregistration/validation/validation.go | 3 --- .../kubernetes/plugin/pkg/admission/webhook/admission.go | 9 ++++++++- .../plugin/pkg/admission/webhook/admission_test.go | 4 ++-- vendor/k8s.io/kubernetes/test/e2e/framework/framework.go | 3 ++- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/validation/validation.go b/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/validation/validation.go index d6e45cb292bc..a6e862366b06 100644 --- a/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/validation/validation.go +++ b/vendor/k8s.io/kubernetes/pkg/apis/admissionregistration/validation/validation.go @@ -189,9 +189,6 @@ func validateExternalAdmissionHook(hook *admissionregistration.ExternalAdmission if len(hook.Name) == 0 { allErrors = append(allErrors, field.Required(fldPath.Child("name"), "")) } - if errs := validationutil.IsDNS1123Subdomain(hook.Name); len(errs) > 0 { - allErrors = append(allErrors, field.Invalid(fldPath.Child("name"), hook.Name, strings.Join(errs, ","))) - } if len(strings.Split(hook.Name, ".")) < 3 { allErrors = append(allErrors, field.Invalid(fldPath.Child("name"), hook.Name, "should be a domain with at least two dots")) } diff --git a/vendor/k8s.io/kubernetes/plugin/pkg/admission/webhook/admission.go b/vendor/k8s.io/kubernetes/plugin/pkg/admission/webhook/admission.go index 7ed48812b9d1..8281825649b3 100644 --- a/vendor/k8s.io/kubernetes/plugin/pkg/admission/webhook/admission.go +++ b/vendor/k8s.io/kubernetes/plugin/pkg/admission/webhook/admission.go @@ -23,6 +23,7 @@ import ( "io" "net" "net/http" + "strings" "sync" "time" @@ -233,8 +234,14 @@ func (a *GenericAdmissionWebhook) callHook(ctx context.Context, h *v1alpha1.Exte if err != nil { return &ErrCallingWebhook{WebhookName: h.Name, Reason: err} } + + tokens := strings.SplitN(h.Name, "/", 2) + urlPath := "" + if len(tokens) == 2 { + urlPath = tokens[1] + } response := &admissionv1alpha1.AdmissionReview{} - if err := client.Post().Context(ctx).Body(&request).Do().Into(response); err != nil { + if err := client.Post().Context(ctx).AbsPath(urlPath).Body(&request).Do().Into(response); err != nil { return &ErrCallingWebhook{WebhookName: h.Name, Reason: err} } diff --git a/vendor/k8s.io/kubernetes/plugin/pkg/admission/webhook/admission_test.go b/vendor/k8s.io/kubernetes/plugin/pkg/admission/webhook/admission_test.go index 8dee1f3a055d..c423b6784257 100644 --- a/vendor/k8s.io/kubernetes/plugin/pkg/admission/webhook/admission_test.go +++ b/vendor/k8s.io/kubernetes/plugin/pkg/admission/webhook/admission_test.go @@ -174,7 +174,7 @@ func TestAdmit(t *testing.T) { "match & disallow": { hookSource: fakeHookSource{ hooks: []registrationv1alpha1.ExternalAdmissionHook{{ - Name: "disallow", + Name: "disallow/disallow", ClientConfig: ccfg, Rules: matchEverythingRules, }}, @@ -185,7 +185,7 @@ func TestAdmit(t *testing.T) { "match & disallow ii": { hookSource: fakeHookSource{ hooks: []registrationv1alpha1.ExternalAdmissionHook{{ - Name: "disallowReason", + Name: "disallowReason/disallowReason", ClientConfig: ccfg, Rules: matchEverythingRules, }}, diff --git a/vendor/k8s.io/kubernetes/test/e2e/framework/framework.go b/vendor/k8s.io/kubernetes/test/e2e/framework/framework.go index baa1e2a0451a..748c7009f8d9 100644 --- a/vendor/k8s.io/kubernetes/test/e2e/framework/framework.go +++ b/vendor/k8s.io/kubernetes/test/e2e/framework/framework.go @@ -137,12 +137,13 @@ func NewFramework(baseName string, options FrameworkOptions, client clientset.In // a k8s.io/client-go/pkg/client/restclient.Config. It's not a deep copy. Two // configs may share some common struct. func getClientRepoConfig(src *restclient.Config) (dst *clientreporestclient.Config) { - skippedFields := sets.NewString("Transport", "WrapTransport", "RateLimiter", "AuthConfigPersister") + skippedFields := sets.NewString("Transport", "WrapTransport", "RateLimiter", "AuthConfigPersister", "Dial") dst = &clientreporestclient.Config{} dst.Transport = src.Transport dst.WrapTransport = src.WrapTransport dst.RateLimiter = src.RateLimiter dst.AuthConfigPersister = src.AuthConfigPersister + dst.Dial = src.Dial sv := reflect.ValueOf(src).Elem() dv := reflect.ValueOf(dst).Elem() for i := 0; i < sv.NumField(); i++ {