Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
e3c01912
Commit
e3c01912
authored
Jan 06, 2015
by
Dawn Chen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add EventSource to api to have both Component and Host information.
parent
2b91c141
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
60 additions
and
29 deletions
+60
-29
types.go
pkg/api/types.go
+8
-2
conversion.go
pkg/api/v1beta1/conversion.go
+7
-3
types.go
pkg/api/v1beta1/types.go
+2
-0
conversion.go
pkg/api/v1beta2/conversion.go
+7
-3
types.go
pkg/api/v1beta2/types.go
+3
-0
types.go
pkg/api/v1beta3/types.go
+8
-2
event.go
pkg/client/record/event.go
+2
-2
event_test.go
pkg/client/record/event_test.go
+4
-4
describe_test.go
pkg/kubectl/describe_test.go
+3
-3
resource_printer_test.go
pkg/kubectl/resource_printer_test.go
+3
-3
sorted_event_list_test.go
pkg/kubectl/sorted_event_list_test.go
+3
-3
util.go
pkg/kubelet/util.go
+6
-1
rest.go
pkg/registry/event/rest.go
+1
-1
rest_test.go
pkg/registry/event/rest_test.go
+1
-1
scheduler.go
plugin/cmd/kube-scheduler/scheduler.go
+2
-1
No files found.
pkg/api/types.go
View file @
e3c01912
...
...
@@ -985,6 +985,13 @@ type ObjectReference struct {
FieldPath
string
`json:"fieldPath,omitempty"`
}
type
EventSource
struct
{
// Component from which the event is generated.
Component
string
`json:"component,omitempty"`
// Host name on which the event is generated.
Host
string
`json:"host,omitempty"`
}
// Event is a report of an event somewhere in the cluster.
// TODO: Decide whether to store these separately or with the object they apply to.
type
Event
struct
{
...
...
@@ -1014,8 +1021,7 @@ type Event struct {
Message
string
`json:"message,omitempty"`
// Optional. The component reporting this event. Should be a short machine understandable string.
// TODO: provide exact specification for format.
Source
string
`json:"source,omitempty"`
Source
EventSource
`json:"source,omitempty"`
// The time at which the client recorded the event. (Time of server receipt is in TypeMeta.)
Timestamp
util
.
Time
`json:"timestamp,omitempty"`
...
...
pkg/api/v1beta1/conversion.go
View file @
e3c01912
...
...
@@ -548,7 +548,9 @@ func init() {
return
nil
},
// Event Status -> Condition
// Event Status <-> Condition
// Event Source <-> Source.Component
// Event Host <-> Source.Host
// TODO: remove this when it becomes possible to specify a field name conversion on a specific type
func
(
in
*
newer
.
Event
,
out
*
Event
,
s
conversion
.
Scope
)
error
{
if
err
:=
s
.
Convert
(
&
in
.
TypeMeta
,
&
out
.
TypeMeta
,
0
);
err
!=
nil
{
...
...
@@ -560,7 +562,8 @@ func init() {
out
.
Status
=
in
.
Condition
out
.
Reason
=
in
.
Reason
out
.
Message
=
in
.
Message
out
.
Source
=
in
.
Source
out
.
Source
=
in
.
Source
.
Component
out
.
Host
=
in
.
Source
.
Host
out
.
Timestamp
=
in
.
Timestamp
return
s
.
Convert
(
&
in
.
InvolvedObject
,
&
out
.
InvolvedObject
,
0
)
},
...
...
@@ -574,7 +577,8 @@ func init() {
out
.
Condition
=
in
.
Status
out
.
Reason
=
in
.
Reason
out
.
Message
=
in
.
Message
out
.
Source
=
in
.
Source
out
.
Source
.
Component
=
in
.
Source
out
.
Source
.
Host
=
in
.
Host
out
.
Timestamp
=
in
.
Timestamp
return
s
.
Convert
(
&
in
.
InvolvedObject
,
&
out
.
InvolvedObject
,
0
)
},
...
...
pkg/api/v1beta1/types.go
View file @
e3c01912
...
...
@@ -817,6 +817,8 @@ type Event struct {
// Optional. The component reporting this event. Should be a short machine understandable string.
// TODO: provide exact specification for format.
Source
string
`json:"source,omitempty" description:"component reporting this event; short machine understandable string"`
// Host name on which the event is generated.
Host
string
`json:"host,omitempty"`
// The time at which the client recorded the event. (Time of server receipt is in TypeMeta.)
Timestamp
util
.
Time
`json:"timestamp,omitempty" description:"time at which the client recorded the event"`
...
...
pkg/api/v1beta2/conversion.go
View file @
e3c01912
...
...
@@ -464,7 +464,9 @@ func init() {
return
nil
},
// Event Status -> Condition
// Event Status <-> Condition
// Event Source <-> Source.Component
// Event Host <-> Source.Host
// TODO: remove this when it becomes possible to specify a field name conversion on a specific type
func
(
in
*
newer
.
Event
,
out
*
Event
,
s
conversion
.
Scope
)
error
{
if
err
:=
s
.
Convert
(
&
in
.
TypeMeta
,
&
out
.
TypeMeta
,
0
);
err
!=
nil
{
...
...
@@ -476,7 +478,8 @@ func init() {
out
.
Status
=
in
.
Condition
out
.
Reason
=
in
.
Reason
out
.
Message
=
in
.
Message
out
.
Source
=
in
.
Source
out
.
Source
=
in
.
Source
.
Component
out
.
Host
=
in
.
Source
.
Host
out
.
Timestamp
=
in
.
Timestamp
return
s
.
Convert
(
&
in
.
InvolvedObject
,
&
out
.
InvolvedObject
,
0
)
},
...
...
@@ -490,7 +493,8 @@ func init() {
out
.
Condition
=
in
.
Status
out
.
Reason
=
in
.
Reason
out
.
Message
=
in
.
Message
out
.
Source
=
in
.
Source
out
.
Source
.
Component
=
in
.
Source
out
.
Source
.
Host
=
in
.
Host
out
.
Timestamp
=
in
.
Timestamp
return
s
.
Convert
(
&
in
.
InvolvedObject
,
&
out
.
InvolvedObject
,
0
)
},
...
...
pkg/api/v1beta2/types.go
View file @
e3c01912
...
...
@@ -791,6 +791,9 @@ type Event struct {
// TODO: provide exact specification for format.
Source
string
`json:"source,omitempty" description:"component reporting this event; short machine understandable string"`
// Host name on which the event is generated.
Host
string
`json:"host,omitempty"`
// The time at which the client recorded the event. (Time of server receipt is in TypeMeta.)
Timestamp
util
.
Time
`json:"timestamp,omitempty" description:"time at which the client recorded the event"`
}
...
...
pkg/api/v1beta3/types.go
View file @
e3c01912
...
...
@@ -1003,6 +1003,13 @@ type ObjectReference struct {
FieldPath
string
`json:"fieldPath,omitempty"`
}
type
EventSource
struct
{
// Component from which the event is generated.
Component
string
`json:"component,omitempty"`
// Host name on which the event is generated.
Host
string
`json:"host,omitempty"`
}
// Event is a report of an event somewhere in the cluster.
// TODO: Decide whether to store these separately or with the object they apply to.
type
Event
struct
{
...
...
@@ -1032,8 +1039,7 @@ type Event struct {
Message
string
`json:"message,omitempty"`
// Optional. The component reporting this event. Should be a short machine understandable string.
// TODO: provide exact specification for format.
Source
string
`json:"source,omitempty"`
Source
EventSource
`json:"source,omitempty"`
// The time at which the client recorded the event. (Time of server receipt is in TypeMeta.)
Timestamp
util
.
Time
`json:"timestamp,omitempty"`
...
...
pkg/client/record/event.go
View file @
e3c01912
...
...
@@ -41,13 +41,13 @@ type EventRecorder interface {
// StartRecording starts sending events to recorder. Call once while initializing
// your binary. Subsequent calls will be ignored. The return value can be ignored
// or used to stop recording, if desired.
func
StartRecording
(
recorder
EventRecorder
,
source
Name
string
)
watch
.
Interface
{
func
StartRecording
(
recorder
EventRecorder
,
source
api
.
EventSource
)
watch
.
Interface
{
return
GetEvents
(
func
(
event
*
api
.
Event
)
{
// Make a copy before modification, because there could be multiple listeners.
// Events are safe to copy like this.
eventCopy
:=
*
event
event
=
&
eventCopy
event
.
Source
=
source
Name
event
.
Source
=
source
try
:=
0
for
{
try
++
...
...
pkg/client/record/event_test.go
View file @
e3c01912
...
...
@@ -89,7 +89,7 @@ func TestEventf(t *testing.T) {
Condition
:
"Running"
,
Reason
:
"Started"
,
Message
:
"some verbose message: 1"
,
Source
:
"eventTest"
,
Source
:
api
.
EventSource
{
Component
:
"eventTest"
}
,
},
expectLog
:
`Event(api.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1beta1", ResourceVersion:"", FieldPath:"desiredState.manifest.containers[2]"}): status: 'Running', reason: 'Started' some verbose message: 1`
,
},
...
...
@@ -114,7 +114,7 @@ func TestEventf(t *testing.T) {
Condition
:
"Running"
,
Reason
:
"Started"
,
Message
:
"some verbose message: 1"
,
Source
:
"eventTest"
,
Source
:
api
.
EventSource
{
Component
:
"eventTest"
}
,
},
expectLog
:
`Event(api.ObjectReference{Kind:"Pod", Namespace:"baz", Name:"foo", UID:"bar", APIVersion:"v1beta1", ResourceVersion:"", FieldPath:""}): status: 'Running', reason: 'Started' some verbose message: 1`
,
},
...
...
@@ -142,7 +142,7 @@ func TestEventf(t *testing.T) {
return
event
,
nil
},
}
recorder
:=
record
.
StartRecording
(
&
testEvents
,
"eventTest"
)
recorder
:=
record
.
StartRecording
(
&
testEvents
,
api
.
EventSource
{
Component
:
"eventTest"
}
)
logger
:=
record
.
StartLogging
(
t
.
Logf
)
// Prove that it is useful
logger2
:=
record
.
StartLogging
(
func
(
formatter
string
,
args
...
interface
{})
{
if
e
,
a
:=
item
.
expectLog
,
fmt
.
Sprintf
(
formatter
,
args
...
);
e
!=
a
{
...
...
@@ -223,7 +223,7 @@ func TestWriteEventError(t *testing.T) {
return
event
,
nil
},
},
"eventTest"
,
api
.
EventSource
{
Component
:
"eventTest"
}
,
)
.
Stop
()
for
caseName
:=
range
table
{
...
...
pkg/kubectl/describe_test.go
View file @
e3c01912
...
...
@@ -69,17 +69,17 @@ func TestPodDescribeResultsSorted(t *testing.T) {
EventsList
:
api
.
EventList
{
Items
:
[]
api
.
Event
{
{
Source
:
"kubelet"
,
Source
:
api
.
EventSource
{
Component
:
"kubelet"
}
,
Message
:
"Item 1"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
2014
,
time
.
January
,
15
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
{
Source
:
"scheduler"
,
Source
:
api
.
EventSource
{
Component
:
"scheduler"
}
,
Message
:
"Item 2"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
1987
,
time
.
June
,
17
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
{
Source
:
"kubelet"
,
Source
:
api
.
EventSource
{
Component
:
"kubelet"
}
,
Message
:
"Item 3"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
2002
,
time
.
December
,
25
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
...
...
pkg/kubectl/resource_printer_test.go
View file @
e3c01912
...
...
@@ -463,17 +463,17 @@ func TestPrintEventsResultSorted(t *testing.T) {
obj
:=
api
.
EventList
{
Items
:
[]
api
.
Event
{
{
Source
:
"kubelet"
,
Source
:
api
.
EventSource
{
Component
:
"kubelet"
}
,
Message
:
"Item 1"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
2014
,
time
.
January
,
15
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
{
Source
:
"scheduler"
,
Source
:
api
.
EventSource
{
Component
:
"scheduler"
}
,
Message
:
"Item 2"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
1987
,
time
.
June
,
17
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
{
Source
:
"kubelet"
,
Source
:
api
.
EventSource
{
Component
:
"kubelet"
}
,
Message
:
"Item 3"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
2002
,
time
.
December
,
25
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
...
...
pkg/kubectl/sorted_event_list_test.go
View file @
e3c01912
...
...
@@ -54,17 +54,17 @@ func TestSortableEvents(t *testing.T) {
// Arrange
list
:=
SortableEvents
([]
api
.
Event
{
{
Source
:
"kubelet"
,
Source
:
api
.
EventSource
{
Component
:
"kubelet"
}
,
Message
:
"Item 1"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
2014
,
time
.
January
,
15
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
{
Source
:
"scheduler"
,
Source
:
api
.
EventSource
{
Component
:
"scheduler"
}
,
Message
:
"Item 2"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
1987
,
time
.
June
,
17
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
{
Source
:
"kubelet"
,
Source
:
api
.
EventSource
{
Component
:
"kubelet"
}
,
Message
:
"Item 3"
,
Timestamp
:
util
.
NewTime
(
time
.
Date
(
2002
,
time
.
December
,
25
,
0
,
0
,
0
,
0
,
time
.
UTC
)),
},
...
...
pkg/kubelet/util.go
View file @
e3c01912
...
...
@@ -23,6 +23,7 @@ import (
"path"
"strconv"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/capabilities"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/record"
...
...
@@ -132,7 +133,11 @@ func SetupEventSending(authPath string, apiServerList util.StringList) {
// Send events to APIserver if there is a client.
hostname
:=
util
.
GetHostname
(
""
)
glog
.
Infof
(
"Sending events to APIserver."
)
record
.
StartRecording
(
apiClient
.
Events
(
""
),
"kubelet:"
+
hostname
)
record
.
StartRecording
(
apiClient
.
Events
(
""
),
api
.
EventSource
{
Component
:
"kubelet"
,
Host
:
hostname
,
})
}
}
}
pkg/registry/event/rest.go
View file @
e3c01912
...
...
@@ -109,7 +109,7 @@ func (rs *REST) getAttrs(obj runtime.Object) (objLabels, objFields labels.Set, e
"condition"
:
event
.
Condition
,
"status"
:
event
.
Condition
,
// TODO: remove me when we version fields
"reason"
:
event
.
Reason
,
"source"
:
event
.
Source
,
"source"
:
event
.
Source
.
Component
,
},
nil
}
...
...
pkg/registry/event/rest_test.go
View file @
e3c01912
...
...
@@ -145,7 +145,7 @@ func TestRESTgetAttrs(t *testing.T) {
},
Condition
:
"Tested"
,
Reason
:
"ForTesting"
,
Source
:
"test"
,
Source
:
api
.
EventSource
{
Component
:
"test"
}
,
}
label
,
field
,
err
:=
rest
.
getAttrs
(
eventA
)
if
err
!=
nil
{
...
...
plugin/cmd/kube-scheduler/scheduler.go
View file @
e3c01912
...
...
@@ -22,6 +22,7 @@ import (
"net/http"
"strconv"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/record"
_
"github.com/GoogleCloudPlatform/kubernetes/pkg/healthz"
...
...
@@ -57,7 +58,7 @@ func main() {
glog
.
Fatalf
(
"Invalid API configuration: %v"
,
err
)
}
record
.
StartRecording
(
kubeClient
.
Events
(
""
),
"scheduler"
)
record
.
StartRecording
(
kubeClient
.
Events
(
""
),
api
.
EventSource
{
Component
:
"scheduler"
}
)
go
http
.
ListenAndServe
(
net
.
JoinHostPort
(
address
.
String
(),
strconv
.
Itoa
(
*
port
)),
nil
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment