From 355691d310803ea3a0cd8ff284a39ead38857602 Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Mon, 30 Jul 2018 18:35:51 -0700 Subject: [PATCH 1/4] Remove rest.ConnectRequest. Make apiserver pass connectRequest.Options directly to the admission layer. All the information in rest.ConnectRequest is present in admission attributes. --- plugin/pkg/admission/exec/admission.go | 12 ++--- plugin/pkg/admission/exec/admission_test.go | 7 +-- .../apiserver/pkg/endpoints/handlers/rest.go | 9 +--- .../apiserver/pkg/registry/rest/rest.go | 16 ------ .../registry/rest/zz_generated.deepcopy.go | 52 ------------------- 5 files changed, 9 insertions(+), 87 deletions(-) delete mode 100644 staging/src/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go diff --git a/plugin/pkg/admission/exec/admission.go b/plugin/pkg/admission/exec/admission.go index e16297136aa..00e3b6cfbca 100644 --- a/plugin/pkg/admission/exec/admission.go +++ b/plugin/pkg/admission/exec/admission.go @@ -20,10 +20,8 @@ import ( "fmt" "io" - "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apiserver/pkg/admission" - "k8s.io/apiserver/pkg/registry/rest" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" kubeapiserveradmission "k8s.io/kubernetes/pkg/kubeapiserver/admission" @@ -94,15 +92,15 @@ func NewDenyExecOnPrivileged() *DenyExec { // Validate makes an admission decision based on the request attributes func (d *DenyExec) Validate(a admission.Attributes) (err error) { - connectRequest, ok := a.GetObject().(*rest.ConnectRequest) - if !ok { - return errors.NewBadRequest("a connect request was received, but could not convert the request object.") + path := a.GetResource().Resource + if subresource := a.GetSubresource(); subresource != "" { + path = path + "/" + subresource } // Only handle exec or attach requests on pods - if connectRequest.ResourcePath != "pods/exec" && connectRequest.ResourcePath != "pods/attach" { + if path != "pods/exec" && path != "pods/attach" { return nil } - pod, err := d.client.Core().Pods(a.GetNamespace()).Get(connectRequest.Name, metav1.GetOptions{}) + pod, err := d.client.Core().Pods(a.GetNamespace()).Get(a.GetName(), metav1.GetOptions{}) if err != nil { return admission.NewForbidden(a, err) } diff --git a/plugin/pkg/admission/exec/admission_test.go b/plugin/pkg/admission/exec/admission_test.go index 8541a4266a8..89370d1c57c 100644 --- a/plugin/pkg/admission/exec/admission_test.go +++ b/plugin/pkg/admission/exec/admission_test.go @@ -22,7 +22,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apiserver/pkg/admission" - "k8s.io/apiserver/pkg/registry/rest" core "k8s.io/client-go/testing" api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake" @@ -122,8 +121,7 @@ func testAdmission(t *testing.T, pod *api.Pod, handler *DenyExec, shouldAccept b // pods/exec { - req := &rest.ConnectRequest{Name: pod.Name, ResourcePath: "pods/exec"} - err := handler.Validate(admission.NewAttributesRecord(req, nil, api.Kind("Pod").WithVersion("version"), "test", "name", api.Resource("pods").WithVersion("version"), "exec", admission.Connect, false, nil)) + err := handler.Validate(admission.NewAttributesRecord(nil, nil, api.Kind("Pod").WithVersion("version"), "test", pod.Name, api.Resource("pods").WithVersion("version"), "exec", admission.Connect, false, nil)) if shouldAccept && err != nil { t.Errorf("Unexpected error returned from admission handler: %v", err) } @@ -134,8 +132,7 @@ func testAdmission(t *testing.T, pod *api.Pod, handler *DenyExec, shouldAccept b // pods/attach { - req := &rest.ConnectRequest{Name: pod.Name, ResourcePath: "pods/attach"} - err := handler.Validate(admission.NewAttributesRecord(req, nil, api.Kind("Pod").WithVersion("version"), "test", "name", api.Resource("pods").WithVersion("version"), "attach", admission.Connect, false, nil)) + err := handler.Validate(admission.NewAttributesRecord(nil, nil, api.Kind("Pod").WithVersion("version"), "test", pod.Name, api.Resource("pods").WithVersion("version"), "attach", admission.Connect, false, nil)) if shouldAccept && err != nil { t.Errorf("Unexpected error returned from admission handler: %v", err) } diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go index aa376007237..8ae3ac04410 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest.go @@ -115,22 +115,17 @@ func ConnectResource(connecter rest.Connecter, scope RequestScope, admit admissi return } if admit != nil && admit.Handles(admission.Connect) { - connectRequest := &rest.ConnectRequest{ - Name: name, - Options: opts, - ResourcePath: restPath, - } userInfo, _ := request.UserFrom(ctx) // TODO: remove the mutating admission here as soon as we have ported all plugin that handle CONNECT if mutatingAdmission, ok := admit.(admission.MutationInterface); ok { - err = mutatingAdmission.Admit(admission.NewAttributesRecord(connectRequest, nil, scope.Kind, namespace, name, scope.Resource, scope.Subresource, admission.Connect, false, userInfo)) + err = mutatingAdmission.Admit(admission.NewAttributesRecord(opts, nil, scope.Kind, namespace, name, scope.Resource, scope.Subresource, admission.Connect, false, userInfo)) if err != nil { scope.err(err, w, req) return } } if validatingAdmission, ok := admit.(admission.ValidationInterface); ok { - err = validatingAdmission.Validate(admission.NewAttributesRecord(connectRequest, nil, scope.Kind, namespace, name, scope.Resource, scope.Subresource, admission.Connect, false, userInfo)) + err = validatingAdmission.Validate(admission.NewAttributesRecord(opts, nil, scope.Kind, namespace, name, scope.Resource, scope.Subresource, admission.Connect, false, userInfo)) if err != nil { scope.err(err, w, req) return diff --git a/staging/src/k8s.io/apiserver/pkg/registry/rest/rest.go b/staging/src/k8s.io/apiserver/pkg/registry/rest/rest.go index d3d1b2f8bcf..0c67ce3e35f 100644 --- a/staging/src/k8s.io/apiserver/pkg/registry/rest/rest.go +++ b/staging/src/k8s.io/apiserver/pkg/registry/rest/rest.go @@ -334,19 +334,3 @@ type StorageMetadata interface { // it is not nil. Only the type of the return object matters, the value will be ignored. ProducesObject(verb string) interface{} } - -// +k8s:deepcopy-gen=true -// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// ConnectRequest is an object passed to admission control for Connect operations -type ConnectRequest struct { - // Name is the name of the object on which the connect request was made - Name string - - // Options is the options object passed to the connect request. See the NewConnectOptions method on Connecter - Options runtime.Object - - // ResourcePath is the path for the resource in the REST server (ie. "pods/proxy") - ResourcePath string -} - -func (obj *ConnectRequest) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } diff --git a/staging/src/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go b/staging/src/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go deleted file mode 100644 index ef8c371ba0d..00000000000 --- a/staging/src/k8s.io/apiserver/pkg/registry/rest/zz_generated.deepcopy.go +++ /dev/null @@ -1,52 +0,0 @@ -// +build !ignore_autogenerated - -/* -Copyright The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// Code generated by deepcopy-gen. DO NOT EDIT. - -package rest - -import ( - runtime "k8s.io/apimachinery/pkg/runtime" -) - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConnectRequest) DeepCopyInto(out *ConnectRequest) { - *out = *in - if in.Options != nil { - out.Options = in.Options.DeepCopyObject() - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConnectRequest. -func (in *ConnectRequest) DeepCopy() *ConnectRequest { - if in == nil { - return nil - } - out := new(ConnectRequest) - in.DeepCopyInto(out) - return out -} - -// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. -func (in *ConnectRequest) DeepCopyObject() runtime.Object { - if c := in.DeepCopy(); c != nil { - return c - } - return nil -} From 64bd0e45894bbd97fe0c455a7d3350f5be5d15da Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Mon, 30 Jul 2018 19:19:21 -0700 Subject: [PATCH 2/4] Fix scope.Kind of CONNECT subresources. Make scope.Kind of pod/attach, pod/exec, pod/portforward, node/proxy, service/proxy to their respective subresource Kind, instead of the parent Kind. The kind is used by the admission webhook controller to determine how to convert the object. --- pkg/registry/core/node/rest/proxy.go | 4 ++-- pkg/registry/core/pod/rest/subresources.go | 16 ++++++++-------- pkg/registry/core/service/proxy.go | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkg/registry/core/node/rest/proxy.go b/pkg/registry/core/node/rest/proxy.go index 2701d3c0457..40b069978d1 100644 --- a/pkg/registry/core/node/rest/proxy.go +++ b/pkg/registry/core/node/rest/proxy.go @@ -45,9 +45,9 @@ var _ = rest.Connecter(&ProxyREST{}) var proxyMethods = []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"} -// New returns an empty service resource +// New returns an empty nodeProxyOptions object. func (r *ProxyREST) New() runtime.Object { - return &api.Node{} + return &api.NodeProxyOptions{} } // ConnectMethods returns the list of HTTP methods that can be proxied diff --git a/pkg/registry/core/pod/rest/subresources.go b/pkg/registry/core/pod/rest/subresources.go index 641237367a7..c914450ee6c 100644 --- a/pkg/registry/core/pod/rest/subresources.go +++ b/pkg/registry/core/pod/rest/subresources.go @@ -46,9 +46,9 @@ var _ = rest.Connecter(&ProxyREST{}) var proxyMethods = []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"} -// New returns an empty pod resource +// New returns an empty podProxyOptions object. func (r *ProxyREST) New() runtime.Object { - return &api.Pod{} + return &api.PodProxyOptions{} } // ConnectMethods returns the list of HTTP methods that can be proxied @@ -88,9 +88,9 @@ type AttachREST struct { // Implement Connecter var _ = rest.Connecter(&AttachREST{}) -// New creates a new Pod object +// New creates a new podAttachOptions object. func (r *AttachREST) New() runtime.Object { - return &api.Pod{} + return &api.PodAttachOptions{} } // Connect returns a handler for the pod exec proxy @@ -125,9 +125,9 @@ type ExecREST struct { // Implement Connecter var _ = rest.Connecter(&ExecREST{}) -// New creates a new Pod object +// New creates a new podExecOptions object. func (r *ExecREST) New() runtime.Object { - return &api.Pod{} + return &api.PodExecOptions{} } // Connect returns a handler for the pod exec proxy @@ -162,9 +162,9 @@ type PortForwardREST struct { // Implement Connecter var _ = rest.Connecter(&PortForwardREST{}) -// New returns an empty pod object +// New returns an empty podPortForwardOptions object func (r *PortForwardREST) New() runtime.Object { - return &api.Pod{} + return &api.PodPortForwardOptions{} } // NewConnectOptions returns the versioned object that represents the diff --git a/pkg/registry/core/service/proxy.go b/pkg/registry/core/service/proxy.go index 2ddf87df9ea..ced40db39dd 100644 --- a/pkg/registry/core/service/proxy.go +++ b/pkg/registry/core/service/proxy.go @@ -43,7 +43,7 @@ var proxyMethods = []string{"GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OP // New returns an empty service resource func (r *ProxyREST) New() runtime.Object { - return &api.Service{} + return &api.ServiceProxyOptions{} } // ConnectMethods returns the list of HTTP methods that can be proxied From 201111b644e5897243cad11d4d2eb375ee5f0c3f Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Tue, 31 Jul 2018 16:20:44 -0700 Subject: [PATCH 3/4] Added e2e test to check admission webhook works for pods/attach. --- test/e2e/apimachinery/webhook.go | 106 ++++++++++++++++++++++++++++--- test/images/webhook/VERSION | 2 +- test/images/webhook/main.go | 7 +- test/images/webhook/pods.go | 38 +++++++++++ test/utils/image/manifest.go | 2 +- 5 files changed, 142 insertions(+), 13 deletions(-) diff --git a/test/e2e/apimachinery/webhook.go b/test/e2e/apimachinery/webhook.go index a50dc41f237..ef942e18ad1 100644 --- a/test/e2e/apimachinery/webhook.go +++ b/test/e2e/apimachinery/webhook.go @@ -52,21 +52,23 @@ const ( roleBindingName = "webhook-auth-reader" // The webhook configuration names should not be reused between test instances. - crWebhookConfigName = "e2e-test-webhook-config-cr" - webhookConfigName = "e2e-test-webhook-config" - mutatingWebhookConfigName = "e2e-test-mutating-webhook-config" - podMutatingWebhookConfigName = "e2e-test-mutating-webhook-pod" - crMutatingWebhookConfigName = "e2e-test-mutating-webhook-config-cr" - webhookFailClosedConfigName = "e2e-test-webhook-fail-closed" - webhookForWebhooksConfigName = "e2e-test-webhook-for-webhooks-config" - removableValidatingHookName = "e2e-test-should-be-removable-validating-webhook-config" - removableMutatingHookName = "e2e-test-should-be-removable-mutating-webhook-config" - crdWebhookConfigName = "e2e-test-webhook-config-crd" + crWebhookConfigName = "e2e-test-webhook-config-cr" + webhookConfigName = "e2e-test-webhook-config" + attachingPodWebhookConfigName = "e2e-test-webhook-config-attaching-pod" + mutatingWebhookConfigName = "e2e-test-mutating-webhook-config" + podMutatingWebhookConfigName = "e2e-test-mutating-webhook-pod" + crMutatingWebhookConfigName = "e2e-test-mutating-webhook-config-cr" + webhookFailClosedConfigName = "e2e-test-webhook-fail-closed" + webhookForWebhooksConfigName = "e2e-test-webhook-for-webhooks-config" + removableValidatingHookName = "e2e-test-should-be-removable-validating-webhook-config" + removableMutatingHookName = "e2e-test-should-be-removable-mutating-webhook-config" + crdWebhookConfigName = "e2e-test-webhook-config-crd" skipNamespaceLabelKey = "skip-webhook-admission" skipNamespaceLabelValue = "yes" skippedNamespaceName = "exempted-namesapce" disallowedPodName = "disallowed-pod" + toBeAttachedPodName = "to-be-attached-pod" hangingPodName = "hanging-pod" disallowedConfigMapName = "disallowed-configmap" allowedConfigMapName = "allowed-configmap" @@ -117,6 +119,12 @@ var _ = SIGDescribe("AdmissionWebhook", func() { testWebhook(f) }) + It("Should be able to deny attaching pod", func() { + webhookCleanup := registerWebhookForAttachingPod(f, context) + defer webhookCleanup() + testAttachingPodWebhook(f) + }) + It("Should be able to deny custom resource creation", func() { testcrd, err := framework.CreateTestCRD(f) if err != nil { @@ -405,6 +413,53 @@ func registerWebhook(f *framework.Framework, context *certContext) func() { } } +func registerWebhookForAttachingPod(f *framework.Framework, context *certContext) func() { + client := f.ClientSet + By("Registering the webhook via the AdmissionRegistration API") + + namespace := f.Namespace.Name + configName := attachingPodWebhookConfigName + // A webhook that cannot talk to server, with fail-open policy + failOpenHook := failingWebhook(namespace, "fail-open.k8s.io") + policyIgnore := v1beta1.Ignore + failOpenHook.FailurePolicy = &policyIgnore + + _, err := client.AdmissionregistrationV1beta1().ValidatingWebhookConfigurations().Create(&v1beta1.ValidatingWebhookConfiguration{ + ObjectMeta: metav1.ObjectMeta{ + Name: configName, + }, + Webhooks: []v1beta1.Webhook{ + { + Name: "deny-attaching-pod.k8s.io", + Rules: []v1beta1.RuleWithOperations{{ + Operations: []v1beta1.OperationType{v1beta1.Connect}, + Rule: v1beta1.Rule{ + APIGroups: []string{""}, + APIVersions: []string{"v1"}, + Resources: []string{"pods/attach"}, + }, + }}, + ClientConfig: v1beta1.WebhookClientConfig{ + Service: &v1beta1.ServiceReference{ + Namespace: namespace, + Name: serviceName, + Path: strPtr("/pods/attach"), + }, + CABundle: context.signingCert, + }, + }, + }, + }) + framework.ExpectNoError(err, "registering webhook config %s with namespace %s", configName, namespace) + + // The webhook configuration is honored in 10s. + time.Sleep(10 * time.Second) + + return func() { + client.AdmissionregistrationV1beta1().ValidatingWebhookConfigurations().Delete(configName, nil) + } +} + func registerMutatingWebhookForConfigMap(f *framework.Framework, context *certContext) func() { client := f.ClientSet By("Registering the mutating configmap webhook via the AdmissionRegistration API") @@ -642,6 +697,21 @@ func testWebhook(f *framework.Framework) { Expect(err).To(BeNil()) } +func testAttachingPodWebhook(f *framework.Framework) { + By("create a pod") + client := f.ClientSet + pod := toBeAttachedPod(f) + _, err := client.CoreV1().Pods(f.Namespace.Name).Create(pod) + Expect(err).To(BeNil()) + + By("'kubectl attach' the pod, should be denied by the webhook") + _, err = framework.NewKubectlCommand("attach", fmt.Sprintf("--namespace=%v", f.Namespace.Name), pod.Name, "-i", "-c=container1").Exec() + Expect(err).NotTo(BeNil()) + if e, a := "attaching to pod 'to-be-attached-pod' is not allowed", err.Error(); !strings.Contains(a, e) { + framework.Failf("unexpected 'kubectl attach' error message. expected to contain %q, got %q", e, a) + } +} + // failingWebhook returns a webhook with rule of create configmaps, // but with an invalid client config so that server cannot communicate with it func failingWebhook(namespace, name string) v1beta1.Webhook { @@ -930,6 +1000,22 @@ func hangingPod(f *framework.Framework) *v1.Pod { } } +func toBeAttachedPod(f *framework.Framework) *v1.Pod { + return &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: toBeAttachedPodName, + }, + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "container1", + Image: imageutils.GetPauseImageName(), + }, + }, + }, + } +} + func nonCompliantConfigMap(f *framework.Framework) *v1.ConfigMap { return &v1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ diff --git a/test/images/webhook/VERSION b/test/images/webhook/VERSION index c4247db8f77..1b67ceb7853 100644 --- a/test/images/webhook/VERSION +++ b/test/images/webhook/VERSION @@ -1 +1 @@ -1.12v1 +1.12v2 diff --git a/test/images/webhook/main.go b/test/images/webhook/main.go index d453932ed4b..aca37e46abf 100644 --- a/test/images/webhook/main.go +++ b/test/images/webhook/main.go @@ -60,7 +60,7 @@ func serve(w http.ResponseWriter, r *http.Request, admit admitFunc) { return } - glog.V(2).Info(fmt.Sprintf("handling request: %v", body)) + glog.V(2).Info(fmt.Sprintf("handling request: %s", body)) // The AdmissionReview that was sent to the webhook requestedAdmissionReview := v1beta1.AdmissionReview{} @@ -99,6 +99,10 @@ func servePods(w http.ResponseWriter, r *http.Request) { serve(w, r, admitPods) } +func serveAttachingPods(w http.ResponseWriter, r *http.Request) { + serve(w, r, denySpecificAttachment) +} + func serveMutatePods(w http.ResponseWriter, r *http.Request) { serve(w, r, mutatePods) } @@ -130,6 +134,7 @@ func main() { http.HandleFunc("/always-deny", serveAlwaysDeny) http.HandleFunc("/pods", servePods) + http.HandleFunc("/pods/attach", serveAttachingPods) http.HandleFunc("/mutating-pods", serveMutatePods) http.HandleFunc("/configmaps", serveConfigmaps) http.HandleFunc("/mutating-configmaps", serveMutateConfigmaps) diff --git a/test/images/webhook/pods.go b/test/images/webhook/pods.go index 2a818501822..ee0bbb2e1ee 100644 --- a/test/images/webhook/pods.go +++ b/test/images/webhook/pods.go @@ -101,3 +101,41 @@ func mutatePods(ar v1beta1.AdmissionReview) *v1beta1.AdmissionResponse { } return &reviewResponse } + +// denySpecificAttachment denies `kubectl attach to-be-attached-pod -i -c=container1" +// or equivalent client requests. +func denySpecificAttachment(ar v1beta1.AdmissionReview) *v1beta1.AdmissionResponse { + glog.V(2).Info("handling attaching pods") + if ar.Request.Name != "to-be-attached-pod" { + return &v1beta1.AdmissionResponse{Allowed: true} + } + podResource := metav1.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"} + if e, a := podResource, ar.Request.Resource; e != a { + err := fmt.Errorf("expect resource to be %s, got %s", e, a) + glog.Error(err) + return toAdmissionResponse(err) + } + if e, a := "attach", ar.Request.SubResource; e != a { + err := fmt.Errorf("expect subresource to be %s, got %s", e, a) + glog.Error(err) + return toAdmissionResponse(err) + } + + raw := ar.Request.Object.Raw + podAttachOptions := corev1.PodAttachOptions{} + deserializer := codecs.UniversalDeserializer() + if _, _, err := deserializer.Decode(raw, nil, &podAttachOptions); err != nil { + glog.Error(err) + return toAdmissionResponse(err) + } + glog.V(2).Info(fmt.Sprintf("podAttachOptions=%#v\n", podAttachOptions)) + if !podAttachOptions.Stdin || podAttachOptions.Container != "container1" { + return &v1beta1.AdmissionResponse{Allowed: true} + } + return &v1beta1.AdmissionResponse{ + Allowed: false, + Result: &metav1.Status{ + Message: "attaching to pod 'to-be-attached-pod' is not allowed", + }, + } +} diff --git a/test/utils/image/manifest.go b/test/utils/image/manifest.go index f9dfc6a4c67..977cae33589 100644 --- a/test/utils/image/manifest.go +++ b/test/utils/image/manifest.go @@ -49,7 +49,7 @@ func (i *ImageConfig) SetVersion(version string) { } var ( - AdmissionWebhook = ImageConfig{e2eRegistry, "webhook", "1.12v1", false} + AdmissionWebhook = ImageConfig{e2eRegistry, "webhook", "1.12v2", false} APIServer = ImageConfig{e2eRegistry, "sample-apiserver", "1.0", false} AppArmorLoader = ImageConfig{gcRegistry, "apparmor-loader", "0.1", false} BusyBox = ImageConfig{gcRegistry, "busybox", "1.24", false} From d89c8dd8c0bf1a7be84f50d1a0b9a9a47b6b5d69 Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Tue, 31 Jul 2018 16:27:23 -0700 Subject: [PATCH 4/4] generated --- api/openapi-spec/swagger.json | 114 +++++++++--------- api/swagger-spec/v1.json | 96 +++++++-------- docs/api-reference/v1/operations.html | 72 +++++------ plugin/pkg/admission/exec/BUILD | 3 - .../k8s.io/apiserver/pkg/registry/rest/BUILD | 1 - 5 files changed, 141 insertions(+), 145 deletions(-) diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 535034ef564..b0102de8e2d 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -4188,7 +4188,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodAttachOptions", "version": "v1" } }, @@ -4221,7 +4221,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodAttachOptions", "version": "v1" } }, @@ -4236,7 +4236,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Pod", + "description": "name of the PodAttachOptions", "name": "name", "in": "path", "required": true @@ -4477,7 +4477,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodExecOptions", "version": "v1" } }, @@ -4510,7 +4510,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodExecOptions", "version": "v1" } }, @@ -4532,7 +4532,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Pod", + "description": "name of the PodExecOptions", "name": "name", "in": "path", "required": true @@ -4717,7 +4717,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodPortForwardOptions", "version": "v1" } }, @@ -4750,7 +4750,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodPortForwardOptions", "version": "v1" } }, @@ -4758,7 +4758,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Pod", + "description": "name of the PodPortForwardOptions", "name": "name", "in": "path", "required": true @@ -4810,7 +4810,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -4843,7 +4843,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -4876,7 +4876,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -4909,7 +4909,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -4942,7 +4942,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -4975,7 +4975,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5008,7 +5008,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5016,7 +5016,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "name": "name", "in": "path", "required": true @@ -5068,7 +5068,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5101,7 +5101,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5134,7 +5134,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5167,7 +5167,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5200,7 +5200,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5233,7 +5233,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5266,7 +5266,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Pod", + "kind": "PodProxyOptions", "version": "v1" } }, @@ -5274,7 +5274,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "name": "name", "in": "path", "required": true @@ -8995,7 +8995,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9028,7 +9028,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9061,7 +9061,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9094,7 +9094,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9127,7 +9127,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9160,7 +9160,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9193,7 +9193,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9201,7 +9201,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "name": "name", "in": "path", "required": true @@ -9253,7 +9253,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9286,7 +9286,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9319,7 +9319,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9352,7 +9352,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9385,7 +9385,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9418,7 +9418,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9451,7 +9451,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Service", + "kind": "ServiceProxyOptions", "version": "v1" } }, @@ -9459,7 +9459,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "name": "name", "in": "path", "required": true @@ -10651,7 +10651,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10684,7 +10684,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10717,7 +10717,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10750,7 +10750,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10783,7 +10783,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10816,7 +10816,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10849,7 +10849,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10857,7 +10857,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "name": "name", "in": "path", "required": true @@ -10901,7 +10901,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10934,7 +10934,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -10967,7 +10967,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -11000,7 +11000,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -11033,7 +11033,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -11066,7 +11066,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -11099,7 +11099,7 @@ "x-kubernetes-action": "connect", "x-kubernetes-group-version-kind": { "group": "", - "kind": "Node", + "kind": "NodeProxyOptions", "version": "v1" } }, @@ -11107,7 +11107,7 @@ { "uniqueItems": true, "type": "string", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "name": "name", "in": "path", "required": true diff --git a/api/swagger-spec/v1.json b/api/swagger-spec/v1.json index eb5f6224e6b..25a8e10a4b2 100644 --- a/api/swagger-spec/v1.json +++ b/api/swagger-spec/v1.json @@ -5704,7 +5704,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false } @@ -5734,7 +5734,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false } @@ -5764,7 +5764,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false } @@ -5794,7 +5794,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false } @@ -5824,7 +5824,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false } @@ -5854,7 +5854,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false } @@ -5884,7 +5884,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false } @@ -5920,7 +5920,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false }, @@ -5958,7 +5958,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false }, @@ -5996,7 +5996,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false }, @@ -6034,7 +6034,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false }, @@ -6072,7 +6072,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false }, @@ -6110,7 +6110,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false }, @@ -6148,7 +6148,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Node", + "description": "name of the NodeProxyOptions", "required": true, "allowMultiple": false }, @@ -9371,7 +9371,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodAttachOptions", "required": true, "allowMultiple": false } @@ -9441,7 +9441,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodAttachOptions", "required": true, "allowMultiple": false } @@ -9667,7 +9667,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodExecOptions", "required": true, "allowMultiple": false } @@ -9745,7 +9745,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodExecOptions", "required": true, "allowMultiple": false } @@ -9899,7 +9899,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodPortForwardOptions", "required": true, "allowMultiple": false } @@ -9937,7 +9937,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodPortForwardOptions", "required": true, "allowMultiple": false } @@ -9981,7 +9981,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false } @@ -10019,7 +10019,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false } @@ -10057,7 +10057,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false } @@ -10095,7 +10095,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false } @@ -10133,7 +10133,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false } @@ -10171,7 +10171,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false } @@ -10209,7 +10209,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false } @@ -10253,7 +10253,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false }, @@ -10299,7 +10299,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false }, @@ -10345,7 +10345,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false }, @@ -10391,7 +10391,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false }, @@ -10437,7 +10437,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false }, @@ -10483,7 +10483,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false }, @@ -10529,7 +10529,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Pod", + "description": "name of the PodProxyOptions", "required": true, "allowMultiple": false }, @@ -17068,7 +17068,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false } @@ -17106,7 +17106,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false } @@ -17144,7 +17144,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false } @@ -17182,7 +17182,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false } @@ -17220,7 +17220,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false } @@ -17258,7 +17258,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false } @@ -17296,7 +17296,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false } @@ -17340,7 +17340,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false }, @@ -17386,7 +17386,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false }, @@ -17432,7 +17432,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false }, @@ -17478,7 +17478,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false }, @@ -17524,7 +17524,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false }, @@ -17570,7 +17570,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false }, @@ -17616,7 +17616,7 @@ "type": "string", "paramType": "path", "name": "name", - "description": "name of the Service", + "description": "name of the ServiceProxyOptions", "required": true, "allowMultiple": false }, diff --git a/docs/api-reference/v1/operations.html b/docs/api-reference/v1/operations.html index 6189c0aebb6..849beb85256 100755 --- a/docs/api-reference/v1/operations.html +++ b/docs/api-reference/v1/operations.html @@ -8617,7 +8617,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodAttachOptions

