mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
add event_expansion for v1beta1 Events
Signed-off-by: Yassine TIJANI <ytijani@vmware.com>
This commit is contained in:
parent
b49d429f64
commit
e29cb0fb7f
@ -5,6 +5,7 @@ go_library(
|
|||||||
srcs = [
|
srcs = [
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"event.go",
|
"event.go",
|
||||||
|
"event_expansion.go",
|
||||||
"events_client.go",
|
"events_client.go",
|
||||||
"generated_expansion.go",
|
"generated_expansion.go",
|
||||||
],
|
],
|
||||||
|
@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
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 v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"k8s.io/api/events/v1beta1"
|
||||||
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// The EventExpansion interface allows manually adding extra methods to the EventInterface.
|
||||||
|
// TODO: Add querying functions to the event expansion
|
||||||
|
type EventExpansion interface {
|
||||||
|
// CreateWithEventNamespace is the same as a Create
|
||||||
|
// except that it sends the request to the event.Namespace.
|
||||||
|
CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error)
|
||||||
|
// UpdateWithEventNamespace is the same as a Update
|
||||||
|
// except that it sends the request to the event.Namespace.
|
||||||
|
UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error)
|
||||||
|
// PatchWithEventNamespace is the same as a Update
|
||||||
|
// except that it sends the request to the event.Namespace.
|
||||||
|
PatchWithEventNamespace(event *v1beta1.Event, data []byte) (*v1beta1.Event, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateWithEventNamespace makes a new event.
|
||||||
|
// Returns the copy of the event the server returns, or an error.
|
||||||
|
// The namespace to create the event within is deduced from the event.
|
||||||
|
// it must either match this event client's namespace, or this event client must
|
||||||
|
// have been created with the "" namespace.
|
||||||
|
func (e *events) CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
|
||||||
|
if e.ns != "" && event.Namespace != e.ns {
|
||||||
|
return nil, fmt.Errorf("can't create an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns)
|
||||||
|
}
|
||||||
|
result := &v1beta1.Event{}
|
||||||
|
err := e.client.Post().
|
||||||
|
NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0).
|
||||||
|
Resource("events").
|
||||||
|
Body(event).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateWithEventNamespace modifies an existing event.
|
||||||
|
// It returns the copy of the event that the server returns, or an error.
|
||||||
|
// The namespace and key to update the event within is deduced from the event.
|
||||||
|
// The namespace must either match this event client's namespace, or this event client must have been
|
||||||
|
// created with the "" namespace.
|
||||||
|
// Update also requires the ResourceVersion to be set in the event object.
|
||||||
|
func (e *events) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
|
||||||
|
result := &v1beta1.Event{}
|
||||||
|
err := e.client.Put().
|
||||||
|
NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0).
|
||||||
|
Resource("events").
|
||||||
|
Name(event.Name).
|
||||||
|
Body(event).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// PatchWithEventNamespace modifies an existing event.
|
||||||
|
// It returns the copy of the event that the server returns, or an error.
|
||||||
|
// The namespace and name of the target event is deduced from the event.
|
||||||
|
// The namespace must either match this event client's namespace, or this event client must
|
||||||
|
// have been created with the "" namespace.
|
||||||
|
func (e *events) PatchWithEventNamespace(event *v1beta1.Event, data []byte) (*v1beta1.Event, error) {
|
||||||
|
if e.ns != "" && event.Namespace != e.ns {
|
||||||
|
return nil, fmt.Errorf("can't patch an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns)
|
||||||
|
}
|
||||||
|
result := &v1beta1.Event{}
|
||||||
|
err := e.client.Patch(types.StrategicMergePatchType).
|
||||||
|
NamespaceIfScoped(event.Namespace, len(event.Namespace) > 0).
|
||||||
|
Resource("events").
|
||||||
|
Name(event.Name).
|
||||||
|
Body(data).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return result, err
|
||||||
|
}
|
@ -5,6 +5,7 @@ go_library(
|
|||||||
srcs = [
|
srcs = [
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"fake_event.go",
|
"fake_event.go",
|
||||||
|
"fake_event_expansion.go",
|
||||||
"fake_events_client.go",
|
"fake_events_client.go",
|
||||||
],
|
],
|
||||||
importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake",
|
importmap = "k8s.io/kubernetes/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake",
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2014 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 fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1beta1 "k8s.io/api/events/v1beta1"
|
||||||
|
types "k8s.io/apimachinery/pkg/types"
|
||||||
|
core "k8s.io/client-go/testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CreateWithEventNamespace creats a new event. Returns the copy of the event the server returns, or an error.
|
||||||
|
func (c *FakeEvents) CreateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
|
||||||
|
action := core.NewRootCreateAction(eventsResource, event)
|
||||||
|
if c.ns != "" {
|
||||||
|
action = core.NewCreateAction(eventsResource, c.ns, event)
|
||||||
|
}
|
||||||
|
obj, err := c.Fake.Invokes(action, event)
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj.(*v1beta1.Event), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateWithEventNamespace replaces an existing event. Returns the copy of the event the server returns, or an error.
|
||||||
|
func (c *FakeEvents) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, error) {
|
||||||
|
action := core.NewRootUpdateAction(eventsResource, event)
|
||||||
|
if c.ns != "" {
|
||||||
|
action = core.NewUpdateAction(eventsResource, c.ns, event)
|
||||||
|
}
|
||||||
|
obj, err := c.Fake.Invokes(action, event)
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj.(*v1beta1.Event), err
|
||||||
|
}
|
||||||
|
|
||||||
|
// PatchWithEventNamespace patches an existing event. Returns the copy of the event the server returns, or an error.
|
||||||
|
func (c *FakeEvents) PatchWithEventNamespace(event *v1beta1.Event, data []byte) (*v1beta1.Event, error) {
|
||||||
|
pt := types.StrategicMergePatchType
|
||||||
|
action := core.NewRootPatchAction(eventsResource, event.Name, pt, data)
|
||||||
|
if c.ns != "" {
|
||||||
|
action = core.NewPatchAction(eventsResource, c.ns, event.Name, pt, data)
|
||||||
|
}
|
||||||
|
obj, err := c.Fake.Invokes(action, event)
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return obj.(*v1beta1.Event), err
|
||||||
|
}
|
@ -17,5 +17,3 @@ limitations under the License.
|
|||||||
// Code generated by client-gen. DO NOT EDIT.
|
// Code generated by client-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1beta1
|
package v1beta1
|
||||||
|
|
||||||
type EventExpansion interface{}
|
|
||||||
|
@ -22,6 +22,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
|
"//staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/rest:go_default_library",
|
"//staging/src/k8s.io/client-go/rest:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/record/util:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/record/util:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/reference:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/reference:go_default_library",
|
||||||
|
@ -34,6 +34,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/json"
|
"k8s.io/apimachinery/pkg/util/json"
|
||||||
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
typedv1beta1 "k8s.io/client-go/kubernetes/typed/events/v1beta1"
|
||||||
"k8s.io/client-go/tools/record/util"
|
"k8s.io/client-go/tools/record/util"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
)
|
)
|
||||||
@ -65,6 +66,28 @@ type eventBroadcasterImpl struct {
|
|||||||
sink EventSink
|
sink EventSink
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EventSinkImpl wraps EventInterface to implement EventSink.
|
||||||
|
// TODO: this makes it easier for testing purpose and masks the logic of performing API calls.
|
||||||
|
// Note that rollbacking to raw clientset should also be transparent.
|
||||||
|
type EventSinkImpl struct {
|
||||||
|
Interface typedv1beta1.EventInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create is the same as CreateWithEventNamespace of the EventExpansion
|
||||||
|
func (e *EventSinkImpl) Create(event *v1beta1.Event) (*v1beta1.Event, error) {
|
||||||
|
return e.Interface.CreateWithEventNamespace(event)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is the same as UpdateithEventNamespace of the EventExpansion
|
||||||
|
func (e *EventSinkImpl) Update(event *v1beta1.Event) (*v1beta1.Event, error) {
|
||||||
|
return e.Interface.UpdateWithEventNamespace(event)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch is the same as PatchWithEventNamespace of the EventExpansion
|
||||||
|
func (e *EventSinkImpl) Patch(event *v1beta1.Event, data []byte) (*v1beta1.Event, error) {
|
||||||
|
return e.Interface.PatchWithEventNamespace(event, data)
|
||||||
|
}
|
||||||
|
|
||||||
// NewBroadcaster Creates a new event broadcaster.
|
// NewBroadcaster Creates a new event broadcaster.
|
||||||
func NewBroadcaster(sink EventSink) EventBroadcaster {
|
func NewBroadcaster(sink EventSink) EventBroadcaster {
|
||||||
return newBroadcaster(sink, defaultSleepDuration)
|
return newBroadcaster(sink, defaultSleepDuration)
|
||||||
|
Loading…
Reference in New Issue
Block a user