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
69e2a9cb
Commit
69e2a9cb
authored
Sep 13, 2017
by
gmarek
Committed by
Marek Grabowski
Nov 22, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add new Events API group
parent
2a724dfc
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
1045 additions
and
16 deletions
+1045
-16
aggregator.go
cmd/kube-apiserver/app/aggregator.go
+1
-0
server.go
cmd/kube-apiserver/app/server.go
+2
-0
import_known_versions.go
cmd/kube-controller-manager/app/import_known_versions.go
+1
-0
.golint_failures
hack/.golint_failures
+6
-0
init.sh
hack/lib/init.sh
+1
-0
update-codegen.sh
hack/update-codegen.sh
+2
-2
update-generated-protobuf-dockerized.sh
hack/update-generated-protobuf-dockerized.sh
+1
-0
testapi.go
pkg/api/testapi/testapi.go
+13
-0
field_constants.go
pkg/apis/core/field_constants.go
+2
-2
fuzzer.go
pkg/apis/core/fuzzer/fuzzer.go
+9
-0
types.go
pkg/apis/core/types.go
+43
-2
events.go
pkg/apis/core/validation/events.go
+53
-8
events_test.go
pkg/apis/core/validation/events_test.go
+172
-1
doc.go
pkg/apis/events/doc.go
+18
-0
install.go
pkg/apis/events/install/install.go
+48
-0
register.go
pkg/apis/events/register.go
+52
-0
conversion.go
pkg/apis/events/v1beta1/conversion.go
+58
-0
doc.go
pkg/apis/events/v1beta1/doc.go
+23
-0
register.go
pkg/apis/events/v1beta1/register.go
+45
-0
import_known_versions.go
pkg/master/import_known_versions.go
+1
-0
master.go
pkg/master/master.go
+4
-0
OWNERS
pkg/registry/events/OWNERS
+8
-0
doc.go
pkg/registry/events/event/doc.go
+17
-0
strategy.go
pkg/registry/events/event/strategy.go
+104
-0
storage_events.go
pkg/registry/events/rest/storage_events.go
+62
-0
types.go
staging/src/k8s.io/api/core/v1/types.go
+43
-1
OWNERS
staging/src/k8s.io/api/events/OWNERS
+8
-0
doc.go
staging/src/k8s.io/api/events/v1beta1/doc.go
+21
-0
register.go
staging/src/k8s.io/api/events/v1beta1/register.go
+53
-0
types.go
staging/src/k8s.io/api/events/v1beta1/types.go
+122
-0
conversion.go
...ng/src/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go
+7
-0
factory.go
staging/src/k8s.io/client-go/informers/factory.go
+6
-0
generic.go
staging/src/k8s.io/client-go/informers/generic.go
+5
-0
clientset.go
staging/src/k8s.io/client-go/kubernetes/clientset.go
+22
-0
register.go
staging/src/k8s.io/client-go/kubernetes/fake/register.go
+2
-0
register.go
staging/src/k8s.io/client-go/kubernetes/scheme/register.go
+2
-0
etcd_storage_path_test.go
test/integration/etcd/etcd_storage_path_test.go
+8
-0
No files found.
cmd/kube-apiserver/app/aggregator.go
View file @
69e2a9cb
...
@@ -205,6 +205,7 @@ var apiVersionPriorities = map[schema.GroupVersion]priority{
...
@@ -205,6 +205,7 @@ var apiVersionPriorities = map[schema.GroupVersion]priority{
{
Group
:
"apps"
,
Version
:
"v1beta1"
}
:
{
group
:
17800
,
version
:
1
},
{
Group
:
"apps"
,
Version
:
"v1beta1"
}
:
{
group
:
17800
,
version
:
1
},
{
Group
:
"apps"
,
Version
:
"v1beta2"
}
:
{
group
:
17800
,
version
:
9
},
{
Group
:
"apps"
,
Version
:
"v1beta2"
}
:
{
group
:
17800
,
version
:
9
},
{
Group
:
"apps"
,
Version
:
"v1"
}
:
{
group
:
17800
,
version
:
15
},
{
Group
:
"apps"
,
Version
:
"v1"
}
:
{
group
:
17800
,
version
:
15
},
{
Group
:
"events.k8s.io"
,
Version
:
"v1beta1"
}
:
{
group
:
17750
,
version
:
5
},
{
Group
:
"authentication.k8s.io"
,
Version
:
"v1"
}
:
{
group
:
17700
,
version
:
15
},
{
Group
:
"authentication.k8s.io"
,
Version
:
"v1"
}
:
{
group
:
17700
,
version
:
15
},
{
Group
:
"authentication.k8s.io"
,
Version
:
"v1beta1"
}
:
{
group
:
17700
,
version
:
9
},
{
Group
:
"authentication.k8s.io"
,
Version
:
"v1beta1"
}
:
{
group
:
17700
,
version
:
9
},
{
Group
:
"authorization.k8s.io"
,
Version
:
"v1"
}
:
{
group
:
17600
,
version
:
15
},
{
Group
:
"authorization.k8s.io"
,
Version
:
"v1"
}
:
{
group
:
17600
,
version
:
15
},
...
...
cmd/kube-apiserver/app/server.go
View file @
69e2a9cb
...
@@ -66,6 +66,7 @@ import (
...
@@ -66,6 +66,7 @@ import (
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/apps"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/batch"
api
"k8s.io/kubernetes/pkg/apis/core"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/events"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/networking"
"k8s.io/kubernetes/pkg/apis/networking"
"k8s.io/kubernetes/pkg/apis/storage"
"k8s.io/kubernetes/pkg/apis/storage"
...
@@ -579,6 +580,7 @@ func BuildStorageFactory(s *options.ServerRunOptions) (*serverstorage.DefaultSto
...
@@ -579,6 +580,7 @@ func BuildStorageFactory(s *options.ServerRunOptions) (*serverstorage.DefaultSto
storageFactory
.
AddCohabitatingResources
(
extensions
.
Resource
(
"deployments"
),
apps
.
Resource
(
"deployments"
))
storageFactory
.
AddCohabitatingResources
(
extensions
.
Resource
(
"deployments"
),
apps
.
Resource
(
"deployments"
))
storageFactory
.
AddCohabitatingResources
(
extensions
.
Resource
(
"daemonsets"
),
apps
.
Resource
(
"daemonsets"
))
storageFactory
.
AddCohabitatingResources
(
extensions
.
Resource
(
"daemonsets"
),
apps
.
Resource
(
"daemonsets"
))
storageFactory
.
AddCohabitatingResources
(
extensions
.
Resource
(
"replicasets"
),
apps
.
Resource
(
"replicasets"
))
storageFactory
.
AddCohabitatingResources
(
extensions
.
Resource
(
"replicasets"
),
apps
.
Resource
(
"replicasets"
))
storageFactory
.
AddCohabitatingResources
(
api
.
Resource
(
"events"
),
events
.
Resource
(
"events"
))
for
_
,
override
:=
range
s
.
Etcd
.
EtcdServersOverrides
{
for
_
,
override
:=
range
s
.
Etcd
.
EtcdServersOverrides
{
tokens
:=
strings
.
Split
(
override
,
"#"
)
tokens
:=
strings
.
Split
(
override
,
"#"
)
if
len
(
tokens
)
!=
2
{
if
len
(
tokens
)
!=
2
{
...
...
cmd/kube-controller-manager/app/import_known_versions.go
View file @
69e2a9cb
...
@@ -30,6 +30,7 @@ import (
...
@@ -30,6 +30,7 @@ import (
_
"k8s.io/kubernetes/pkg/apis/batch/install"
_
"k8s.io/kubernetes/pkg/apis/batch/install"
_
"k8s.io/kubernetes/pkg/apis/certificates/install"
_
"k8s.io/kubernetes/pkg/apis/certificates/install"
_
"k8s.io/kubernetes/pkg/apis/core/install"
_
"k8s.io/kubernetes/pkg/apis/core/install"
_
"k8s.io/kubernetes/pkg/apis/events/install"
_
"k8s.io/kubernetes/pkg/apis/extensions/install"
_
"k8s.io/kubernetes/pkg/apis/extensions/install"
_
"k8s.io/kubernetes/pkg/apis/policy/install"
_
"k8s.io/kubernetes/pkg/apis/policy/install"
_
"k8s.io/kubernetes/pkg/apis/rbac/install"
_
"k8s.io/kubernetes/pkg/apis/rbac/install"
...
...
hack/.golint_failures
View file @
69e2a9cb
...
@@ -53,6 +53,8 @@ pkg/apis/core/v1/helper
...
@@ -53,6 +53,8 @@ pkg/apis/core/v1/helper
pkg/apis/core/v1/helper/qos
pkg/apis/core/v1/helper/qos
pkg/apis/core/v1/validation
pkg/apis/core/v1/validation
pkg/apis/core/validation
pkg/apis/core/validation
pkg/apis/events
pkg/apis/events/v1beta1
pkg/apis/extensions
pkg/apis/extensions
pkg/apis/extensions/validation
pkg/apis/extensions/validation
pkg/apis/imagepolicy
pkg/apis/imagepolicy
...
@@ -292,6 +294,7 @@ pkg/registry/core/service/portallocator
...
@@ -292,6 +294,7 @@ pkg/registry/core/service/portallocator
pkg/registry/core/service/portallocator/controller
pkg/registry/core/service/portallocator/controller
pkg/registry/core/service/storage
pkg/registry/core/service/storage
pkg/registry/core/serviceaccount/storage
pkg/registry/core/serviceaccount/storage
pkg/registry/events/rest
pkg/registry/extensions/controller/storage
pkg/registry/extensions/controller/storage
pkg/registry/extensions/daemonset
pkg/registry/extensions/daemonset
pkg/registry/extensions/daemonset/storage
pkg/registry/extensions/daemonset/storage
...
@@ -449,6 +452,7 @@ staging/src/k8s.io/api/batch/v1beta1
...
@@ -449,6 +452,7 @@ staging/src/k8s.io/api/batch/v1beta1
staging/src/k8s.io/api/batch/v2alpha1
staging/src/k8s.io/api/batch/v2alpha1
staging/src/k8s.io/api/certificates/v1beta1
staging/src/k8s.io/api/certificates/v1beta1
staging/src/k8s.io/api/core/v1
staging/src/k8s.io/api/core/v1
staging/src/k8s.io/api/events/v1beta1
staging/src/k8s.io/api/extensions/v1beta1
staging/src/k8s.io/api/extensions/v1beta1
staging/src/k8s.io/api/imagepolicy/v1alpha1
staging/src/k8s.io/api/imagepolicy/v1alpha1
staging/src/k8s.io/api/networking/v1
staging/src/k8s.io/api/networking/v1
...
@@ -659,6 +663,8 @@ staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1
...
@@ -659,6 +663,8 @@ staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1
staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake
staging/src/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake
staging/src/k8s.io/client-go/kubernetes/typed/core/v1
staging/src/k8s.io/client-go/kubernetes/typed/core/v1
staging/src/k8s.io/client-go/kubernetes/typed/core/v1/fake
staging/src/k8s.io/client-go/kubernetes/typed/core/v1/fake
staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1
staging/src/k8s.io/client-go/kubernetes/typed/events/v1beta1/fake
staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1
staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1
staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake
staging/src/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake
staging/src/k8s.io/client-go/kubernetes/typed/networking/v1
staging/src/k8s.io/client-go/kubernetes/typed/networking/v1
...
...
hack/lib/init.sh
View file @
69e2a9cb
...
@@ -69,6 +69,7 @@ batch/v1beta1 \
...
@@ -69,6 +69,7 @@ batch/v1beta1 \
batch/v2alpha1 \
batch/v2alpha1 \
certificates.k8s.io/v1beta1 \
certificates.k8s.io/v1beta1 \
extensions/v1beta1 \
extensions/v1beta1 \
events.k8s.io/v1beta1 \
imagepolicy.k8s.io/v1alpha1 \
imagepolicy.k8s.io/v1alpha1 \
networking.k8s.io/v1 \
networking.k8s.io/v1 \
policy/v1beta1 \
policy/v1beta1 \
...
...
hack/update-codegen.sh
View file @
69e2a9cb
...
@@ -59,10 +59,10 @@ for gv in "${GROUP_VERSIONS[@]}"; do
...
@@ -59,10 +59,10 @@ for gv in "${GROUP_VERSIONS[@]}"; do
# collect internal groups
# collect internal groups
int_group
=
"
${
pkg_dir
%/*
}
/"
int_group
=
"
${
pkg_dir
%/*
}
/"
if
[[
"
${
pkg_dir
}
"
=
core/
*
]]
;
then
if
[[
"
${
pkg_dir
}
"
=
core/
*
]]
;
then
int_group
=
"api/"
int_group
=
"api/"
fi
fi
if
!
[[
"
${
INTERNAL_DIRS
[@]
:-}
"
=
~
"
${
int_group
}
"
]]
;
then
if
!
[[
"
${
INTERNAL_DIRS
[@]
:-}
"
=
~
"
${
int_group
}
"
]]
;
then
INTERNAL_DIRS+
=(
"
${
int_group
}
"
)
INTERNAL_DIRS+
=(
"
${
int_group
}
"
)
fi
fi
done
done
# delimit by commas for the command
# delimit by commas for the command
...
...
hack/update-generated-protobuf-dockerized.sh
View file @
69e2a9cb
...
@@ -60,6 +60,7 @@ PACKAGES=(
...
@@ -60,6 +60,7 @@ PACKAGES=(
k8s.io/api/apps/v1
k8s.io/api/apps/v1
k8s.io/api/authentication/v1
k8s.io/api/authentication/v1
k8s.io/api/authentication/v1beta1
k8s.io/api/authentication/v1beta1
k8s.io/api/events/v1beta1
k8s.io/api/rbac/v1alpha1
k8s.io/api/rbac/v1alpha1
k8s.io/api/rbac/v1beta1
k8s.io/api/rbac/v1beta1
k8s.io/api/rbac/v1
k8s.io/api/rbac/v1
...
...
pkg/api/testapi/testapi.go
View file @
69e2a9cb
...
@@ -43,6 +43,7 @@ import (
...
@@ -43,6 +43,7 @@ import (
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/batch"
"k8s.io/kubernetes/pkg/apis/certificates"
"k8s.io/kubernetes/pkg/apis/certificates"
api
"k8s.io/kubernetes/pkg/apis/core"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/events"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/imagepolicy"
"k8s.io/kubernetes/pkg/apis/imagepolicy"
"k8s.io/kubernetes/pkg/apis/networking"
"k8s.io/kubernetes/pkg/apis/networking"
...
@@ -62,6 +63,7 @@ import (
...
@@ -62,6 +63,7 @@ import (
_
"k8s.io/kubernetes/pkg/apis/certificates/install"
_
"k8s.io/kubernetes/pkg/apis/certificates/install"
_
"k8s.io/kubernetes/pkg/apis/componentconfig/install"
_
"k8s.io/kubernetes/pkg/apis/componentconfig/install"
_
"k8s.io/kubernetes/pkg/apis/core/install"
_
"k8s.io/kubernetes/pkg/apis/core/install"
_
"k8s.io/kubernetes/pkg/apis/events/install"
_
"k8s.io/kubernetes/pkg/apis/extensions/install"
_
"k8s.io/kubernetes/pkg/apis/extensions/install"
_
"k8s.io/kubernetes/pkg/apis/imagepolicy/install"
_
"k8s.io/kubernetes/pkg/apis/imagepolicy/install"
_
"k8s.io/kubernetes/pkg/apis/networking/install"
_
"k8s.io/kubernetes/pkg/apis/networking/install"
...
@@ -79,6 +81,7 @@ var (
...
@@ -79,6 +81,7 @@ var (
Autoscaling
TestGroup
Autoscaling
TestGroup
Batch
TestGroup
Batch
TestGroup
Extensions
TestGroup
Extensions
TestGroup
Events
TestGroup
Apps
TestGroup
Apps
TestGroup
Policy
TestGroup
Policy
TestGroup
Rbac
TestGroup
Rbac
TestGroup
...
@@ -314,6 +317,15 @@ func init() {
...
@@ -314,6 +317,15 @@ func init() {
externalTypes
:
legacyscheme
.
Scheme
.
KnownTypes
(
externalGroupVersion
),
externalTypes
:
legacyscheme
.
Scheme
.
KnownTypes
(
externalGroupVersion
),
}
}
}
}
if
_
,
ok
:=
Groups
[
events
.
GroupName
];
!
ok
{
externalGroupVersion
:=
schema
.
GroupVersion
{
Group
:
events
.
GroupName
,
Version
:
legacyscheme
.
Registry
.
GroupOrDie
(
events
.
GroupName
)
.
GroupVersion
.
Version
}
Groups
[
events
.
GroupName
]
=
TestGroup
{
externalGroupVersion
:
externalGroupVersion
,
internalGroupVersion
:
events
.
SchemeGroupVersion
,
internalTypes
:
legacyscheme
.
Scheme
.
KnownTypes
(
events
.
SchemeGroupVersion
),
externalTypes
:
legacyscheme
.
Scheme
.
KnownTypes
(
externalGroupVersion
),
}
}
Default
=
Groups
[
api
.
GroupName
]
Default
=
Groups
[
api
.
GroupName
]
Autoscaling
=
Groups
[
autoscaling
.
GroupName
]
Autoscaling
=
Groups
[
autoscaling
.
GroupName
]
...
@@ -322,6 +334,7 @@ func init() {
...
@@ -322,6 +334,7 @@ func init() {
Policy
=
Groups
[
policy
.
GroupName
]
Policy
=
Groups
[
policy
.
GroupName
]
Certificates
=
Groups
[
certificates
.
GroupName
]
Certificates
=
Groups
[
certificates
.
GroupName
]
Extensions
=
Groups
[
extensions
.
GroupName
]
Extensions
=
Groups
[
extensions
.
GroupName
]
Events
=
Groups
[
events
.
GroupName
]
Rbac
=
Groups
[
rbac
.
GroupName
]
Rbac
=
Groups
[
rbac
.
GroupName
]
Scheduling
=
Groups
[
scheduling
.
GroupName
]
Scheduling
=
Groups
[
scheduling
.
GroupName
]
Settings
=
Groups
[
settings
.
GroupName
]
Settings
=
Groups
[
settings
.
GroupName
]
...
...
pkg/apis/core/field_constants.go
View file @
69e2a9cb
...
@@ -25,8 +25,8 @@ const (
...
@@ -25,8 +25,8 @@ const (
PodStatusField
=
"status.phase"
PodStatusField
=
"status.phase"
SecretTypeField
=
"type"
SecretTypeField
=
"type"
EventReasonField
=
"
reas
on"
EventReasonField
=
"
acti
on"
EventSourceField
=
"
source
"
EventSourceField
=
"
reportingComponent
"
EventTypeField
=
"type"
EventTypeField
=
"type"
EventInvolvedKindField
=
"involvedObject.kind"
EventInvolvedKindField
=
"involvedObject.kind"
EventInvolvedNamespaceField
=
"involvedObject.namespace"
EventInvolvedNamespaceField
=
"involvedObject.namespace"
...
...
pkg/apis/core/fuzzer/fuzzer.go
View file @
69e2a9cb
...
@@ -19,10 +19,12 @@ package fuzzer
...
@@ -19,10 +19,12 @@ package fuzzer
import
(
import
(
"reflect"
"reflect"
"strconv"
"strconv"
"time"
fuzz
"github.com/google/gofuzz"
fuzz
"github.com/google/gofuzz"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/api/resource"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
...
@@ -483,5 +485,12 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
...
@@ -483,5 +485,12 @@ var Funcs = func(codecs runtimeserializer.CodecFactory) []interface{} {
c
.
FuzzNoCustom
(
s
)
c
.
FuzzNoCustom
(
s
)
s
.
Allocatable
=
s
.
Capacity
s
.
Allocatable
=
s
.
Capacity
},
},
func
(
e
*
core
.
Event
,
c
fuzz
.
Continue
)
{
c
.
FuzzNoCustom
(
e
)
e
.
EventTime
=
metav1
.
MicroTime
{
Time
:
time
.
Unix
(
1
,
1000
)}
if
e
.
Series
!=
nil
{
e
.
Series
.
LastObservedTime
=
metav1
.
MicroTime
{
Time
:
time
.
Unix
(
3
,
3000
)}
}
},
}
}
}
}
pkg/apis/core/types.go
View file @
69e2a9cb
...
@@ -3958,7 +3958,7 @@ type Event struct {
...
@@ -3958,7 +3958,7 @@ type Event struct {
// +optional
// +optional
metav1
.
ObjectMeta
metav1
.
ObjectMeta
// Required. The object that this event is about.
// Required. The object that this event is about.
Mapped to events.Event.regarding
// +optional
// +optional
InvolvedObject
ObjectReference
InvolvedObject
ObjectReference
...
@@ -3970,7 +3970,7 @@ type Event struct {
...
@@ -3970,7 +3970,7 @@ type Event struct {
Reason
string
Reason
string
// Optional. A human-readable description of the status of this operation.
// Optional. A human-readable description of the status of this operation.
// TODO: decide on maximum length.
// TODO: decide on maximum length.
Mapped to events.Event.note
// +optional
// +optional
Message
string
Message
string
...
@@ -3993,8 +3993,49 @@ type Event struct {
...
@@ -3993,8 +3993,49 @@ type Event struct {
// Type of this event (Normal, Warning), new types could be added in the future.
// Type of this event (Normal, Warning), new types could be added in the future.
// +optional
// +optional
Type
string
Type
string
// Time when this Event was first observed.
// +optional
EventTime
metav1
.
MicroTime
// Data about the Event series this event represents or nil if it's a singleton Event.
// +optional
Series
*
EventSeries
// What action was taken/failed regarding to the Regarding object.
// +optional
Action
string
// Optional secondary object for more complex actions.
// +optional
Related
*
ObjectReference
// Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
// +optional
ReportingController
string
// ID of the controller instance, e.g. `kubelet-xyzf`.
// +optional
ReportingInstance
string
}
type
EventSeries
struct
{
// Number of occurrences in this series up to the last heartbeat time
Count
int32
// Time of the last occurence observed
LastObservedTime
metav1
.
MicroTime
// State of this Series: Ongoing or Finished
State
EventSeriesState
}
}
type
EventSeriesState
string
const
(
EventSeriesStateOngoing
EventSeriesState
=
"Ongoing"
EventSeriesStateFinished
EventSeriesState
=
"Finished"
EventSeriesStateUnknown
EventSeriesState
=
"Unknown"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// EventList is a list of events.
// EventList is a list of events.
...
...
pkg/apis/core/validation/events.go
View file @
69e2a9cb
...
@@ -18,6 +18,7 @@ package validation
...
@@ -18,6 +18,7 @@ package validation
import
(
import
(
"fmt"
"fmt"
"time"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
...
@@ -28,24 +29,68 @@ import (
...
@@ -28,24 +29,68 @@ import (
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core"
)
)
const
(
ReportingInstanceLengthLimit
=
128
ActionLengthLimit
=
128
ReasonLengthLimit
=
128
NoteLengthLimit
=
1024
)
// ValidateEvent makes sure that the event makes sense.
// ValidateEvent makes sure that the event makes sense.
func
ValidateEvent
(
event
*
core
.
Event
)
field
.
ErrorList
{
func
ValidateEvent
(
event
*
core
.
Event
)
field
.
ErrorList
{
allErrs
:=
field
.
ErrorList
{}
allErrs
:=
field
.
ErrorList
{}
// Because go
zeroTime
:=
time
.
Time
{}
// Make sure event.Namespace and the involvedObject.Namespace agree
// "New" Events need to have EventTime set, so it's validating old object.
if
len
(
event
.
InvolvedObject
.
Namespace
)
==
0
{
if
event
.
EventTime
.
Time
==
zeroTime
{
// event.Namespace must also be empty (or "default", for compatibility with old clients)
// Make sure event.Namespace and the involvedInvolvedObject.Namespace agree
if
event
.
Namespace
!=
metav1
.
NamespaceNone
&&
event
.
Namespace
!=
metav1
.
NamespaceDefault
{
if
len
(
event
.
InvolvedObject
.
Namespace
)
==
0
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"involvedObject"
,
"namespace"
),
event
.
InvolvedObject
.
Namespace
,
"does not match event.namespace"
))
// event.Namespace must also be empty (or "default", for compatibility with old clients)
if
event
.
Namespace
!=
metav1
.
NamespaceNone
&&
event
.
Namespace
!=
metav1
.
NamespaceDefault
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"involvedObject"
,
"namespace"
),
event
.
InvolvedObject
.
Namespace
,
"does not match event.namespace"
))
}
}
else
{
// event namespace must match
if
event
.
Namespace
!=
event
.
InvolvedObject
.
Namespace
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"involvedObject"
,
"namespace"
),
event
.
InvolvedObject
.
Namespace
,
"does not match event.namespace"
))
}
}
}
}
else
{
}
else
{
// event namespace must match
if
len
(
event
.
InvolvedObject
.
Namespace
)
==
0
&&
event
.
Namespace
!=
metav1
.
NamespaceSystem
{
if
event
.
Namespace
!=
event
.
InvolvedObject
.
Namespace
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"involvedObject"
,
"namespace"
),
event
.
InvolvedObject
.
Namespace
,
"does not match event.namespace"
))
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"involvedObject"
,
"namespace"
),
event
.
InvolvedObject
.
Namespace
,
"does not match event.namespace"
))
}
}
if
len
(
event
.
ReportingController
)
==
0
{
allErrs
=
append
(
allErrs
,
field
.
Required
(
field
.
NewPath
(
"reportingController"
),
""
))
}
for
_
,
msg
:=
range
validation
.
IsQualifiedName
(
event
.
ReportingController
)
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"reportingController"
),
event
.
ReportingController
,
msg
))
}
if
len
(
event
.
ReportingInstance
)
==
0
{
allErrs
=
append
(
allErrs
,
field
.
Required
(
field
.
NewPath
(
"reportingInstance"
),
""
))
}
if
len
(
event
.
ReportingInstance
)
>
ReportingInstanceLengthLimit
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"repotingIntance"
),
""
,
fmt
.
Sprintf
(
"can have at most %v characters"
,
ReportingInstanceLengthLimit
)))
}
if
len
(
event
.
Action
)
==
0
{
allErrs
=
append
(
allErrs
,
field
.
Required
(
field
.
NewPath
(
"action"
),
""
))
}
if
len
(
event
.
Action
)
>
ActionLengthLimit
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"action"
),
""
,
fmt
.
Sprintf
(
"can have at most %v characters"
,
ActionLengthLimit
)))
}
if
len
(
event
.
Reason
)
==
0
{
allErrs
=
append
(
allErrs
,
field
.
Required
(
field
.
NewPath
(
"reason"
),
""
))
}
if
len
(
event
.
Reason
)
>
ReasonLengthLimit
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"reason"
),
""
,
fmt
.
Sprintf
(
"can have at most %v characters"
,
ReasonLengthLimit
)))
}
if
len
(
event
.
Message
)
>
NoteLengthLimit
{
allErrs
=
append
(
allErrs
,
field
.
Invalid
(
field
.
NewPath
(
"message"
),
""
,
fmt
.
Sprintf
(
"can have at most %v characters"
,
NoteLengthLimit
)))
}
}
}
// For kinds we recognize, make sure
i
nvolvedObject.Namespace is set for namespaced kinds
// For kinds we recognize, make sure
I
nvolvedObject.Namespace is set for namespaced kinds
if
namespaced
,
err
:=
isNamespacedKind
(
event
.
InvolvedObject
.
Kind
,
event
.
InvolvedObject
.
APIVersion
);
err
==
nil
{
if
namespaced
,
err
:=
isNamespacedKind
(
event
.
InvolvedObject
.
Kind
,
event
.
InvolvedObject
.
APIVersion
);
err
==
nil
{
if
namespaced
&&
len
(
event
.
InvolvedObject
.
Namespace
)
==
0
{
if
namespaced
&&
len
(
event
.
InvolvedObject
.
Namespace
)
==
0
{
allErrs
=
append
(
allErrs
,
field
.
Required
(
field
.
NewPath
(
"involvedObject"
,
"namespace"
),
fmt
.
Sprintf
(
"required for kind %s"
,
event
.
InvolvedObject
.
Kind
)))
allErrs
=
append
(
allErrs
,
field
.
Required
(
field
.
NewPath
(
"involvedObject"
,
"namespace"
),
fmt
.
Sprintf
(
"required for kind %s"
,
event
.
InvolvedObject
.
Kind
)))
...
...
pkg/apis/core/validation/events_test.go
View file @
69e2a9cb
...
@@ -18,6 +18,7 @@ package validation
...
@@ -18,6 +18,7 @@ package validation
import
(
import
(
"testing"
"testing"
"time"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core"
...
@@ -215,7 +216,177 @@ func TestValidateEvent(t *testing.T) {
...
@@ -215,7 +216,177 @@ func TestValidateEvent(t *testing.T) {
for
_
,
item
:=
range
table
{
for
_
,
item
:=
range
table
{
if
e
,
a
:=
item
.
valid
,
len
(
ValidateEvent
(
item
.
Event
))
==
0
;
e
!=
a
{
if
e
,
a
:=
item
.
valid
,
len
(
ValidateEvent
(
item
.
Event
))
==
0
;
e
!=
a
{
t
.
Errorf
(
"%v: expected %v, got %v"
,
item
.
Event
.
Name
,
e
,
a
)
t
.
Errorf
(
"%v: expected %v, got %v: %v"
,
item
.
Event
.
Name
,
e
,
a
,
ValidateEvent
(
item
.
Event
))
}
}
}
func
TestValidateNewEvent
(
t
*
testing
.
T
)
{
someTime
:=
metav1
.
MicroTime
{
Time
:
time
.
Unix
(
1505828956
,
0
)}
table
:=
[]
struct
{
*
core
.
Event
valid
bool
msg
string
}{
{
Event
:
&
core
.
Event
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"test"
,
Namespace
:
metav1
.
NamespaceDefault
,
},
InvolvedObject
:
core
.
ObjectReference
{
APIVersion
:
"v1"
,
Kind
:
"Node"
,
},
EventTime
:
someTime
,
},
valid
:
false
,
msg
:
"Old Event with EventTime should trigger new validation and fail"
,
},
{
Event
:
&
core
.
Event
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"test"
,
Namespace
:
metav1
.
NamespaceSystem
,
},
InvolvedObject
:
core
.
ObjectReference
{
APIVersion
:
"v1"
,
Kind
:
"Node"
,
},
EventTime
:
someTime
,
ReportingController
:
"k8s.io/my-controller"
,
ReportingInstance
:
"node-xyz"
,
Action
:
"Do"
,
Reason
:
"Because"
,
},
valid
:
true
,
msg
:
"Valid new Event"
,
},
{
Event
:
&
core
.
Event
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"test"
,
Namespace
:
metav1
.
NamespaceSystem
,
},
InvolvedObject
:
core
.
ObjectReference
{
APIVersion
:
"v1"
,
Kind
:
"Node"
,
},
EventTime
:
someTime
,
ReportingController
:
"my-contr@ller"
,
ReportingInstance
:
"node-xyz"
,
Action
:
"Do"
,
Reason
:
"Because"
,
},
valid
:
false
,
msg
:
"not qualified reportingController"
,
},
{
Event
:
&
core
.
Event
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"test"
,
Namespace
:
metav1
.
NamespaceSystem
,
},
InvolvedObject
:
core
.
ObjectReference
{
APIVersion
:
"v1"
,
Kind
:
"Node"
,
},
EventTime
:
someTime
,
ReportingController
:
"k8s.io/my-controller"
,
ReportingInstance
:
"node-xyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
,
Action
:
"Do"
,
Reason
:
"Because"
,
},
valid
:
false
,
msg
:
"too long reporting instance"
,
},
{
Event
:
&
core
.
Event
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"test"
,
Namespace
:
metav1
.
NamespaceSystem
,
},
InvolvedObject
:
core
.
ObjectReference
{
APIVersion
:
"v1"
,
Kind
:
"Node"
,
},
EventTime
:
someTime
,
ReportingController
:
"k8s.io/my-controller"
,
ReportingInstance
:
"node-xyz"
,
Action
:
"Do"
,
},
valid
:
false
,
msg
:
"missing reason"
,
},
{
Event
:
&
core
.
Event
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"test"
,
Namespace
:
metav1
.
NamespaceSystem
,
},
InvolvedObject
:
core
.
ObjectReference
{
APIVersion
:
"v1"
,
Kind
:
"Node"
,
},
EventTime
:
someTime
,
ReportingController
:
"k8s.io/my-controller"
,
ReportingInstance
:
"node-xyz"
,
Reason
:
"Because"
,
},
valid
:
false
,
msg
:
"missing action"
,
},
{
Event
:
&
core
.
Event
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"test"
,
},
InvolvedObject
:
core
.
ObjectReference
{
APIVersion
:
"v1"
,
Kind
:
"Node"
,
},
EventTime
:
someTime
,
ReportingController
:
"k8s.io/my-controller"
,
ReportingInstance
:
"node-xyz"
,
Reason
:
"Because"
,
},
valid
:
false
,
msg
:
"missing namespace"
,
},
{
Event
:
&
core
.
Event
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"test"
,
},
InvolvedObject
:
core
.
ObjectReference
{
APIVersion
:
"v1"
,
Kind
:
"Node"
,
},
EventTime
:
someTime
,
ReportingController
:
"k8s.io/my-controller"
,
ReportingInstance
:
"node-xyz"
,
Action
:
"Do"
,
Reason
:
"Because"
,
Message
:
`zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz`
,
},
valid
:
false
,
msg
:
"too long message"
,
},
}
for
_
,
item
:=
range
table
{
if
e
,
a
:=
item
.
valid
,
len
(
ValidateEvent
(
item
.
Event
))
==
0
;
e
!=
a
{
t
.
Errorf
(
"%v: expected %v, got %v: %v"
,
item
.
msg
,
e
,
a
,
ValidateEvent
(
item
.
Event
))
}
}
}
}
}
}
pkg/apis/events/doc.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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.
*/
// +groupName=events.k8s.io
package
events
// import "k8s.io/kubernetes/pkg/apis/events"
pkg/apis/events/install/install.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2016 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 install installs the events API group, making it available as
// an option to all of the API encoding/decoding machinery.
package
install
import
(
"k8s.io/apimachinery/pkg/apimachinery/announced"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/events"
"k8s.io/kubernetes/pkg/apis/events/v1beta1"
)
func
init
()
{
Install
(
legacyscheme
.
GroupFactoryRegistry
,
legacyscheme
.
Registry
,
legacyscheme
.
Scheme
)
}
// Install registers the API group and adds types to a scheme
func
Install
(
groupFactoryRegistry
announced
.
APIGroupFactoryRegistry
,
registry
*
registered
.
APIRegistrationManager
,
scheme
*
runtime
.
Scheme
)
{
if
err
:=
announced
.
NewGroupMetaFactory
(
&
announced
.
GroupMetaFactoryArgs
{
GroupName
:
events
.
GroupName
,
VersionPreferenceOrder
:
[]
string
{
v1beta1
.
SchemeGroupVersion
.
Version
},
AddInternalObjectsToScheme
:
events
.
AddToScheme
,
},
announced
.
VersionToSchemeFunc
{
v1beta1
.
SchemeGroupVersion
.
Version
:
v1beta1
.
AddToScheme
,
},
)
.
Announce
(
groupFactoryRegistry
)
.
RegisterAndEnable
(
registry
,
scheme
);
err
!=
nil
{
panic
(
err
)
}
}
pkg/apis/events/register.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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
events
import
(
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/apis/core"
)
// GroupName is the group name use in this package
const
GroupName
=
"events.k8s.io"
// SchemeGroupVersion is group version used to register these objects
var
SchemeGroupVersion
=
schema
.
GroupVersion
{
Group
:
GroupName
,
Version
:
runtime
.
APIVersionInternal
}
// Kind takes an unqualified kind and returns a Group qualified GroupKind
func
Kind
(
kind
string
)
schema
.
GroupKind
{
return
SchemeGroupVersion
.
WithKind
(
kind
)
.
GroupKind
()
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource
func
Resource
(
resource
string
)
schema
.
GroupResource
{
return
SchemeGroupVersion
.
WithResource
(
resource
)
.
GroupResource
()
}
var
(
SchemeBuilder
=
runtime
.
NewSchemeBuilder
(
addKnownTypes
)
AddToScheme
=
SchemeBuilder
.
AddToScheme
)
func
addKnownTypes
(
scheme
*
runtime
.
Scheme
)
error
{
scheme
.
AddKnownTypes
(
SchemeGroupVersion
,
&
core
.
Event
{},
&
core
.
EventList
{},
)
return
nil
}
pkg/apis/events/v1beta1/conversion.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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
(
v1beta1
"k8s.io/api/events/v1beta1"
conversion
"k8s.io/apimachinery/pkg/conversion"
k8s_api
"k8s.io/kubernetes/pkg/apis/core"
k8s_api_v1
"k8s.io/kubernetes/pkg/apis/core/v1"
)
func
Convert_v1beta1_Event_To_core_Event
(
in
*
v1beta1
.
Event
,
out
*
k8s_api
.
Event
,
s
conversion
.
Scope
)
error
{
if
err
:=
autoConvert_v1beta1_Event_To_core_Event
(
in
,
out
,
s
);
err
!=
nil
{
return
err
}
if
err
:=
k8s_api_v1
.
Convert_v1_ObjectReference_To_core_ObjectReference
(
&
in
.
Regarding
,
&
out
.
InvolvedObject
,
s
);
err
!=
nil
{
return
err
}
if
err
:=
k8s_api_v1
.
Convert_v1_EventSource_To_core_EventSource
(
&
in
.
DeprecatedSource
,
&
out
.
Source
,
s
);
err
!=
nil
{
return
err
}
out
.
Message
=
in
.
Note
out
.
FirstTimestamp
=
in
.
DeprecatedFirstTimestamp
out
.
LastTimestamp
=
in
.
DeprecatedLastTimestamp
out
.
Count
=
in
.
DeprecatedCount
return
nil
}
func
Convert_core_Event_To_v1beta1_Event
(
in
*
k8s_api
.
Event
,
out
*
v1beta1
.
Event
,
s
conversion
.
Scope
)
error
{
if
err
:=
autoConvert_core_Event_To_v1beta1_Event
(
in
,
out
,
s
);
err
!=
nil
{
return
err
}
if
err
:=
k8s_api_v1
.
Convert_core_ObjectReference_To_v1_ObjectReference
(
&
in
.
InvolvedObject
,
&
out
.
Regarding
,
s
);
err
!=
nil
{
return
err
}
if
err
:=
k8s_api_v1
.
Convert_core_EventSource_To_v1_EventSource
(
&
in
.
Source
,
&
out
.
DeprecatedSource
,
s
);
err
!=
nil
{
return
err
}
out
.
Note
=
in
.
Message
out
.
DeprecatedFirstTimestamp
=
in
.
FirstTimestamp
out
.
DeprecatedLastTimestamp
=
in
.
LastTimestamp
out
.
DeprecatedCount
=
in
.
Count
return
nil
}
pkg/apis/events/v1beta1/doc.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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.
*/
// +k8s:conversion-gen=k8s.io/kubernetes/pkg/apis/events
// +k8s:conversion-gen-external-types=../../../../vendor/k8s.io/api/events/v1beta1
// +k8s:defaulter-gen=TypeMeta
// +k8s:defaulter-gen-input=../../../../vendor/k8s.io/api/events/v1beta1
// +groupName=events.k8s.io
package
v1beta1
// import "k8s.io/kubernetes/pkg/apis/events/v1beta1"
pkg/apis/events/v1beta1/register.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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
(
eventsv1beta1
"k8s.io/api/events/v1beta1"
"k8s.io/apimachinery/pkg/runtime/schema"
)
// GroupName is the group name use in this package
const
GroupName
=
"events.k8s.io"
// SchemeGroupVersion is group version used to register these objects
var
SchemeGroupVersion
=
schema
.
GroupVersion
{
Group
:
GroupName
,
Version
:
"v1beta1"
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource
func
Resource
(
resource
string
)
schema
.
GroupResource
{
return
SchemeGroupVersion
.
WithResource
(
resource
)
.
GroupResource
()
}
var
(
localSchemeBuilder
=
&
eventsv1beta1
.
SchemeBuilder
AddToScheme
=
localSchemeBuilder
.
AddToScheme
)
func
init
()
{
// We only register manually written functions here. The registration of the
// generated functions takes place in the generated files. The separation
// makes the code compile even when the generated files are missing.
localSchemeBuilder
.
Register
(
RegisterDefaults
)
}
pkg/master/import_known_versions.go
View file @
69e2a9cb
...
@@ -32,6 +32,7 @@ import (
...
@@ -32,6 +32,7 @@ import (
_
"k8s.io/kubernetes/pkg/apis/certificates/install"
_
"k8s.io/kubernetes/pkg/apis/certificates/install"
_
"k8s.io/kubernetes/pkg/apis/componentconfig/install"
_
"k8s.io/kubernetes/pkg/apis/componentconfig/install"
_
"k8s.io/kubernetes/pkg/apis/core/install"
_
"k8s.io/kubernetes/pkg/apis/core/install"
_
"k8s.io/kubernetes/pkg/apis/events/install"
_
"k8s.io/kubernetes/pkg/apis/extensions/install"
_
"k8s.io/kubernetes/pkg/apis/extensions/install"
_
"k8s.io/kubernetes/pkg/apis/imagepolicy/install"
_
"k8s.io/kubernetes/pkg/apis/imagepolicy/install"
_
"k8s.io/kubernetes/pkg/apis/networking/install"
_
"k8s.io/kubernetes/pkg/apis/networking/install"
...
...
pkg/master/master.go
View file @
69e2a9cb
...
@@ -37,6 +37,7 @@ import (
...
@@ -37,6 +37,7 @@ import (
batchapiv1beta1
"k8s.io/api/batch/v1beta1"
batchapiv1beta1
"k8s.io/api/batch/v1beta1"
certificatesapiv1beta1
"k8s.io/api/certificates/v1beta1"
certificatesapiv1beta1
"k8s.io/api/certificates/v1beta1"
apiv1
"k8s.io/api/core/v1"
apiv1
"k8s.io/api/core/v1"
eventsv1beta1
"k8s.io/api/events/v1beta1"
extensionsapiv1beta1
"k8s.io/api/extensions/v1beta1"
extensionsapiv1beta1
"k8s.io/api/extensions/v1beta1"
networkingapiv1
"k8s.io/api/networking/v1"
networkingapiv1
"k8s.io/api/networking/v1"
policyapiv1beta1
"k8s.io/api/policy/v1beta1"
policyapiv1beta1
"k8s.io/api/policy/v1beta1"
...
@@ -77,6 +78,7 @@ import (
...
@@ -77,6 +78,7 @@ import (
batchrest
"k8s.io/kubernetes/pkg/registry/batch/rest"
batchrest
"k8s.io/kubernetes/pkg/registry/batch/rest"
certificatesrest
"k8s.io/kubernetes/pkg/registry/certificates/rest"
certificatesrest
"k8s.io/kubernetes/pkg/registry/certificates/rest"
corerest
"k8s.io/kubernetes/pkg/registry/core/rest"
corerest
"k8s.io/kubernetes/pkg/registry/core/rest"
eventsrest
"k8s.io/kubernetes/pkg/registry/events/rest"
extensionsrest
"k8s.io/kubernetes/pkg/registry/extensions/rest"
extensionsrest
"k8s.io/kubernetes/pkg/registry/extensions/rest"
networkingrest
"k8s.io/kubernetes/pkg/registry/networking/rest"
networkingrest
"k8s.io/kubernetes/pkg/registry/networking/rest"
policyrest
"k8s.io/kubernetes/pkg/registry/policy/rest"
policyrest
"k8s.io/kubernetes/pkg/registry/policy/rest"
...
@@ -350,6 +352,7 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget)
...
@@ -350,6 +352,7 @@ func (c completedConfig) New(delegationTarget genericapiserver.DelegationTarget)
// See https://github.com/kubernetes/kubernetes/issues/42392
// See https://github.com/kubernetes/kubernetes/issues/42392
appsrest
.
RESTStorageProvider
{},
appsrest
.
RESTStorageProvider
{},
admissionregistrationrest
.
RESTStorageProvider
{},
admissionregistrationrest
.
RESTStorageProvider
{},
eventsrest
.
RESTStorageProvider
{
TTL
:
c
.
ExtraConfig
.
EventTTL
},
}
}
m
.
InstallAPIs
(
c
.
ExtraConfig
.
APIResourceConfigSource
,
c
.
GenericConfig
.
RESTOptionsGetter
,
restStorageProviders
...
)
m
.
InstallAPIs
(
c
.
ExtraConfig
.
APIResourceConfigSource
,
c
.
GenericConfig
.
RESTOptionsGetter
,
restStorageProviders
...
)
...
@@ -479,6 +482,7 @@ func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig {
...
@@ -479,6 +482,7 @@ func DefaultAPIResourceConfigSource() *serverstorage.ResourceConfig {
authorizationapiv1
.
SchemeGroupVersion
,
authorizationapiv1
.
SchemeGroupVersion
,
authorizationapiv1beta1
.
SchemeGroupVersion
,
authorizationapiv1beta1
.
SchemeGroupVersion
,
networkingapiv1
.
SchemeGroupVersion
,
networkingapiv1
.
SchemeGroupVersion
,
eventsv1beta1
.
SchemeGroupVersion
,
)
)
// all extensions resources except these are disabled by default
// all extensions resources except these are disabled by default
...
...
pkg/registry/events/OWNERS
0 → 100644
View file @
69e2a9cb
reviewers:
- gmarek
- deads2k
- sttts
approvers:
- gmarek
- deads2k
- sttts
pkg/registry/events/event/doc.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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
event
// import "k8s.io/kubernetes/pkg/registry/events/event"
pkg/registry/events/event/strategy.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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
event
import
(
"fmt"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation/field"
genericapirequest
"k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/generic"
apistorage
"k8s.io/apiserver/pkg/storage"
"k8s.io/apiserver/pkg/storage/names"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core/validation"
)
// eventStrategy implements verification logic for Pod Presets.
type
eventStrategy
struct
{
runtime
.
ObjectTyper
names
.
NameGenerator
}
// Strategy is the default logic that applies when creating and updating Pod Preset objects.
var
Strategy
=
eventStrategy
{
legacyscheme
.
Scheme
,
names
.
SimpleNameGenerator
}
// NamespaceScoped returns true because all Events need to be within a namespace.
func
(
eventStrategy
)
NamespaceScoped
()
bool
{
return
true
}
// PrepareForCreate clears the status of a Pod Preset before creation.
func
(
eventStrategy
)
PrepareForCreate
(
ctx
genericapirequest
.
Context
,
obj
runtime
.
Object
)
{
}
// PrepareForUpdate clears fields that are not allowed to be set by end users on update.
func
(
eventStrategy
)
PrepareForUpdate
(
ctx
genericapirequest
.
Context
,
obj
,
old
runtime
.
Object
)
{
}
// Validate validates a new Event.
func
(
eventStrategy
)
Validate
(
ctx
genericapirequest
.
Context
,
obj
runtime
.
Object
)
field
.
ErrorList
{
event
:=
obj
.
(
*
api
.
Event
)
return
validation
.
ValidateEvent
(
event
)
}
// Canonicalize normalizes the object after validation.
// AllowCreateOnUpdate is false for Event; this means POST is needed to create one.
func
(
eventStrategy
)
AllowCreateOnUpdate
()
bool
{
return
false
}
func
(
eventStrategy
)
Canonicalize
(
obj
runtime
.
Object
)
{}
// ValidateUpdate is the default update validation for an end user.
func
(
eventStrategy
)
ValidateUpdate
(
ctx
genericapirequest
.
Context
,
obj
,
old
runtime
.
Object
)
field
.
ErrorList
{
event
:=
obj
.
(
*
api
.
Event
)
return
validation
.
ValidateEvent
(
event
)
}
// AllowUnconditionalUpdate is the default update policy for Event objects.
func
(
eventStrategy
)
AllowUnconditionalUpdate
()
bool
{
return
true
}
// SelectableFields returns a field set that represents the object.
func
SelectableFields
(
pip
*
api
.
Event
)
fields
.
Set
{
return
generic
.
ObjectMetaFieldsSet
(
&
pip
.
ObjectMeta
,
true
)
}
// GetAttrs returns labels and fields of a given object for filtering purposes.
func
GetAttrs
(
obj
runtime
.
Object
)
(
labels
.
Set
,
fields
.
Set
,
bool
,
error
)
{
pip
,
ok
:=
obj
.
(
*
api
.
Event
)
if
!
ok
{
return
nil
,
nil
,
false
,
fmt
.
Errorf
(
"given object is not a Event"
)
}
return
labels
.
Set
(
pip
.
ObjectMeta
.
Labels
),
SelectableFields
(
pip
),
pip
.
Initializers
!=
nil
,
nil
}
// Matcher is the filter used by the generic etcd backend to watch events
// from etcd to clients of the apiserver only interested in specific labels/fields.
func
Matcher
(
label
labels
.
Selector
,
field
fields
.
Selector
)
apistorage
.
SelectionPredicate
{
return
apistorage
.
SelectionPredicate
{
Label
:
label
,
Field
:
field
,
GetAttrs
:
GetAttrs
,
}
}
pkg/registry/events/rest/storage_events.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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
rest
import
(
"time"
eventsapiv1beta1
"k8s.io/api/events/v1beta1"
"k8s.io/apiserver/pkg/registry/generic"
"k8s.io/apiserver/pkg/registry/rest"
genericapiserver
"k8s.io/apiserver/pkg/server"
serverstorage
"k8s.io/apiserver/pkg/server/storage"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/events"
eventstore
"k8s.io/kubernetes/pkg/registry/core/event/storage"
)
type
RESTStorageProvider
struct
{
TTL
time
.
Duration
}
func
(
p
RESTStorageProvider
)
NewRESTStorage
(
apiResourceConfigSource
serverstorage
.
APIResourceConfigSource
,
restOptionsGetter
generic
.
RESTOptionsGetter
)
(
genericapiserver
.
APIGroupInfo
,
bool
)
{
apiGroupInfo
:=
genericapiserver
.
NewDefaultAPIGroupInfo
(
events
.
GroupName
,
legacyscheme
.
Registry
,
legacyscheme
.
Scheme
,
legacyscheme
.
ParameterCodec
,
legacyscheme
.
Codecs
)
// If you add a version here, be sure to add an entry in `k8s.io/kubernetes/cmd/kube-apiserver/app/aggregator.go with specific priorities.
// TODO refactor the plumbing to provide the information in the APIGroupInfo
if
apiResourceConfigSource
.
AnyResourcesForVersionEnabled
(
eventsapiv1beta1
.
SchemeGroupVersion
)
{
apiGroupInfo
.
VersionedResourcesStorageMap
[
eventsapiv1beta1
.
SchemeGroupVersion
.
Version
]
=
p
.
v1beta1Storage
(
apiResourceConfigSource
,
restOptionsGetter
)
apiGroupInfo
.
GroupMeta
.
GroupVersion
=
eventsapiv1beta1
.
SchemeGroupVersion
}
return
apiGroupInfo
,
true
}
func
(
p
RESTStorageProvider
)
v1beta1Storage
(
apiResourceConfigSource
serverstorage
.
APIResourceConfigSource
,
restOptionsGetter
generic
.
RESTOptionsGetter
)
map
[
string
]
rest
.
Storage
{
version
:=
eventsapiv1beta1
.
SchemeGroupVersion
storage
:=
map
[
string
]
rest
.
Storage
{}
if
apiResourceConfigSource
.
ResourceEnabled
(
version
.
WithResource
(
"events"
))
{
eventsStorage
:=
eventstore
.
NewREST
(
restOptionsGetter
,
uint64
(
p
.
TTL
.
Seconds
()))
storage
[
"events"
]
=
eventsStorage
}
return
storage
}
func
(
p
RESTStorageProvider
)
GroupName
()
string
{
return
events
.
GroupName
}
staging/src/k8s.io/api/core/v1/types.go
View file @
69e2a9cb
...
@@ -4468,7 +4468,6 @@ const (
...
@@ -4468,7 +4468,6 @@ const (
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Event is a report of an event somewhere in the cluster.
// 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
{
type
Event
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
TypeMeta
`json:",inline"`
// Standard object's metadata.
// Standard object's metadata.
...
@@ -4508,8 +4507,51 @@ type Event struct {
...
@@ -4508,8 +4507,51 @@ type Event struct {
// Type of this event (Normal, Warning), new types could be added in the future
// Type of this event (Normal, Warning), new types could be added in the future
// +optional
// +optional
Type
string
`json:"type,omitempty" protobuf:"bytes,9,opt,name=type"`
Type
string
`json:"type,omitempty" protobuf:"bytes,9,opt,name=type"`
// Time when this Event was first observed.
// +optional
EventTime
metav1
.
MicroTime
`json:"eventTime,omitempty" protobuf:"bytes,10,opt,name=eventTime"`
// Data about the Event series this event represents or nil if it's a singleton Event.
// +optional
Series
*
EventSeries
`json:"series,omitempty" protobuf:"bytes,11,opt,name=series"`
// What action was taken/failed regarding to the Regarding object.
// +optional
Action
string
`json:"action,omitempty" protobuf:"bytes,12,opt,name=action"`
// Optional secondary object for more complex actions.
// +optional
Related
*
ObjectReference
`json:"related,omitempty" protobuf:"bytes,13,opt,name=related"`
// Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
// +optional
ReportingController
string
`json:"reportingComponent" protobuf:"bytes,14,opt,name=reportingComponent"`
// ID of the controller instance, e.g. `kubelet-xyzf`.
// +optional
ReportingInstance
string
`json:"reportingInstance" protobuf:"bytes,15,opt,name=reportingInstance"`
}
// EventSeries contain information on series of events, i.e. thing that was/is happening
// continously for some time.
type
EventSeries
struct
{
// Number of occurrences in this series up to the last heartbeat time
Count
int32
`json:"count,omitempty" protobuf:"varint,1,name=count"`
// Time of the last occurence observed
LastObservedTime
metav1
.
MicroTime
`json:"lastObservedTime,omitempty" protobuf:"bytes,2,name=lastObservedTime"`
// State of this Series: Ongoing or Finished
State
EventSeriesState
`json:"state,omitempty" protobuf:"bytes,3,name=state"`
}
}
type
EventSeriesState
string
const
(
EventSeriesStateOngoing
EventSeriesState
=
"Ongoing"
EventSeriesStateFinished
EventSeriesState
=
"Finished"
EventSeriesStateUnknown
EventSeriesState
=
"Unknown"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// EventList is a list of events.
// EventList is a list of events.
...
...
staging/src/k8s.io/api/events/OWNERS
0 → 100644
View file @
69e2a9cb
reviewers:
- gmarek
- deads2k
- sttts
approvers:
- gmarek
- deads2k
- sttts
staging/src/k8s.io/api/events/v1beta1/doc.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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.
*/
// +k8s:deepcopy-gen=package
// +k8s:openapi-gen=true
// +groupName=events.k8s.io
package
v1beta1
// import "k8s.io/api/events/v1beta1"
staging/src/k8s.io/api/events/v1beta1/register.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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
(
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)
// GroupName is the group name use in this package
const
GroupName
=
"events.k8s.io"
// SchemeGroupVersion is group version used to register these objects
var
SchemeGroupVersion
=
schema
.
GroupVersion
{
Group
:
GroupName
,
Version
:
"v1beta1"
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource
func
Resource
(
resource
string
)
schema
.
GroupResource
{
return
SchemeGroupVersion
.
WithResource
(
resource
)
.
GroupResource
()
}
var
(
// TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api.
// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
SchemeBuilder
=
runtime
.
NewSchemeBuilder
(
addKnownTypes
)
localSchemeBuilder
=
&
SchemeBuilder
AddToScheme
=
localSchemeBuilder
.
AddToScheme
)
// Adds the list of known types to api.Scheme.
func
addKnownTypes
(
scheme
*
runtime
.
Scheme
)
error
{
scheme
.
AddKnownTypes
(
SchemeGroupVersion
,
&
Event
{},
&
EventList
{},
)
metav1
.
AddToGroupVersion
(
scheme
,
SchemeGroupVersion
)
return
nil
}
staging/src/k8s.io/api/events/v1beta1/types.go
0 → 100644
View file @
69e2a9cb
/*
Copyright 2017 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
(
corev1
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Event is a report of an event somewhere in the cluster. It generally denotes some state change in the system.
type
Event
struct
{
metav1
.
TypeMeta
`json:",inline"`
// +optional
metav1
.
ObjectMeta
`json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Required. Time when this Event was first observed.
EventTime
metav1
.
MicroTime
`json:"eventTime" protobuf:"bytes,2,opt,name=eventTime"`
// Data about the Event series this event represents or nil if it's a singleton Event.
// +optional
Series
*
EventSeries
`json:"series,omitempty" protobuf:"bytes,3,opt,name=series"`
// Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
// +optional
ReportingController
string
`json:"reportingController,omitempty" protobuf:"bytes,4,opt,name=reportingController"`
// ID of the controller instance, e.g. `kubelet-xyzf`.
// +optional
ReportingInstance
string
`json:"reportingInstance,omitemtpy" protobuf:"bytes,5,opt,name=reportingInstance"`
// What action was taken/failed regarding to the regarding object.
// +optional
Action
string
`json:"action,omitemtpy" protobuf:"bytes,6,name=action"`
// Why the action was taken.
Reason
string
`json:"reason,omitempty" protobuf:"bytes,7,name=reason"`
// The object this Event is about. In most cases it's an Object reporting controller implements.
// E.g. ReplicaSetController implements ReplicaSets and this event is emitted because
// it acts on some changes in a ReplicaSet object.
// +optional
Regarding
corev1
.
ObjectReference
`json:"regarding,omitempty" protobuf:"bytes,8,opt,name=regarding"`
// Optional secondary object for more complex actions. E.g. when regarding object triggers
// a creation or deletion of related object.
// +optional
Related
*
corev1
.
ObjectReference
`json:"related,omitempty" protobuf:"bytes,9,opt,name=related"`
// Optional. A human-readable description of the status of this operation.
// Maximal length of the note is 1kB, but libraries should be prepared to
// handle values up to 64kB.
// +optional
Note
string
`json:"note,omitempty" protobuf:"bytes,10,opt,name=note"`
// Type of this event (Normal, Warning), new types could be added in the
// future.
// +optional
Type
string
`json:"type,omitempty" protobuf:"bytes,11,opt,name=type"`
// Deprecated field assuring backward compatibility with core.v1 Event type
// +optional
DeprecatedSource
corev1
.
EventSource
`json:"deprecatedSource,omitempty" protobuf:"bytes,12,opt,name=deprecatedSource"`
// Deprecated field assuring backward compatibility with core.v1 Event type
// +optional
DeprecatedFirstTimestamp
metav1
.
Time
`json:"deprecatedFirstTimestamp,omitempty" protobuf:"bytes,13,opt,name=deprecatedFirstTimestamp"`
// Deprecated field assuring backward compatibility with core.v1 Event type
// +optional
DeprecatedLastTimestamp
metav1
.
Time
`json:"deprecatedLastTimestamp,omitempty" protobuf:"bytes,14,opt,name=deprecatedLastTimestamp"`
// Deprecated field assuring backward compatibility with core.v1 Event type
// +optional
DeprecatedCount
int32
`json:"deprecatedCount,omitempty" protobuf:"varint,15,opt,name=deprecatedCount"`
}
// EventSeries contain information on series of events, i.e. thing that was/is happening
// continously for some time.
type
EventSeries
struct
{
// Number of occurrences in this series up to the last heartbeat time
Count
int32
`json:"count" protobuf:"varint,1,opt,name=count"`
// Time when last Event from the series was seen before last heartbeat.
LastObservedTime
metav1
.
MicroTime
`json:"lastObservedTime" protobuf:"bytes,2,opt,name=lastObservedTime"`
// Information whether this series is ongoing or finished.
State
EventSeriesState
`json:"state" protobuf:"bytes,3,opt,name=state"`
}
type
EventSeriesState
string
const
(
EventSeriesStateOngoing
EventSeriesState
=
"Ongoing"
EventSeriesStateFinished
EventSeriesState
=
"Finished"
EventSeriesStateUnknown
EventSeriesState
=
"Unknown"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// EventList is a list of Event objects.
type
EventList
struct
{
metav1
.
TypeMeta
`json:",inline"`
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional
metav1
.
ListMeta
`json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Items is a list of schema objects.
Items
[]
Event
`json:"items" protobuf:"bytes,2,rep,name=items"`
}
staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/conversion.go
View file @
69e2a9cb
...
@@ -38,6 +38,7 @@ func AddConversionFuncs(scheme *runtime.Scheme) error {
...
@@ -38,6 +38,7 @@ func AddConversionFuncs(scheme *runtime.Scheme) error {
Convert_intstr_IntOrString_To_intstr_IntOrString
,
Convert_intstr_IntOrString_To_intstr_IntOrString
,
Convert_unversioned_Time_To_unversioned_Time
,
Convert_unversioned_Time_To_unversioned_Time
,
Convert_unversioned_MicroTime_To_unversioned_MicroTime
,
Convert_Pointer_v1_Duration_To_v1_Duration
,
Convert_Pointer_v1_Duration_To_v1_Duration
,
Convert_v1_Duration_To_Pointer_v1_Duration
,
Convert_v1_Duration_To_Pointer_v1_Duration
,
...
@@ -199,6 +200,12 @@ func Convert_v1_Duration_To_Pointer_v1_Duration(in *Duration, out **Duration, s
...
@@ -199,6 +200,12 @@ func Convert_v1_Duration_To_Pointer_v1_Duration(in *Duration, out **Duration, s
return
nil
return
nil
}
}
func
Convert_unversioned_MicroTime_To_unversioned_MicroTime
(
in
*
MicroTime
,
out
*
MicroTime
,
s
conversion
.
Scope
)
error
{
// Cannot deep copy these, because time.Time has unexported fields.
*
out
=
*
in
return
nil
}
// Convert_Slice_string_To_unversioned_Time allows converting a URL query parameter value
// Convert_Slice_string_To_unversioned_Time allows converting a URL query parameter value
func
Convert_Slice_string_To_unversioned_Time
(
input
*
[]
string
,
out
*
Time
,
s
conversion
.
Scope
)
error
{
func
Convert_Slice_string_To_unversioned_Time
(
input
*
[]
string
,
out
*
Time
,
s
conversion
.
Scope
)
error
{
str
:=
""
str
:=
""
...
...
staging/src/k8s.io/client-go/informers/factory.go
View file @
69e2a9cb
...
@@ -28,6 +28,7 @@ import (
...
@@ -28,6 +28,7 @@ import (
batch
"k8s.io/client-go/informers/batch"
batch
"k8s.io/client-go/informers/batch"
certificates
"k8s.io/client-go/informers/certificates"
certificates
"k8s.io/client-go/informers/certificates"
core
"k8s.io/client-go/informers/core"
core
"k8s.io/client-go/informers/core"
events
"k8s.io/client-go/informers/events"
extensions
"k8s.io/client-go/informers/extensions"
extensions
"k8s.io/client-go/informers/extensions"
internalinterfaces
"k8s.io/client-go/informers/internalinterfaces"
internalinterfaces
"k8s.io/client-go/informers/internalinterfaces"
networking
"k8s.io/client-go/informers/networking"
networking
"k8s.io/client-go/informers/networking"
...
@@ -140,6 +141,7 @@ type SharedInformerFactory interface {
...
@@ -140,6 +141,7 @@ type SharedInformerFactory interface {
Batch
()
batch
.
Interface
Batch
()
batch
.
Interface
Certificates
()
certificates
.
Interface
Certificates
()
certificates
.
Interface
Core
()
core
.
Interface
Core
()
core
.
Interface
Events
()
events
.
Interface
Extensions
()
extensions
.
Interface
Extensions
()
extensions
.
Interface
Networking
()
networking
.
Interface
Networking
()
networking
.
Interface
Policy
()
policy
.
Interface
Policy
()
policy
.
Interface
...
@@ -173,6 +175,10 @@ func (f *sharedInformerFactory) Core() core.Interface {
...
@@ -173,6 +175,10 @@ func (f *sharedInformerFactory) Core() core.Interface {
return
core
.
New
(
f
,
f
.
namespace
,
f
.
tweakListOptions
)
return
core
.
New
(
f
,
f
.
namespace
,
f
.
tweakListOptions
)
}
}
func
(
f
*
sharedInformerFactory
)
Events
()
events
.
Interface
{
return
events
.
New
(
f
)
}
func
(
f
*
sharedInformerFactory
)
Extensions
()
extensions
.
Interface
{
func
(
f
*
sharedInformerFactory
)
Extensions
()
extensions
.
Interface
{
return
extensions
.
New
(
f
,
f
.
namespace
,
f
.
tweakListOptions
)
return
extensions
.
New
(
f
,
f
.
namespace
,
f
.
tweakListOptions
)
}
}
...
...
staging/src/k8s.io/client-go/informers/generic.go
View file @
69e2a9cb
...
@@ -32,6 +32,7 @@ import (
...
@@ -32,6 +32,7 @@ import (
v2alpha1
"k8s.io/api/batch/v2alpha1"
v2alpha1
"k8s.io/api/batch/v2alpha1"
certificates_v1beta1
"k8s.io/api/certificates/v1beta1"
certificates_v1beta1
"k8s.io/api/certificates/v1beta1"
core_v1
"k8s.io/api/core/v1"
core_v1
"k8s.io/api/core/v1"
events_v1beta1
"k8s.io/api/events/v1beta1"
extensions_v1beta1
"k8s.io/api/extensions/v1beta1"
extensions_v1beta1
"k8s.io/api/extensions/v1beta1"
networking_v1
"k8s.io/api/networking/v1"
networking_v1
"k8s.io/api/networking/v1"
policy_v1beta1
"k8s.io/api/policy/v1beta1"
policy_v1beta1
"k8s.io/api/policy/v1beta1"
...
@@ -173,6 +174,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
...
@@ -173,6 +174,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
case
core_v1
.
SchemeGroupVersion
.
WithResource
(
"serviceaccounts"
)
:
case
core_v1
.
SchemeGroupVersion
.
WithResource
(
"serviceaccounts"
)
:
return
&
genericInformer
{
resource
:
resource
.
GroupResource
(),
informer
:
f
.
Core
()
.
V1
()
.
ServiceAccounts
()
.
Informer
()},
nil
return
&
genericInformer
{
resource
:
resource
.
GroupResource
(),
informer
:
f
.
Core
()
.
V1
()
.
ServiceAccounts
()
.
Informer
()},
nil
// Group=events, Version=v1beta1
case
events_v1beta1
.
SchemeGroupVersion
.
WithResource
(
"events"
)
:
return
&
genericInformer
{
resource
:
resource
.
GroupResource
(),
informer
:
f
.
Events
()
.
V1beta1
()
.
Events
()
.
Informer
()},
nil
// Group=extensions, Version=v1beta1
// Group=extensions, Version=v1beta1
case
extensions_v1beta1
.
SchemeGroupVersion
.
WithResource
(
"daemonsets"
)
:
case
extensions_v1beta1
.
SchemeGroupVersion
.
WithResource
(
"daemonsets"
)
:
return
&
genericInformer
{
resource
:
resource
.
GroupResource
(),
informer
:
f
.
Extensions
()
.
V1beta1
()
.
DaemonSets
()
.
Informer
()},
nil
return
&
genericInformer
{
resource
:
resource
.
GroupResource
(),
informer
:
f
.
Extensions
()
.
V1beta1
()
.
DaemonSets
()
.
Informer
()},
nil
...
...
staging/src/k8s.io/client-go/kubernetes/clientset.go
View file @
69e2a9cb
...
@@ -35,6 +35,7 @@ import (
...
@@ -35,6 +35,7 @@ import (
batchv2alpha1
"k8s.io/client-go/kubernetes/typed/batch/v2alpha1"
batchv2alpha1
"k8s.io/client-go/kubernetes/typed/batch/v2alpha1"
certificatesv1beta1
"k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
certificatesv1beta1
"k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
corev1
"k8s.io/client-go/kubernetes/typed/core/v1"
corev1
"k8s.io/client-go/kubernetes/typed/core/v1"
eventsv1beta1
"k8s.io/client-go/kubernetes/typed/events/v1beta1"
extensionsv1beta1
"k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
extensionsv1beta1
"k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
networkingv1
"k8s.io/client-go/kubernetes/typed/networking/v1"
networkingv1
"k8s.io/client-go/kubernetes/typed/networking/v1"
policyv1beta1
"k8s.io/client-go/kubernetes/typed/policy/v1beta1"
policyv1beta1
"k8s.io/client-go/kubernetes/typed/policy/v1beta1"
...
@@ -84,6 +85,9 @@ type Interface interface {
...
@@ -84,6 +85,9 @@ type Interface interface {
CoreV1
()
corev1
.
CoreV1Interface
CoreV1
()
corev1
.
CoreV1Interface
// Deprecated: please explicitly pick a version if possible.
// Deprecated: please explicitly pick a version if possible.
Core
()
corev1
.
CoreV1Interface
Core
()
corev1
.
CoreV1Interface
EventsV1beta1
()
eventsv1beta1
.
EventsV1beta1Interface
// Deprecated: please explicitly pick a version if possible.
Events
()
eventsv1beta1
.
EventsV1beta1Interface
ExtensionsV1beta1
()
extensionsv1beta1
.
ExtensionsV1beta1Interface
ExtensionsV1beta1
()
extensionsv1beta1
.
ExtensionsV1beta1Interface
// Deprecated: please explicitly pick a version if possible.
// Deprecated: please explicitly pick a version if possible.
Extensions
()
extensionsv1beta1
.
ExtensionsV1beta1Interface
Extensions
()
extensionsv1beta1
.
ExtensionsV1beta1Interface
...
@@ -131,6 +135,7 @@ type Clientset struct {
...
@@ -131,6 +135,7 @@ type Clientset struct {
batchV2alpha1
*
batchv2alpha1
.
BatchV2alpha1Client
batchV2alpha1
*
batchv2alpha1
.
BatchV2alpha1Client
certificatesV1beta1
*
certificatesv1beta1
.
CertificatesV1beta1Client
certificatesV1beta1
*
certificatesv1beta1
.
CertificatesV1beta1Client
coreV1
*
corev1
.
CoreV1Client
coreV1
*
corev1
.
CoreV1Client
eventsV1beta1
*
eventsv1beta1
.
EventsV1beta1Client
extensionsV1beta1
*
extensionsv1beta1
.
ExtensionsV1beta1Client
extensionsV1beta1
*
extensionsv1beta1
.
ExtensionsV1beta1Client
networkingV1
*
networkingv1
.
NetworkingV1Client
networkingV1
*
networkingv1
.
NetworkingV1Client
policyV1beta1
*
policyv1beta1
.
PolicyV1beta1Client
policyV1beta1
*
policyv1beta1
.
PolicyV1beta1Client
...
@@ -272,6 +277,17 @@ func (c *Clientset) Core() corev1.CoreV1Interface {
...
@@ -272,6 +277,17 @@ func (c *Clientset) Core() corev1.CoreV1Interface {
return
c
.
coreV1
return
c
.
coreV1
}
}
// EventsV1beta1 retrieves the EventsV1beta1Client
func
(
c
*
Clientset
)
EventsV1beta1
()
eventsv1beta1
.
EventsV1beta1Interface
{
return
c
.
eventsV1beta1
}
// Deprecated: Events retrieves the default version of EventsClient.
// Please explicitly pick a version.
func
(
c
*
Clientset
)
Events
()
eventsv1beta1
.
EventsV1beta1Interface
{
return
c
.
eventsV1beta1
}
// ExtensionsV1beta1 retrieves the ExtensionsV1beta1Client
// ExtensionsV1beta1 retrieves the ExtensionsV1beta1Client
func
(
c
*
Clientset
)
ExtensionsV1beta1
()
extensionsv1beta1
.
ExtensionsV1beta1Interface
{
func
(
c
*
Clientset
)
ExtensionsV1beta1
()
extensionsv1beta1
.
ExtensionsV1beta1Interface
{
return
c
.
extensionsV1beta1
return
c
.
extensionsV1beta1
...
@@ -449,6 +465,10 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
...
@@ -449,6 +465,10 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
cs
.
eventsV1beta1
,
err
=
eventsv1beta1
.
NewForConfig
(
&
configShallowCopy
)
if
err
!=
nil
{
return
nil
,
err
}
cs
.
extensionsV1beta1
,
err
=
extensionsv1beta1
.
NewForConfig
(
&
configShallowCopy
)
cs
.
extensionsV1beta1
,
err
=
extensionsv1beta1
.
NewForConfig
(
&
configShallowCopy
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
...
@@ -522,6 +542,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset {
...
@@ -522,6 +542,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset {
cs
.
batchV2alpha1
=
batchv2alpha1
.
NewForConfigOrDie
(
c
)
cs
.
batchV2alpha1
=
batchv2alpha1
.
NewForConfigOrDie
(
c
)
cs
.
certificatesV1beta1
=
certificatesv1beta1
.
NewForConfigOrDie
(
c
)
cs
.
certificatesV1beta1
=
certificatesv1beta1
.
NewForConfigOrDie
(
c
)
cs
.
coreV1
=
corev1
.
NewForConfigOrDie
(
c
)
cs
.
coreV1
=
corev1
.
NewForConfigOrDie
(
c
)
cs
.
eventsV1beta1
=
eventsv1beta1
.
NewForConfigOrDie
(
c
)
cs
.
extensionsV1beta1
=
extensionsv1beta1
.
NewForConfigOrDie
(
c
)
cs
.
extensionsV1beta1
=
extensionsv1beta1
.
NewForConfigOrDie
(
c
)
cs
.
networkingV1
=
networkingv1
.
NewForConfigOrDie
(
c
)
cs
.
networkingV1
=
networkingv1
.
NewForConfigOrDie
(
c
)
cs
.
policyV1beta1
=
policyv1beta1
.
NewForConfigOrDie
(
c
)
cs
.
policyV1beta1
=
policyv1beta1
.
NewForConfigOrDie
(
c
)
...
@@ -557,6 +578,7 @@ func New(c rest.Interface) *Clientset {
...
@@ -557,6 +578,7 @@ func New(c rest.Interface) *Clientset {
cs
.
batchV2alpha1
=
batchv2alpha1
.
New
(
c
)
cs
.
batchV2alpha1
=
batchv2alpha1
.
New
(
c
)
cs
.
certificatesV1beta1
=
certificatesv1beta1
.
New
(
c
)
cs
.
certificatesV1beta1
=
certificatesv1beta1
.
New
(
c
)
cs
.
coreV1
=
corev1
.
New
(
c
)
cs
.
coreV1
=
corev1
.
New
(
c
)
cs
.
eventsV1beta1
=
eventsv1beta1
.
New
(
c
)
cs
.
extensionsV1beta1
=
extensionsv1beta1
.
New
(
c
)
cs
.
extensionsV1beta1
=
extensionsv1beta1
.
New
(
c
)
cs
.
networkingV1
=
networkingv1
.
New
(
c
)
cs
.
networkingV1
=
networkingv1
.
New
(
c
)
cs
.
policyV1beta1
=
policyv1beta1
.
New
(
c
)
cs
.
policyV1beta1
=
policyv1beta1
.
New
(
c
)
...
...
staging/src/k8s.io/client-go/kubernetes/fake/register.go
View file @
69e2a9cb
...
@@ -33,6 +33,7 @@ import (
...
@@ -33,6 +33,7 @@ import (
batchv2alpha1
"k8s.io/api/batch/v2alpha1"
batchv2alpha1
"k8s.io/api/batch/v2alpha1"
certificatesv1beta1
"k8s.io/api/certificates/v1beta1"
certificatesv1beta1
"k8s.io/api/certificates/v1beta1"
corev1
"k8s.io/api/core/v1"
corev1
"k8s.io/api/core/v1"
eventsv1beta1
"k8s.io/api/events/v1beta1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
networkingv1
"k8s.io/api/networking/v1"
networkingv1
"k8s.io/api/networking/v1"
policyv1beta1
"k8s.io/api/policy/v1beta1"
policyv1beta1
"k8s.io/api/policy/v1beta1"
...
@@ -90,6 +91,7 @@ func AddToScheme(scheme *runtime.Scheme) {
...
@@ -90,6 +91,7 @@ func AddToScheme(scheme *runtime.Scheme) {
batchv2alpha1
.
AddToScheme
(
scheme
)
batchv2alpha1
.
AddToScheme
(
scheme
)
certificatesv1beta1
.
AddToScheme
(
scheme
)
certificatesv1beta1
.
AddToScheme
(
scheme
)
corev1
.
AddToScheme
(
scheme
)
corev1
.
AddToScheme
(
scheme
)
eventsv1beta1
.
AddToScheme
(
scheme
)
extensionsv1beta1
.
AddToScheme
(
scheme
)
extensionsv1beta1
.
AddToScheme
(
scheme
)
networkingv1
.
AddToScheme
(
scheme
)
networkingv1
.
AddToScheme
(
scheme
)
policyv1beta1
.
AddToScheme
(
scheme
)
policyv1beta1
.
AddToScheme
(
scheme
)
...
...
staging/src/k8s.io/client-go/kubernetes/scheme/register.go
View file @
69e2a9cb
...
@@ -33,6 +33,7 @@ import (
...
@@ -33,6 +33,7 @@ import (
batchv2alpha1
"k8s.io/api/batch/v2alpha1"
batchv2alpha1
"k8s.io/api/batch/v2alpha1"
certificatesv1beta1
"k8s.io/api/certificates/v1beta1"
certificatesv1beta1
"k8s.io/api/certificates/v1beta1"
corev1
"k8s.io/api/core/v1"
corev1
"k8s.io/api/core/v1"
eventsv1beta1
"k8s.io/api/events/v1beta1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
networkingv1
"k8s.io/api/networking/v1"
networkingv1
"k8s.io/api/networking/v1"
policyv1beta1
"k8s.io/api/policy/v1beta1"
policyv1beta1
"k8s.io/api/policy/v1beta1"
...
@@ -90,6 +91,7 @@ func AddToScheme(scheme *runtime.Scheme) {
...
@@ -90,6 +91,7 @@ func AddToScheme(scheme *runtime.Scheme) {
batchv2alpha1
.
AddToScheme
(
scheme
)
batchv2alpha1
.
AddToScheme
(
scheme
)
certificatesv1beta1
.
AddToScheme
(
scheme
)
certificatesv1beta1
.
AddToScheme
(
scheme
)
corev1
.
AddToScheme
(
scheme
)
corev1
.
AddToScheme
(
scheme
)
eventsv1beta1
.
AddToScheme
(
scheme
)
extensionsv1beta1
.
AddToScheme
(
scheme
)
extensionsv1beta1
.
AddToScheme
(
scheme
)
networkingv1
.
AddToScheme
(
scheme
)
networkingv1
.
AddToScheme
(
scheme
)
policyv1beta1
.
AddToScheme
(
scheme
)
policyv1beta1
.
AddToScheme
(
scheme
)
...
...
test/integration/etcd/etcd_storage_path_test.go
View file @
69e2a9cb
...
@@ -247,6 +247,14 @@ var etcdStorageData = map[schema.GroupVersionResource]struct {
...
@@ -247,6 +247,14 @@ var etcdStorageData = map[schema.GroupVersionResource]struct {
},
},
// --
// --
// k8s.io/kubernetes/pkg/apis/events/v1beta1
gvr
(
"events.k8s.io"
,
"v1beta1"
,
"events"
)
:
{
stub
:
`{"metadata": {"name": "event2"}, "regarding": {"namespace": "etcdstoragepathtestnamespace"}, "note": "some data here", "eventTime": "2017-08-09T15:04:05.000000Z", "reportingInstance": "node-xyz", "reportingController": "k8s.io/my-controller", "action": "DidNothing", "reason": "Lazyness"}`
,
expectedEtcdPath
:
"/registry/events/etcdstoragepathtestnamespace/event2"
,
expectedGVK
:
gvkP
(
""
,
"v1"
,
"Event"
),
},
// --
// k8s.io/kubernetes/pkg/apis/extensions/v1beta1
// k8s.io/kubernetes/pkg/apis/extensions/v1beta1
gvr
(
"extensions"
,
"v1beta1"
,
"daemonsets"
)
:
{
gvr
(
"extensions"
,
"v1beta1"
,
"daemonsets"
)
:
{
stub
:
`{"metadata": {"name": "ds1"}, "spec": {"selector": {"matchLabels": {"u": "t"}}, "template": {"metadata": {"labels": {"u": "t"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container5"}]}}}}`
,
stub
:
`{"metadata": {"name": "ds1"}, "spec": {"selector": {"matchLabels": {"u": "t"}}, "template": {"metadata": {"labels": {"u": "t"}}, "spec": {"containers": [{"image": "fedora:latest", "name": "container5"}]}}}}`
,
...
...
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