true

string

@@ -8762,7 +8762,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodAttachOptions

true

string

@@ -9189,7 +9189,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodExecOptions

true

string

@@ -9342,7 +9342,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodExecOptions

true

string

@@ -9633,7 +9633,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodPortForwardOptions

true

string

@@ -9746,7 +9746,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodPortForwardOptions

true

string

@@ -9859,7 +9859,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -9972,7 +9972,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -10085,7 +10085,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -10198,7 +10198,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -10311,7 +10311,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -10424,7 +10424,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -10545,7 +10545,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -10666,7 +10666,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -10787,7 +10787,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -10908,7 +10908,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Pod

+

name of the PodProxyOptions

true

string

@@ -18695,7 +18695,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -18808,7 +18808,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -18921,7 +18921,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -19034,7 +19034,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -19147,7 +19147,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -19260,7 +19260,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -19381,7 +19381,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -19502,7 +19502,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -19623,7 +19623,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -19744,7 +19744,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Service

+

name of the ServiceProxyOptions

true

string

@@ -22252,7 +22252,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -22357,7 +22357,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -22462,7 +22462,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -22567,7 +22567,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -22672,7 +22672,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -22777,7 +22777,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -22890,7 +22890,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -23003,7 +23003,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -23116,7 +23116,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

@@ -23229,7 +23229,7 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }

