update client-go staging

pull/6/head
deads2k 2017-01-19 13:15:12 -05:00
parent 4f8f6006cf
commit 392a4d949f
34 changed files with 1060 additions and 900 deletions

View File

@ -324,143 +324,147 @@
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/fields",
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/labels",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/openapi",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/selection",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/types",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/rand",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/version",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/watch",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "fd5da6b9d070d172e9677941ced569deabdd05ea"
"Rev": "a6364387e6d54a910a0810543a14b6867eafaa99"
}
]
}

View File

@ -0,0 +1,18 @@
/*
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 openapi holds shared codes and types between open API code generator and spec generator.
package openapi

View File

@ -19,11 +19,11 @@ package v1
import (
"fmt"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/client-go/pkg/fields"
)
// The EventExpansion interface allows manually adding extra methods to the EventInterface.

View File

@ -17,10 +17,10 @@ limitations under the License.
package fake
import (
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/client-go/pkg/fields"
"k8s.io/client-go/testing"
)

View File

@ -21,11 +21,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/conversion"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/client-go/pkg/api/resource"
"k8s.io/client-go/pkg/fields"
"k8s.io/client-go/pkg/util/intstr"
utillabels "k8s.io/client-go/pkg/util/labels"
)

View File

@ -17,9 +17,9 @@ limitations under the License.
package api
import (
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/pkg/fields"
)
func addDefaultingFuncs(scheme *runtime.Scheme) error {

View File

@ -27,13 +27,13 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/conversion"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/pkg/api/resource"
"k8s.io/client-go/pkg/fields"
)
// Conversion error conveniently packages up errors in conversions.

View File

@ -18,11 +18,11 @@ package api
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/pkg/api/resource"
"k8s.io/client-go/pkg/fields"
"k8s.io/client-go/pkg/util/intstr"
)
@ -1856,6 +1856,10 @@ type PodSpec struct {
// If specified, the pod's scheduling constraints
// +optional
Affinity *Affinity
// If specified, the pod will be dispatched by specified scheduler.
// If not specified, the pod will be dispatched by default scheduler.
// +optional
SchedulerName string
}
// Sysctl defines a kernel parameter to be set

View File

@ -174,6 +174,9 @@ func SetDefaults_PodSpec(obj *PodSpec) {
period := int64(DefaultTerminationGracePeriodSeconds)
obj.TerminationGracePeriodSeconds = &period
}
if obj.SchedulerName == "" {
obj.SchedulerName = DefaultSchedulerName
}
}
func SetDefaults_Probe(obj *Probe) {
if obj.TimeoutSeconds == 0 {

File diff suppressed because it is too large Load Diff

View File

@ -2553,6 +2553,11 @@ message PodSpec {
// If specified, the pod's scheduling constraints
// +optional
optional Affinity affinity = 18;
// If specified, the pod will be dispatched by specified scheduler.
// If not specified, the pod will be dispatched by default scheduler.
// +optional
optional string schedulername = 19;
}
// PodStatus represents information about the status of a pod. Status may trail the actual

View File

@ -22,12 +22,12 @@ import (
"strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/fields"
)
// IsOpaqueIntResourceName returns true if the resource name has the opaque

View File

@ -29772,7 +29772,7 @@ func (x *PodSpec) CodecEncodeSelf(e *codec1978.Encoder) {
} else {
yysep2 := !z.EncBinary()
yy2arr2 := z.EncBasicHandle().StructToArray
var yyq2 [18]bool
var yyq2 [19]bool
_, _, _ = yysep2, yyq2, yy2arr2
const yyr2 bool = false
yyq2[0] = len(x.Volumes) != 0
@ -29792,9 +29792,10 @@ func (x *PodSpec) CodecEncodeSelf(e *codec1978.Encoder) {
yyq2[15] = x.Hostname != ""
yyq2[16] = x.Subdomain != ""
yyq2[17] = x.Affinity != nil
yyq2[18] = x.SchedulerName != ""
var yynn2 int
if yyr2 || yy2arr2 {
r.EncodeArrayStart(18)
r.EncodeArrayStart(19)
} else {
yynn2 = 1
for _, b := range yyq2 {
@ -30277,6 +30278,31 @@ func (x *PodSpec) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
if yyq2[18] {
yym62 := z.EncBinary()
_ = yym62
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.SchedulerName))
}
} else {
r.EncodeString(codecSelferC_UTF81234, "")
}
} else {
if yyq2[18] {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("schedulername"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yym63 := z.EncBinary()
_ = yym63
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.SchedulerName))
}
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
} else {
@ -30550,6 +30576,18 @@ func (x *PodSpec) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
}
x.Affinity.CodecDecodeSelf(d)
}
case "schedulername":
if r.TryDecodeAsNil() {
x.SchedulerName = ""
} else {
yyv36 := &x.SchedulerName
yym37 := z.DecBinary()
_ = yym37
if false {
} else {
*((*string)(yyv36)) = r.DecodeString()
}
}
default:
z.DecStructFieldNotFound(-1, yys3)
} // end switch yys3
@ -30561,16 +30599,16 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
var h codecSelfer1234
z, r := codec1978.GenHelperDecoder(d)
_, _, _ = h, z, r
var yyj36 int
var yyb36 bool
var yyhl36 bool = l >= 0
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
var yyj38 int
var yyb38 bool
var yyhl38 bool = l >= 0
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30578,21 +30616,21 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.Volumes = nil
} else {
yyv37 := &x.Volumes
yym38 := z.DecBinary()
_ = yym38
yyv39 := &x.Volumes
yym40 := z.DecBinary()
_ = yym40
if false {
} else {
h.decSliceVolume((*[]Volume)(yyv37), d)
h.decSliceVolume((*[]Volume)(yyv39), d)
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30600,21 +30638,21 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.Containers = nil
} else {
yyv39 := &x.Containers
yym40 := z.DecBinary()
_ = yym40
yyv41 := &x.Containers
yym42 := z.DecBinary()
_ = yym42
if false {
} else {
h.decSliceContainer((*[]Container)(yyv39), d)
h.decSliceContainer((*[]Container)(yyv41), d)
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30622,16 +30660,16 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.RestartPolicy = ""
} else {
yyv41 := &x.RestartPolicy
yyv41.CodecDecodeSelf(d)
yyv43 := &x.RestartPolicy
yyv43.CodecDecodeSelf(d)
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30644,20 +30682,20 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if x.TerminationGracePeriodSeconds == nil {
x.TerminationGracePeriodSeconds = new(int64)
}
yym43 := z.DecBinary()
_ = yym43
yym45 := z.DecBinary()
_ = yym45
if false {
} else {
*((*int64)(x.TerminationGracePeriodSeconds)) = int64(r.DecodeInt(64))
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30670,20 +30708,20 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if x.ActiveDeadlineSeconds == nil {
x.ActiveDeadlineSeconds = new(int64)
}
yym45 := z.DecBinary()
_ = yym45
yym47 := z.DecBinary()
_ = yym47
if false {
} else {
*((*int64)(x.ActiveDeadlineSeconds)) = int64(r.DecodeInt(64))
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30691,16 +30729,16 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.DNSPolicy = ""
} else {
yyv46 := &x.DNSPolicy
yyv46.CodecDecodeSelf(d)
yyv48 := &x.DNSPolicy
yyv48.CodecDecodeSelf(d)
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30708,21 +30746,21 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.NodeSelector = nil
} else {
yyv47 := &x.NodeSelector
yym48 := z.DecBinary()
_ = yym48
yyv49 := &x.NodeSelector
yym50 := z.DecBinary()
_ = yym50
if false {
} else {
z.F.DecMapStringStringX(yyv47, false, d)
z.F.DecMapStringStringX(yyv49, false, d)
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30730,29 +30768,7 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.ServiceAccountName = ""
} else {
yyv49 := &x.ServiceAccountName
yym50 := z.DecBinary()
_ = yym50
if false {
} else {
*((*string)(yyv49)) = r.DecodeString()
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
} else {
yyb36 = r.CheckBreak()
}
if yyb36 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.DeprecatedServiceAccount = ""
} else {
yyv51 := &x.DeprecatedServiceAccount
yyv51 := &x.ServiceAccountName
yym52 := z.DecBinary()
_ = yym52
if false {
@ -30760,21 +30776,21 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
*((*string)(yyv51)) = r.DecodeString()
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.NodeName = ""
x.DeprecatedServiceAccount = ""
} else {
yyv53 := &x.NodeName
yyv53 := &x.DeprecatedServiceAccount
yym54 := z.DecBinary()
_ = yym54
if false {
@ -30782,13 +30798,35 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
*((*string)(yyv53)) = r.DecodeString()
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.NodeName = ""
} else {
yyv55 := &x.NodeName
yym56 := z.DecBinary()
_ = yym56
if false {
} else {
*((*string)(yyv55)) = r.DecodeString()
}
}
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb38 = r.CheckBreak()
}
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30796,29 +30834,7 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.HostNetwork = false
} else {
yyv55 := &x.HostNetwork
yym56 := z.DecBinary()
_ = yym56
if false {
} else {
*((*bool)(yyv55)) = r.DecodeBool()
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
} else {
yyb36 = r.CheckBreak()
}
if yyb36 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.HostPID = false
} else {
yyv57 := &x.HostPID
yyv57 := &x.HostNetwork
yym58 := z.DecBinary()
_ = yym58
if false {
@ -30826,21 +30842,21 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
*((*bool)(yyv57)) = r.DecodeBool()
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.HostIPC = false
x.HostPID = false
} else {
yyv59 := &x.HostIPC
yyv59 := &x.HostPID
yym60 := z.DecBinary()
_ = yym60
if false {
@ -30848,13 +30864,35 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
*((*bool)(yyv59)) = r.DecodeBool()
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.HostIPC = false
} else {
yyv61 := &x.HostIPC
yym62 := z.DecBinary()
_ = yym62
if false {
} else {
*((*bool)(yyv61)) = r.DecodeBool()
}
}
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb38 = r.CheckBreak()
}
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30869,13 +30907,13 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
}
x.SecurityContext.CodecDecodeSelf(d)
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30883,21 +30921,21 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.ImagePullSecrets = nil
} else {
yyv62 := &x.ImagePullSecrets
yym63 := z.DecBinary()
_ = yym63
yyv64 := &x.ImagePullSecrets
yym65 := z.DecBinary()
_ = yym65
if false {
} else {
h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv62), d)
h.decSliceLocalObjectReference((*[]LocalObjectReference)(yyv64), d)
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30905,29 +30943,7 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if r.TryDecodeAsNil() {
x.Hostname = ""
} else {
yyv64 := &x.Hostname
yym65 := z.DecBinary()
_ = yym65
if false {
} else {
*((*string)(yyv64)) = r.DecodeString()
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
} else {
yyb36 = r.CheckBreak()
}
if yyb36 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.Subdomain = ""
} else {
yyv66 := &x.Subdomain
yyv66 := &x.Hostname
yym67 := z.DecBinary()
_ = yym67
if false {
@ -30935,13 +30951,35 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
*((*string)(yyv66)) = r.DecodeString()
}
}
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb36 = r.CheckBreak()
yyb38 = r.CheckBreak()
}
if yyb36 {
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.Subdomain = ""
} else {
yyv68 := &x.Subdomain
yym69 := z.DecBinary()
_ = yym69
if false {
} else {
*((*string)(yyv68)) = r.DecodeString()
}
}
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb38 = r.CheckBreak()
}
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -30956,18 +30994,40 @@ func (x *PodSpec) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
}
x.Affinity.CodecDecodeSelf(d)
}
for {
yyj36++
if yyhl36 {
yyb36 = yyj36 > l
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb38 = r.CheckBreak()
}
if yyb38 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.SchedulerName = ""
} else {
yyv71 := &x.SchedulerName
yym72 := z.DecBinary()
_ = yym72
if false {
} else {
yyb36 = r.CheckBreak()
*((*string)(yyv71)) = r.DecodeString()
}
if yyb36 {
}
for {
yyj38++
if yyhl38 {
yyb38 = yyj38 > l
} else {
yyb38 = r.CheckBreak()
}
if yyb38 {
break
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
z.DecStructFieldNotFound(yyj36-1, "")
z.DecStructFieldNotFound(yyj38-1, "")
}
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
}
@ -64225,7 +64285,7 @@ func (x codecSelfer1234) decSlicePod(v *[]Pod, d *codec1978.Decoder) {
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 688)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 704)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]
@ -64344,7 +64404,7 @@ func (x codecSelfer1234) decSlicePodTemplate(v *[]PodTemplate, d *codec1978.Deco
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 736)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 752)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]

View File

@ -2140,6 +2140,10 @@ type PodSpec struct {
// If specified, the pod's scheduling constraints
// +optional
Affinity *Affinity `json:"affinity,omitempty" protobuf:"bytes,18,opt,name=affinity"`
// If specified, the pod will be dispatched by specified scheduler.
// If not specified, the pod will be dispatched by default scheduler.
// +optional
SchedulerName string `json:"schedulername,omitempty" protobuf:"bytes,19,opt,name=schedulername"`
}
// PodSecurityContext holds pod-level security attributes and common container settings.

View File

@ -1294,6 +1294,7 @@ var map_PodSpec = map[string]string{
"hostname": "Specifies the hostname of the Pod If not specified, the pod's hostname will be set to a system-defined value.",
"subdomain": "If specified, the fully qualified Pod hostname will be \"<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>\". If not specified, the pod will not have a domainname at all.",
"affinity": "If specified, the pod's scheduling constraints",
"schedulername": "If specified, the pod will be dispatched by specified scheduler. If not specified, the pod will be dispatched by default scheduler.",
}
func (PodSpec) SwaggerDoc() map[string]string {

View File

@ -3069,6 +3069,7 @@ func autoConvert_v1_PodSpec_To_api_PodSpec(in *PodSpec, out *api.PodSpec, s conv
out.Hostname = in.Hostname
out.Subdomain = in.Subdomain
out.Affinity = (*api.Affinity)(unsafe.Pointer(in.Affinity))
out.SchedulerName = in.SchedulerName
return nil
}
@ -3106,6 +3107,7 @@ func autoConvert_api_PodSpec_To_v1_PodSpec(in *api.PodSpec, out *PodSpec, s conv
out.Hostname = in.Hostname
out.Subdomain = in.Subdomain
out.Affinity = (*Affinity)(unsafe.Pointer(in.Affinity))
out.SchedulerName = in.SchedulerName
return nil
}

View File

@ -23,10 +23,10 @@ package api
import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
fields "k8s.io/apimachinery/pkg/fields"
labels "k8s.io/apimachinery/pkg/labels"
runtime "k8s.io/apimachinery/pkg/runtime"
types "k8s.io/apimachinery/pkg/types"
fields "k8s.io/client-go/pkg/fields"
reflect "reflect"
)

View File

@ -1679,7 +1679,7 @@ func (x codecSelfer1234) decSliceStatefulSet(v *[]StatefulSet, d *codec1978.Deco
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 808)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 824)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]

View File

@ -2481,7 +2481,7 @@ func (x codecSelfer1234) decSliceJob(v *[]Job, d *codec1978.Decoder) {
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 832)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 848)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]

View File

@ -4534,7 +4534,7 @@ func (x codecSelfer1234) decSliceJob(v *[]Job, d *codec1978.Decoder) {
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 832)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 848)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]
@ -4772,7 +4772,7 @@ func (x codecSelfer1234) decSliceCronJob(v *[]CronJob, d *codec1978.Decoder) {
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 1080)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 1096)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]

View File

@ -21093,7 +21093,7 @@ func (x codecSelfer1234) decSliceDeployment(v *[]Deployment, d *codec1978.Decode
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 872)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 888)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]
@ -21212,7 +21212,7 @@ func (x codecSelfer1234) decSliceDaemonSet(v *[]DaemonSet, d *codec1978.Decoder)
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 768)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 784)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]
@ -21926,7 +21926,7 @@ func (x codecSelfer1234) decSliceReplicaSet(v *[]ReplicaSet, d *codec1978.Decode
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 808)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 824)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]

View File

@ -39,6 +39,7 @@ type MasterConfiguration struct {
Networking Networking
KubernetesVersion string
CloudProvider string
AuthorizationMode string
}
type API struct {

View File

@ -16,9 +16,7 @@ limitations under the License.
package v1alpha1
import (
"k8s.io/apimachinery/pkg/runtime"
)
import "k8s.io/apimachinery/pkg/runtime"
const (
DefaultServiceDNSDomain = "cluster.local"
@ -27,6 +25,7 @@ const (
DefaultKubernetesFallbackVersion = "v1.5.0"
DefaultAPIBindPort = 6443
DefaultDiscoveryBindPort = 9898
DefaultAuthorizationMode = "RBAC"
)
func addDefaultingFuncs(scheme *runtime.Scheme) error {
@ -56,4 +55,8 @@ func SetDefaults_MasterConfiguration(obj *MasterConfiguration) {
if obj.Discovery.Token == nil && obj.Discovery.File == nil && obj.Discovery.HTTPS == nil {
obj.Discovery.Token = &TokenDiscovery{}
}
if obj.AuthorizationMode == "" {
obj.AuthorizationMode = DefaultAuthorizationMode
}
}

View File

@ -29,6 +29,7 @@ type MasterConfiguration struct {
Networking Networking `json:"networking"`
KubernetesVersion string `json:"kubernetesVersion"`
CloudProvider string `json:"cloudProvider"`
AuthorizationMode string `json:"authorizationMode"`
}
type API struct {

View File

@ -90,7 +90,7 @@ func NewSignedCert(cfg Config, key *rsa.PrivateKey, caCert *x509.Certificate, ca
certTmpl := x509.Certificate{
Subject: pkix.Name{
CommonName: cfg.CommonName,
Organization: caCert.Subject.Organization,
Organization: cfg.Organization,
},
DNSNames: cfg.AltNames.DNSNames,
IPAddresses: cfg.AltNames.IPs,

View File

@ -48,6 +48,13 @@ const (
deleteFromPrimitiveListDirectivePrefix = "$deleteFromPrimitiveList"
)
// JSONMap is a representations of JSON object encoded as map[string]interface{}
// where the children can be either map[string]interface{}, []interface{} or
// primitive type).
// Operating on JSONMap representation is much faster as it doesn't require any
// json marshaling and/or unmarshaling operations.
type JSONMap map[string]interface{}
// IsPreconditionFailed returns true if the provided error indicates
// a precondition failed.
func IsPreconditionFailed(err error) bool {
@ -136,11 +143,6 @@ func RequireMetadataKeyUnchanged(key string) PreconditionFunc {
}
}
// Deprecated: Use the synonym CreateTwoWayMergePatch, instead.
func CreateStrategicMergePatch(original, modified []byte, dataStruct interface{}) ([]byte, error) {
return CreateTwoWayMergePatch(original, modified, dataStruct)
}
// CreateTwoWayMergePatch creates a patch that can be passed to StrategicMergePatch from an original
// document and a modified document, which are passed to the method as json encoded content. It will
// return a patch that yields the modified document when applied to the original document, or an error
@ -160,12 +162,24 @@ func CreateTwoWayMergePatch(original, modified []byte, dataStruct interface{}, f
}
}
patchMap, err := CreateTwoWayMergeMapPatch(originalMap, modifiedMap, dataStruct, fns...)
if err != nil {
return nil, err
}
return json.Marshal(patchMap)
}
// CreateTwoWayMergeMapPatch creates a patch from an original and modified JSON objects,
// encoded JSONMap.
// The serialized version of the map can then be passed to StrategicMergeMapPatch.
func CreateTwoWayMergeMapPatch(original, modified JSONMap, dataStruct interface{}, fns ...PreconditionFunc) (JSONMap, error) {
t, err := getTagStructType(dataStruct)
if err != nil {
return nil, err
}
patchMap, err := diffMaps(originalMap, modifiedMap, t, false, false)
patchMap, err := diffMaps(original, modified, t, false, false)
if err != nil {
return nil, err
}
@ -177,7 +191,7 @@ func CreateTwoWayMergePatch(original, modified []byte, dataStruct interface{}, f
}
}
return json.Marshal(patchMap)
return patchMap, nil
}
// Returns a (recursive) strategic merge patch that yields modified when applied to original.
@ -494,12 +508,6 @@ loopB:
return patch, nil
}
// Deprecated: StrategicMergePatchData is deprecated. Use the synonym StrategicMergePatch,
// instead, which follows the naming convention of evanphx/json-patch.
func StrategicMergePatchData(original, patch []byte, dataStruct interface{}) ([]byte, error) {
return StrategicMergePatch(original, patch, dataStruct)
}
// StrategicMergePatch applies a strategic merge patch. The patch and the original document
// must be json encoded content. A patch can be created from an original and a modified document
// by calling CreateStrategicMergePatch.
@ -524,12 +532,7 @@ func StrategicMergePatch(original, patch []byte, dataStruct interface{}) ([]byte
return nil, errBadJSONDoc
}
t, err := getTagStructType(dataStruct)
if err != nil {
return nil, err
}
result, err := mergeMap(originalMap, patchMap, t, true)
result, err := StrategicMergeMapPatch(originalMap, patchMap, dataStruct)
if err != nil {
return nil, err
}
@ -537,6 +540,17 @@ func StrategicMergePatch(original, patch []byte, dataStruct interface{}) ([]byte
return json.Marshal(result)
}
// StrategicMergePatch applies a strategic merge patch. The original and patch documents
// must be JSONMap. A patch can be created from an original and modified document by
// calling CreateTwoWayMergeMapPatch.
func StrategicMergeMapPatch(original, patch JSONMap, dataStruct interface{}) (JSONMap, error) {
t, err := getTagStructType(dataStruct)
if err != nil {
return nil, err
}
return mergeMap(original, patch, t, true)
}
func getTagStructType(dataStruct interface{}) (reflect.Type, error) {
if dataStruct == nil {
return nil, fmt.Errorf(errBadArgTypeFmt, "struct", "nil")

View File

@ -35,6 +35,7 @@ import (
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
@ -44,7 +45,6 @@ import (
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/pkg/api/v1"
pathvalidation "k8s.io/client-go/pkg/api/validation/path"
"k8s.io/client-go/pkg/fields"
"k8s.io/client-go/pkg/util/flowcontrol"
restclientwatch "k8s.io/client-go/rest/watch"
"k8s.io/client-go/tools/metrics"

View File

@ -21,12 +21,12 @@ import (
"path"
"strings"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/client-go/pkg/fields"
)
func NewRootGetAction(resource schema.GroupVersionResource, name string) GetActionImpl {

View File

@ -20,11 +20,11 @@ import (
"time"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/pkg/api/v1"
"k8s.io/client-go/pkg/fields"
"k8s.io/client-go/rest"
)

View File

@ -244,7 +244,7 @@ func (e *eventLogger) eventObserve(newEvent *v1.Event) (*v1.Event, []byte, error
newData, _ := json.Marshal(event)
oldData, _ := json.Marshal(eventCopy2)
patch, err = strategicpatch.CreateStrategicMergePatch(oldData, newData, event)
patch, err = strategicpatch.CreateTwoWayMergePatch(oldData, newData, event)
}
// record our new observation