This commit is contained in:
Victor Agababov 2020-09-29 14:10:29 -07:00 committed by GitHub
parent a371418524
commit 1e373a9e5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
32 changed files with 65 additions and 67 deletions

View File

@ -41,7 +41,7 @@ func configOrDie() *rest.Config {
cfg, err := getConfig(*serverURL, *kubeconfig) cfg, err := getConfig(*serverURL, *kubeconfig)
if err != nil { if err != nil {
panic(fmt.Sprintf("Error building kubeconfig: %v", err)) panic(fmt.Sprint("Error building kubeconfig:", err))
} }
return cfg return cfg

View File

@ -50,9 +50,9 @@ func main() {
logger.Infof("Migrating %d group resources", len(grs)) logger.Infof("Migrating %d group resources", len(grs))
for _, gr := range grs { for _, gr := range grs {
logger.Infof("Migrating group resource %s", gr) logger.Info("Migrating group resource ", gr)
if err := migrator.Migrate(ctx, gr); err != nil { if err := migrator.Migrate(ctx, gr); err != nil {
logger.Fatalf("Failed to migrate: %s", err) logger.Fatal("Failed to migrate: ", err)
} }
} }

View File

@ -17,25 +17,25 @@ limitations under the License.
package apis package apis
import ( import (
"reflect"
"strings" "strings"
"testing" "testing"
"github.com/google/go-cmp/cmp"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
func TestValidateObjectMetadata(t *testing.T) { func TestValidateObjectMetadata(t *testing.T) {
cases := []struct { tests := []struct {
name string name string
objectMeta metav1.Object objectMeta metav1.Object
expectErr error want error
}{{ }{{
name: "invalid name - dots", name: "invalid name - dots",
objectMeta: &metav1.ObjectMeta{ objectMeta: &metav1.ObjectMeta{
Name: "do.not.use.dots", Name: "do.not.use.dots",
}, },
expectErr: &FieldError{ want: &FieldError{
Message: "not a DNS 1035 label: [a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')]", Message: "not a DNS 1035 label: [a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')]",
Paths: []string{"name"}, Paths: []string{"name"},
}, },
@ -44,7 +44,7 @@ func TestValidateObjectMetadata(t *testing.T) {
objectMeta: &metav1.ObjectMeta{ objectMeta: &metav1.ObjectMeta{
Name: strings.Repeat("a", 64), Name: strings.Repeat("a", 64),
}, },
expectErr: &FieldError{ want: &FieldError{
Message: "not a DNS 1035 label: [must be no more than 63 characters]", Message: "not a DNS 1035 label: [must be no more than 63 characters]",
Paths: []string{"name"}, Paths: []string{"name"},
}, },
@ -53,7 +53,7 @@ func TestValidateObjectMetadata(t *testing.T) {
objectMeta: &metav1.ObjectMeta{ objectMeta: &metav1.ObjectMeta{
Name: "some-name-", Name: "some-name-",
}, },
expectErr: &FieldError{ want: &FieldError{
Message: "not a DNS 1035 label: [a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')]", Message: "not a DNS 1035 label: [a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')]",
Paths: []string{"name"}, Paths: []string{"name"},
}, },
@ -62,19 +62,19 @@ func TestValidateObjectMetadata(t *testing.T) {
objectMeta: &metav1.ObjectMeta{ objectMeta: &metav1.ObjectMeta{
GenerateName: "some-name", GenerateName: "some-name",
}, },
expectErr: (*FieldError)(nil), want: (*FieldError)(nil),
}, { }, {
name: "valid generateName - trailing dash", name: "valid generateName - trailing dash",
objectMeta: &metav1.ObjectMeta{ objectMeta: &metav1.ObjectMeta{
GenerateName: "some-name-", GenerateName: "some-name-",
}, },
expectErr: (*FieldError)(nil), want: (*FieldError)(nil),
}, { }, {
name: "invalid generateName - dots", name: "invalid generateName - dots",
objectMeta: &metav1.ObjectMeta{ objectMeta: &metav1.ObjectMeta{
GenerateName: "do.not.use.dots", GenerateName: "do.not.use.dots",
}, },
expectErr: &FieldError{ want: &FieldError{
Message: "not a DNS 1035 label prefix: [a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')]", Message: "not a DNS 1035 label prefix: [a DNS-1035 label must consist of lower case alphanumeric characters or '-', start with an alphabetic character, and end with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for validation is '[a-z]([-a-z0-9]*[a-z0-9])?')]",
Paths: []string{"generateName"}, Paths: []string{"generateName"},
}, },
@ -83,26 +83,24 @@ func TestValidateObjectMetadata(t *testing.T) {
objectMeta: &metav1.ObjectMeta{ objectMeta: &metav1.ObjectMeta{
GenerateName: strings.Repeat("a", 64), GenerateName: strings.Repeat("a", 64),
}, },
expectErr: &FieldError{ want: &FieldError{
Message: "not a DNS 1035 label prefix: [must be no more than 63 characters]", Message: "not a DNS 1035 label prefix: [must be no more than 63 characters]",
Paths: []string{"generateName"}, Paths: []string{"generateName"},
}, },
}, { }, {
name: "missing name and generateName", name: "missing name and generateName",
objectMeta: &metav1.ObjectMeta{}, objectMeta: &metav1.ObjectMeta{},
expectErr: &FieldError{ want: &FieldError{
Message: "name or generateName is required", Message: "name or generateName is required",
Paths: []string{"name"}, Paths: []string{"name"},
}, },
}} }}
for _, c := range cases { for _, tc := range tests {
t.Run(c.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
if err := ValidateObjectMetadata(tc.objectMeta); !cmp.Equal(tc.want.Error(), err.Error()) {
err := ValidateObjectMetadata(c.objectMeta) t.Errorf("Expected: '%#v', Got: '%#v', diff(-want,+got)\n%s", tc.want, err,
cmp.Diff(tc.want.Error(), err.Error()))
if !reflect.DeepEqual(c.expectErr, err) {
t.Errorf("Expected: '%#v', Got: '%#v'", c.expectErr, err)
} }
}) })
} }
@ -171,8 +169,8 @@ func TestServiceAnnotationUpdate(t *testing.T) {
for _, test := range tests { for _, test := range tests {
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
err := ValidateCreatorAndModifier(test.prev, test.this, test.oldAnnotation, test.newAnnotation, groupName) err := ValidateCreatorAndModifier(test.prev, test.this, test.oldAnnotation, test.newAnnotation, groupName)
if !reflect.DeepEqual(test.want.Error(), err.Error()) { if !cmp.Equal(test.want.Error(), err.Error()) {
t.Errorf("Expected: '%#v', Got: '%#v'", test.want, err) t.Errorf("Expected: '%#v', Got: '%#v', diff(-want,+got)\n%s", test.want, err, cmp.Diff(test.want, err))
} }
}) })
} }

View File

@ -60,7 +60,7 @@ func (g *clientGenerator) Imports(c *generator.Context) (imports []string) {
func (g *clientGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *clientGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"clientSetNewForConfigOrDie": c.Universe.Function(types.Name{Package: g.clientSetPackage, Name: "NewForConfigOrDie"}), "clientSetNewForConfigOrDie": c.Universe.Function(types.Name{Package: g.clientSetPackage, Name: "NewForConfigOrDie"}),

View File

@ -74,7 +74,7 @@ func (g *duckGenerator) Imports(c *generator.Context) (imports []string) {
func (g *duckGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *duckGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"group": namer.IC(g.groupGoName), "group": namer.IC(g.groupGoName),

View File

@ -61,7 +61,7 @@ func (g *factoryGenerator) Imports(c *generator.Context) (imports []string) {
func (g *factoryGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *factoryGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"cachingClientGet": c.Universe.Type(types.Name{Package: g.cachingClientSetPackage, Name: "Get"}), "cachingClientGet": c.Universe.Type(types.Name{Package: g.cachingClientSetPackage, Name: "Get"}),

View File

@ -62,7 +62,7 @@ func (g *fakeClientGenerator) Imports(c *generator.Context) (imports []string) {
func (g *fakeClientGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *fakeClientGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"clientKey": c.Universe.Type(types.Name{Package: g.clientInjectionPkg, Name: "Key"}), "clientKey": c.Universe.Type(types.Name{Package: g.clientInjectionPkg, Name: "Key"}),

View File

@ -76,7 +76,7 @@ func (g *fakeDuckGenerator) Imports(c *generator.Context) (imports []string) {
func (g *fakeDuckGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *fakeDuckGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"withDuck": c.Universe.Type(types.Name{Package: g.duckInjectionPkg, Name: "WithDuck"}), "withDuck": c.Universe.Type(types.Name{Package: g.duckInjectionPkg, Name: "WithDuck"}),

View File

@ -63,7 +63,7 @@ func (g *fakeFactoryGenerator) Imports(c *generator.Context) (imports []string)
func (g *fakeFactoryGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *fakeFactoryGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"factoryKey": c.Universe.Type(types.Name{Package: g.factoryInjectionPkg, Name: "Key"}), "factoryKey": c.Universe.Type(types.Name{Package: g.factoryInjectionPkg, Name: "Key"}),

View File

@ -77,7 +77,7 @@ func (g *fakeInformerGenerator) Imports(c *generator.Context) (imports []string)
func (g *fakeInformerGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *fakeInformerGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"informerKey": c.Universe.Type(types.Name{Package: g.informerInjectionPkg, Name: "Key"}), "informerKey": c.Universe.Type(types.Name{Package: g.informerInjectionPkg, Name: "Key"}),

View File

@ -76,7 +76,7 @@ func (g *injectionGenerator) Imports(c *generator.Context) (imports []string) {
func (g *injectionGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *injectionGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"group": namer.IC(g.groupGoName), "group": namer.IC(g.groupGoName),

View File

@ -63,7 +63,7 @@ func (g *reconcilerControllerGenerator) Imports(c *generator.Context) (imports [
func (g *reconcilerControllerGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *reconcilerControllerGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"type": t, "type": t,

View File

@ -60,7 +60,7 @@ func (g *reconcilerControllerStubGenerator) Imports(c *generator.Context) (impor
func (g *reconcilerControllerStubGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *reconcilerControllerStubGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"type": t, "type": t,

View File

@ -67,7 +67,7 @@ func (g *reconcilerReconcilerGenerator) Imports(c *generator.Context) (imports [
func (g *reconcilerReconcilerGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *reconcilerReconcilerGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"type": t, "type": t,

View File

@ -57,7 +57,7 @@ func (g *reconcilerReconcilerStubGenerator) Imports(c *generator.Context) (impor
func (g *reconcilerReconcilerStubGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *reconcilerReconcilerStubGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"type": t, "type": t,

View File

@ -54,7 +54,7 @@ func (g *reconcilerStateGenerator) Imports(c *generator.Context) (imports []stri
func (g *reconcilerStateGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error { func (g *reconcilerStateGenerator) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
sw := generator.NewSnippetWriter(w, c, "{{", "}}") sw := generator.NewSnippetWriter(w, c, "{{", "}}")
klog.V(5).Infof("processing type %v", t) klog.V(5).Info("processing type ", t)
m := map[string]interface{}{ m := map[string]interface{}{
"type": t, "type": t,

View File

@ -239,7 +239,7 @@ func MainWithConfig(ctx context.Context, component string, cfg *rest.Config, cto
// Set up leader election config // Set up leader election config
leaderElectionConfig, err := GetLeaderElectionConfig(ctx) leaderElectionConfig, err := GetLeaderElectionConfig(ctx)
if err != nil { if err != nil {
logger.Fatalf("Error loading leader election configuration: %v", err) logger.Fatal("Error loading leader election configuration: ", err)
} }
if !IsHADisabled(ctx) { if !IsHADisabled(ctx) {

View File

@ -200,7 +200,7 @@ func newStackdriverExporter(config *metricsConfig, logger *zap.SugaredLogger) (v
logger.Errorw("Failed to create the Stackdriver exporter: ", zap.Error(err)) logger.Errorw("Failed to create the Stackdriver exporter: ", zap.Error(err))
return nil, nil, err return nil, nil, err
} }
logger.Infof("Created Opencensus Stackdriver exporter with config %v", config) logger.Info("Created Opencensus Stackdriver exporter with config ", config)
// We have to return a ResourceExporterFactory here to enable tracking resources, even though we always poll for them. // We have to return a ResourceExporterFactory here to enable tracking resources, even though we always poll for them.
return &pollOnlySDExporter{e}, return &pollOnlySDExporter{e},
func(r *resource.Resource) (view.Exporter, error) { return &pollOnlySDExporter{}, nil }, func(r *resource.Resource) (view.Exporter, error) { return &pollOnlySDExporter{}, nil },

View File

@ -56,7 +56,7 @@ func NewHandler(logger *zap.SugaredLogger, enableProfiling bool) *Handler {
mux.HandleFunc(pprofPrefix+"symbol", pprof.Symbol) mux.HandleFunc(pprofPrefix+"symbol", pprof.Symbol)
mux.HandleFunc(pprofPrefix+"trace", pprof.Trace) mux.HandleFunc(pprofPrefix+"trace", pprof.Trace)
logger.Infof("Profiling enabled: %t", enableProfiling) logger.Info("Profiling enabled: ", enableProfiling)
return &Handler{ return &Handler{
enabled: atomic.NewBool(enableProfiling), enabled: atomic.NewBool(enableProfiling),
handler: mux, handler: mux,

View File

@ -57,7 +57,7 @@ func Retrying(rc spoof.ResponseChecker, codes ...int) spoof.ResponseChecker {
for _, code := range codes { for _, code := range codes {
if resp.StatusCode == code { if resp.StatusCode == code {
// Returning (false, nil) causes SpoofingClient.Poll to retry. // Returning (false, nil) causes SpoofingClient.Poll to retry.
// sc.logger.Infof("Retrying for code %v", resp.StatusCode) // sc.logger.Info("Retrying for code ", resp.StatusCode)
return false, nil return false, nil
} }
} }

View File

@ -211,7 +211,7 @@ type TimeoutError struct {
} }
func (t *TimeoutError) Error() string { func (t *TimeoutError) Error() string {
return fmt.Sprintf("timeout getting JSONTrace, most recent error: %v", t.lastErr) return fmt.Sprint("timeout getting JSONTrace, most recent error:", t.lastErr)
} }
// jsonTrace gets a trace from Zipkin and returns it. Errors returned from this function should be // jsonTrace gets a trace from Zipkin and returns it. Errors returned from this function should be

View File

@ -90,7 +90,7 @@ func admissionHandler(rootLogger *zap.SugaredLogger, stats StatsReporter, c Admi
var review admissionv1.AdmissionReview var review admissionv1.AdmissionReview
if err := json.NewDecoder(r.Body).Decode(&review); err != nil { if err := json.NewDecoder(r.Body).Decode(&review); err != nil {
http.Error(w, fmt.Sprintf("could not decode body: %v", err), http.StatusBadRequest) http.Error(w, fmt.Sprint("could not decode body:", err), http.StatusBadRequest)
return return
} }
@ -132,7 +132,7 @@ func admissionHandler(rootLogger *zap.SugaredLogger, stats StatsReporter, c Admi
logger.Debugf("AdmissionReview patch={ type: %s, body: %s }", patchType, string(reviewResponse.Patch)) logger.Debugf("AdmissionReview patch={ type: %s, body: %s }", patchType, string(reviewResponse.Patch))
if err := json.NewEncoder(w).Encode(response); err != nil { if err := json.NewEncoder(w).Encode(response); err != nil {
http.Error(w, fmt.Sprintf("could not encode response: %v", err), http.StatusInternalServerError) http.Error(w, fmt.Sprint("could not encode response:", err), http.StatusInternalServerError)
return return
} }

View File

@ -83,11 +83,11 @@ func (r *reconciler) reconcileCertificate(ctx context.Context) error {
// Check the expiration date of the certificate to see if it needs to be updated // Check the expiration date of the certificate to see if it needs to be updated
cert, err := tls.X509KeyPair(secret.Data[certresources.ServerCert], secret.Data[certresources.ServerKey]) cert, err := tls.X509KeyPair(secret.Data[certresources.ServerCert], secret.Data[certresources.ServerKey])
if err != nil { if err != nil {
logger.Warnf("Error creating pem from certificate and key: %v", err) logger.Warn("Error creating pem from certificate and key: ", err)
} else { } else {
certData, err := x509.ParseCertificate(cert.Certificate[0]) certData, err := x509.ParseCertificate(cert.Certificate[0])
if err != nil { if err != nil {
logger.Errorf("Error parsing certificate: %v", err) logger.Error("Error parsing certificate: ", err)
} else if time.Now().Add(oneWeek).Before(certData.NotAfter) { } else if time.Now().Add(oneWeek).Before(certData.NotAfter) {
return nil return nil
} }

View File

@ -77,7 +77,7 @@ func (ac *reconciler) Reconcile(ctx context.Context, key string) error {
secret, err := ac.secretlister.Secrets(system.Namespace()).Get(ac.secretName) secret, err := ac.secretlister.Secrets(system.Namespace()).Get(ac.secretName)
if err != nil { if err != nil {
logger.Errorf("Error fetching secret: %v", err) logger.Error("Error fetching secret: ", err)
return err return err
} }
@ -100,7 +100,7 @@ func (ac *reconciler) Admit(ctx context.Context, request *admissionv1.AdmissionR
switch request.Operation { switch request.Operation {
case admissionv1.Create, admissionv1.Update: case admissionv1.Create, admissionv1.Update:
default: default:
logger.Infof("Unhandled webhook operation, letting it through %v", request.Operation) logger.Info("Unhandled webhook operation, letting it through ", request.Operation)
return &admissionv1.AdmissionResponse{Allowed: true} return &admissionv1.AdmissionResponse{Allowed: true}
} }
@ -182,7 +182,7 @@ func (ac *reconciler) validate(ctx context.Context, req *admissionv1.AdmissionRe
resourceGVK := corev1.SchemeGroupVersion.WithKind("ConfigMap") resourceGVK := corev1.SchemeGroupVersion.WithKind("ConfigMap")
if gvk != resourceGVK { if gvk != resourceGVK {
logger.Errorf("Unhandled kind: %v", gvk) logger.Error("Unhandled kind: ", gvk)
return fmt.Errorf("unhandled kind: %v", gvk) return fmt.Errorf("unhandled kind: %v", gvk)
} }

View File

@ -43,7 +43,7 @@ func conversionHandler(rootLogger *zap.SugaredLogger, _ StatsReporter, c Convers
var review apixv1.ConversionReview var review apixv1.ConversionReview
if err := json.NewDecoder(r.Body).Decode(&review); err != nil { if err := json.NewDecoder(r.Body).Decode(&review); err != nil {
http.Error(w, fmt.Sprintf("could not decode body: %v", err), http.StatusBadRequest) http.Error(w, fmt.Sprint("could not decode body:", err), http.StatusBadRequest)
return return
} }
@ -62,7 +62,7 @@ func conversionHandler(rootLogger *zap.SugaredLogger, _ StatsReporter, c Convers
} }
if err := json.NewEncoder(w).Encode(response); err != nil { if err := json.NewEncoder(w).Encode(response); err != nil {
http.Error(w, fmt.Sprintf("could not encode response: %v", err), http.StatusInternalServerError) http.Error(w, fmt.Sprint("could not encode response:", err), http.StatusInternalServerError)
return return
} }

View File

@ -164,7 +164,7 @@ func (ac *Reconciler) Reconcile(ctx context.Context, key string) error {
// Look up the webhook secret, and fetch the CA cert bundle. // Look up the webhook secret, and fetch the CA cert bundle.
secret, err := ac.SecretLister.Secrets(system.Namespace()).Get(ac.SecretName) secret, err := ac.SecretLister.Secrets(system.Namespace()).Get(ac.SecretName)
if err != nil { if err != nil {
logging.FromContext(ctx).Errorf("Error fetching secret: %v", err) logging.FromContext(ctx).Error("Error fetching secret: ", err)
return err return err
} }
caCert, ok := secret.Data[certresources.CACert] caCert, ok := secret.Data[certresources.CACert]
@ -186,7 +186,7 @@ func (ac *Reconciler) Admit(ctx context.Context, request *admissionv1.AdmissionR
switch request.Operation { switch request.Operation {
case admissionv1.Create, admissionv1.Update: case admissionv1.Create, admissionv1.Update:
default: default:
logging.FromContext(ctx).Infof("Unhandled webhook operation, letting it through %v", request.Operation) logging.FromContext(ctx).Info("Unhandled webhook operation, letting it through ", request.Operation)
return &admissionv1.AdmissionResponse{Allowed: true} return &admissionv1.AdmissionResponse{Allowed: true}
} }

View File

@ -110,7 +110,7 @@ func (r *BaseReconciler) Reconcile(ctx context.Context, key string) error {
// Convert the namespace/name string into a distinct namespace and name // Convert the namespace/name string into a distinct namespace and name
namespace, name, err := cache.SplitMetaNamespaceKey(key) namespace, name, err := cache.SplitMetaNamespaceKey(key)
if err != nil { if err != nil {
logging.FromContext(ctx).Errorf("invalid resource key: %s", key) logging.FromContext(ctx).Error("invalid resource key: ", key)
return nil return nil
} }
@ -207,7 +207,7 @@ func (r *BaseReconciler) ReconcileDeletion(ctx context.Context, fb Bindable) err
// If it is our turn to finalize the Binding, then first undo the effect // If it is our turn to finalize the Binding, then first undo the effect
// of our Binding on the resource. // of our Binding on the resource.
logging.FromContext(ctx).Infof("Removing the binding for %s", fb.GetName()) logging.FromContext(ctx).Info("Removing the binding for ", fb.GetName())
if err := r.ReconcileSubject(ctx, fb, fb.Undo); apierrs.IsNotFound(err) || apierrs.IsForbidden(err) { if err := r.ReconcileSubject(ctx, fb, fb.Undo); apierrs.IsNotFound(err) || apierrs.IsForbidden(err) {
// If the subject has been deleted, then there is nothing to undo. // If the subject has been deleted, then there is nothing to undo.
} else if err != nil { } else if err != nil {
@ -279,10 +279,10 @@ func (r *BaseReconciler) labelNamespace(ctx context.Context, subject tracker.Ref
namespaceObject, err := r.NamespaceLister.Get(subject.Namespace) namespaceObject, err := r.NamespaceLister.Get(subject.Namespace)
if apierrs.IsNotFound(err) { if apierrs.IsNotFound(err) {
logging.FromContext(ctx).Infof("Error getting namespace (not found): %v", err) logging.FromContext(ctx).Info("Error getting namespace (not found): ", err)
return err return err
} else if err != nil { } else if err != nil {
logging.FromContext(ctx).Infof("Error getting namespace: %v", err) logging.FromContext(ctx).Info("Error getting namespace: ", err)
return err return err
} }
@ -435,19 +435,19 @@ func (r *BaseReconciler) ReconcileSubject(ctx context.Context, fb Bindable, muta
func (r *BaseReconciler) UpdateStatus(ctx context.Context, desired Bindable) error { func (r *BaseReconciler) UpdateStatus(ctx context.Context, desired Bindable) error {
actual, err := r.Get(desired.GetNamespace(), desired.GetName()) actual, err := r.Get(desired.GetNamespace(), desired.GetName())
if err != nil { if err != nil {
logging.FromContext(ctx).Errorf("Error fetching actual: %v", err) logging.FromContext(ctx).Error("Error fetching actual: ", err)
return err return err
} }
// Convert to unstructured for use with the dynamic client. // Convert to unstructured for use with the dynamic client.
ua, err := duck.ToUnstructured(actual) ua, err := duck.ToUnstructured(actual)
if err != nil { if err != nil {
logging.FromContext(ctx).Errorf("Error converting actual: %v", err) logging.FromContext(ctx).Error("Error converting actual: ", err)
return err return err
} }
ud, err := duck.ToUnstructured(desired) ud, err := duck.ToUnstructured(desired)
if err != nil { if err != nil {
logging.FromContext(ctx).Errorf("Error converting desired: %v", err) logging.FromContext(ctx).Error("Error converting desired: ", err)
return err return err
} }

View File

@ -56,7 +56,7 @@ func (r *reconciler) Convert(
for _, obj := range req.Objects { for _, obj := range req.Objects {
converted, err := r.convert(ctx, obj, req.DesiredAPIVersion) converted, err := r.convert(ctx, obj, req.DesiredAPIVersion)
if err != nil { if err != nil {
logging.FromContext(ctx).Errorf("Conversion failed: %v", err) logging.FromContext(ctx).Error("Conversion failed: ", err)
res.Result.Status = metav1.StatusFailure res.Result.Status = metav1.StatusFailure
res.Result.Message = err.Error() res.Result.Message = err.Error()
break break

View File

@ -71,7 +71,7 @@ func (r *reconciler) Reconcile(ctx context.Context, key string) error {
// Look up the webhook secret, and fetch the CA cert bundle. // Look up the webhook secret, and fetch the CA cert bundle.
secret, err := r.secretLister.Secrets(system.Namespace()).Get(r.secretName) secret, err := r.secretLister.Secrets(system.Namespace()).Get(r.secretName)
if err != nil { if err != nil {
logger.Errorf("Error fetching secret: %v", err) logger.Error("Error fetching secret: ", err)
return err return err
} }

View File

@ -87,7 +87,7 @@ func (ac *reconciler) Reconcile(ctx context.Context, key string) error {
// Look up the webhook secret, and fetch the CA cert bundle. // Look up the webhook secret, and fetch the CA cert bundle.
secret, err := ac.secretlister.Secrets(system.Namespace()).Get(ac.secretName) secret, err := ac.secretlister.Secrets(system.Namespace()).Get(ac.secretName)
if err != nil { if err != nil {
logger.Errorf("Error fetching secret: %v", err) logger.Error("Error fetching secret: ", err)
return err return err
} }
caCert, ok := secret.Data[certresources.CACert] caCert, ok := secret.Data[certresources.CACert]
@ -114,7 +114,7 @@ func (ac *reconciler) Admit(ctx context.Context, request *admissionv1.AdmissionR
switch request.Operation { switch request.Operation {
case admissionv1.Create, admissionv1.Update: case admissionv1.Create, admissionv1.Update:
default: default:
logger.Infof("Unhandled webhook operation, letting it through %v", request.Operation) logger.Info("Unhandled webhook operation, letting it through ", request.Operation)
return &admissionv1.AdmissionResponse{Allowed: true} return &admissionv1.AdmissionResponse{Allowed: true}
} }
@ -228,7 +228,7 @@ func (ac *reconciler) mutate(ctx context.Context, req *admissionv1.AdmissionRequ
logger := logging.FromContext(ctx) logger := logging.FromContext(ctx)
handler, ok := ac.handlers[gvk] handler, ok := ac.handlers[gvk]
if !ok { if !ok {
logger.Errorf("Unhandled kind: %v", gvk) logger.Error("Unhandled kind: ", gvk)
return nil, fmt.Errorf("unhandled kind: %v", gvk) return nil, fmt.Errorf("unhandled kind: %v", gvk)
} }

View File

@ -99,7 +99,7 @@ func (ac *reconciler) decodeRequestAndPrepareContext(
logger := logging.FromContext(ctx) logger := logging.FromContext(ctx)
handler, ok := ac.handlers[gvk] handler, ok := ac.handlers[gvk]
if !ok { if !ok {
logger.Errorf("Unhandled kind: %v", gvk) logger.Error("Unhandled kind: ", gvk)
return ctx, nil, fmt.Errorf("unhandled kind: %v", gvk) return ctx, nil, fmt.Errorf("unhandled kind: %v", gvk)
} }
@ -164,7 +164,7 @@ func validate(ctx context.Context, resource resourcesemantics.GenericCRD, req *a
case admissionv1.Delete: case admissionv1.Delete:
return nil // Validation handled by optional Callback, but not validatable. return nil // Validation handled by optional Callback, but not validatable.
default: default:
logger.Infof("Unhandled webhook validation operation, letting it through %v", req.Operation) logger.Info("Unhandled webhook validation operation, letting it through ", req.Operation)
return nil return nil
} }

View File

@ -140,7 +140,7 @@ func New(
} }
webhook.mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { webhook.mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.Error(w, fmt.Sprintf("no controller registered for: %s", r.URL.Path), http.StatusBadRequest) http.Error(w, fmt.Sprint("no controller registered for: ", r.URL.Path), http.StatusBadRequest)
}) })
for _, controller := range controllers { for _, controller := range controllers {