PathParameter

name

-

name of the Node

+

name of the NodeProxyOptions

true

string

diff --git a/plugin/pkg/admission/exec/BUILD b/plugin/pkg/admission/exec/BUILD index a131fa87950..aed101de94d 100644 --- a/plugin/pkg/admission/exec/BUILD +++ b/plugin/pkg/admission/exec/BUILD @@ -14,10 +14,8 @@ go_library( "//pkg/apis/core:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/kubeapiserver/admission:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apiserver/pkg/admission:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library", ], ) @@ -31,7 +29,6 @@ go_test( "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", "//staging/src/k8s.io/apiserver/pkg/admission:go_default_library", - "//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library", "//staging/src/k8s.io/client-go/testing:go_default_library", ], ) diff --git a/staging/src/k8s.io/apiserver/pkg/registry/rest/BUILD b/staging/src/k8s.io/apiserver/pkg/registry/rest/BUILD index d74a0469ffa..7ad6f3b6fa8 100644 --- a/staging/src/k8s.io/apiserver/pkg/registry/rest/BUILD +++ b/staging/src/k8s.io/apiserver/pkg/registry/rest/BUILD @@ -29,7 +29,6 @@ go_library( "rest.go", "table.go", "update.go", - "zz_generated.deepcopy.go", ], importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/registry/rest", importpath = "k8s.io/apiserver/pkg/registry/rest",