Skip to content

Instantly share code, notes, and snippets.

@isutton
Created February 5, 2019 15:33
Show Gist options
  • Save isutton/fdb0e18acf1dcdd614f6e193ee8a151e to your computer and use it in GitHub Desktop.
Save isutton/fdb0e18acf1dcdd614f6e193ee8a151e to your computer and use it in GitHub Desktop.
  • staging/src/k8s.io/apiserver/pkg/server/options/admission.go:143
genericInitializer := initializer.New(clientset, informers, c.Authorization.Authorizer, scheme)
  • vendor/k8s.io/apiserver/pkg/admission/initializer/initializer.go:65
if wants, ok := plugin.(WantsScheme); ok {
    wants.SetScheme(i.scheme)
}
  • vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/generic/webhook.go:37
type Webhook struct {
    *admission.Handler

    sourceFactory sourceFactory

    hookSource       Source
    clientManager    *config.ClientManager
    convertor        *convertor
    namespaceMatcher *namespace.Matcher
    dispatcher       Dispatcher
}
  • vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/generic/webhook.go:76
return &Webhook{
    Handler:          handler,
    sourceFactory:    sourceFactory,
    clientManager:    &cm,
    convertor:        &convertor{},
    namespaceMatcher: &namespace.Matcher{},
    dispatcher:       dispatcherFactory(&cm),
}, nil
  • vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/generic/webhook.go:188
if oldObj := attr.GetOldObject(); oldObj != nil {
    out, err := a.convertor.ConvertToGVK(oldObj, attr.GetKind())
    if err != nil {
        return apierrors.NewInternalError(err)
    }
    versionedAttr.VersionedOldObject = out
}
  • vendor/k8s.io/apiserver/pkg/admission/plugin/webhook/generic/conversion.go:32
// ConvertToGVK converts object to the desired gvk.
func (c *convertor) ConvertToGVK(obj runtime.Object, gvk schema.GroupVersionKind) (runtime.Object, error) {
    // Unlike other resources, custom resources do not have internal version, so
    // if obj is a custom resource, it should not need conversion.
    if obj.GetObjectKind().GroupVersionKind() == gvk {
        return obj, nil
    }
    out, err := c.Scheme.New(gvk)
    if err != nil {
        return nil, err
    }
    err = c.Scheme.Convert(obj, out, nil)
    if err != nil {
        return nil, err
    }
    return out, nil
}
  • vendor/k8s.io/apimachinery/pkg/runtime/scheme.go:288
func (s *Scheme) New(kind schema.GroupVersionKind) (Object, error) {
	if t, exists := s.gvkToType[kind]; exists {
		return reflect.New(t).Interface().(Object), nil
	}

	if t, exists := s.unversionedKinds[kind.Kind]; exists {
		return reflect.New(t).Interface().(Object), nil
	}
	return nil, NewNotRegisteredErrForKind(kind)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment