mirror of
https://github.com/kubernetes/client-go.git
synced 2025-06-27 15:39:39 +00:00
refactor util functions for event recording
Kubernetes-commit: 7296288928d347dfb1dcb990d779cdfce96ead1b
This commit is contained in:
parent
4b473f5dc7
commit
60920bb9e4
@ -21,7 +21,7 @@ import (
|
|||||||
"math/rand"
|
"math/rand"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
@ -29,10 +29,8 @@ import (
|
|||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
|
"k8s.io/client-go/tools/record/util"
|
||||||
ref "k8s.io/client-go/tools/reference"
|
ref "k8s.io/client-go/tools/reference"
|
||||||
|
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -157,16 +155,6 @@ func recordToSink(sink EventSink, event *v1.Event, eventCorrelator *EventCorrela
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func isKeyNotFoundError(err error) bool {
|
|
||||||
statusErr, _ := err.(*errors.StatusError)
|
|
||||||
|
|
||||||
if statusErr != nil && statusErr.Status().Code == http.StatusNotFound {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// recordEvent attempts to write event to a sink. It returns true if the event
|
// recordEvent attempts to write event to a sink. It returns true if the event
|
||||||
// was successfully recorded or discarded, false if it should be retried.
|
// was successfully recorded or discarded, false if it should be retried.
|
||||||
// If updateExistingEvent is false, it creates a new event, otherwise it updates
|
// If updateExistingEvent is false, it creates a new event, otherwise it updates
|
||||||
@ -178,7 +166,7 @@ func recordEvent(sink EventSink, event *v1.Event, patch []byte, updateExistingEv
|
|||||||
newEvent, err = sink.Patch(event, patch)
|
newEvent, err = sink.Patch(event, patch)
|
||||||
}
|
}
|
||||||
// Update can fail because the event may have been removed and it no longer exists.
|
// Update can fail because the event may have been removed and it no longer exists.
|
||||||
if !updateExistingEvent || (updateExistingEvent && isKeyNotFoundError(err)) {
|
if !updateExistingEvent || (updateExistingEvent && util.IsKeyNotFoundError(err)) {
|
||||||
// Making sure that ResourceVersion is empty on creation
|
// Making sure that ResourceVersion is empty on creation
|
||||||
event.ResourceVersion = ""
|
event.ResourceVersion = ""
|
||||||
newEvent, err = sink.Create(event)
|
newEvent, err = sink.Create(event)
|
||||||
@ -260,7 +248,7 @@ func (recorder *recorderImpl) generateEvent(object runtime.Object, annotations m
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !validateEventType(eventtype) {
|
if !util.ValidateEventType(eventtype) {
|
||||||
klog.Errorf("Unsupported event type: '%v'", eventtype)
|
klog.Errorf("Unsupported event type: '%v'", eventtype)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -275,14 +263,6 @@ func (recorder *recorderImpl) generateEvent(object runtime.Object, annotations m
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateEventType(eventtype string) bool {
|
|
||||||
switch eventtype {
|
|
||||||
case v1.EventTypeNormal, v1.EventTypeWarning:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (recorder *recorderImpl) Event(object runtime.Object, eventtype, reason, message string) {
|
func (recorder *recorderImpl) Event(object runtime.Object, eventtype, reason, message string) {
|
||||||
recorder.generateEvent(object, nil, metav1.Now(), eventtype, reason, message)
|
recorder.generateEvent(object, nil, metav1.Now(), eventtype, reason, message)
|
||||||
}
|
}
|
||||||
|
44
tools/record/util/util.go
Normal file
44
tools/record/util/util.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2019 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
v1 "k8s.io/api/core/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ValidateEventType checks that eventtype is an expected type of event
|
||||||
|
func ValidateEventType(eventtype string) bool {
|
||||||
|
switch eventtype {
|
||||||
|
case v1.EventTypeNormal, v1.EventTypeWarning:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsKeyNotFoundError is utility function that checks if an error is not found error
|
||||||
|
func IsKeyNotFoundError(err error) bool {
|
||||||
|
statusErr, _ := err.(*errors.StatusError)
|
||||||
|
|
||||||
|
if statusErr != nil && statusErr.Status().Code == http.StatusNotFound {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user