diff --git a/staging/src/k8s.io/client-go/1.4/Godeps/Godeps.json b/staging/src/k8s.io/client-go/1.4/Godeps/Godeps.json index bf3838d6f57..3177e4a949a 100644 --- a/staging/src/k8s.io/client-go/1.4/Godeps/Godeps.json +++ b/staging/src/k8s.io/client-go/1.4/Godeps/Godeps.json @@ -1,6 +1,6 @@ { "ImportPath": "k8s.io/client-go/1.4", - "GoVersion": "go1.6", + "GoVersion": "go1.7", "GodepVersion": "v74", "Packages": [ "./..." diff --git a/staging/src/k8s.io/client-go/1.4/kubernetes/typed/core/v1/fake/fake_pod_expansion.go b/staging/src/k8s.io/client-go/1.4/kubernetes/typed/core/v1/fake/fake_pod_expansion.go index 91e539f4c63..ced693a2188 100644 --- a/staging/src/k8s.io/client-go/1.4/kubernetes/typed/core/v1/fake/fake_pod_expansion.go +++ b/staging/src/k8s.io/client-go/1.4/kubernetes/typed/core/v1/fake/fake_pod_expansion.go @@ -18,6 +18,7 @@ package fake import ( "k8s.io/client-go/1.4/pkg/api/v1" + policy "k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1" "k8s.io/client-go/1.4/rest" "k8s.io/client-go/1.4/testing" ) @@ -44,3 +45,14 @@ func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *rest.Request { _, _ = c.Fake.Invokes(action, &v1.Pod{}) return &rest.Request{} } + +func (c *FakePods) Evict(eviction *policy.Eviction) error { + action := testing.CreateActionImpl{} + action.Verb = "create" + action.Resource = podsResource + action.Subresource = "evictions" + action.Object = eviction + + _, err := c.Fake.Invokes(action, eviction) + return err +} diff --git a/staging/src/k8s.io/client-go/1.4/kubernetes/typed/core/v1/pod_expansion.go b/staging/src/k8s.io/client-go/1.4/kubernetes/typed/core/v1/pod_expansion.go index 8ece7798e3e..064a9805a67 100644 --- a/staging/src/k8s.io/client-go/1.4/kubernetes/typed/core/v1/pod_expansion.go +++ b/staging/src/k8s.io/client-go/1.4/kubernetes/typed/core/v1/pod_expansion.go @@ -19,12 +19,14 @@ package v1 import ( "k8s.io/client-go/1.4/pkg/api" "k8s.io/client-go/1.4/pkg/api/v1" + policy "k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1" "k8s.io/client-go/1.4/rest" ) // The PodExpansion interface allows manually adding extra methods to the PodInterface. type PodExpansion interface { Bind(binding *v1.Binding) error + Evict(eviction *policy.Eviction) error GetLogs(name string, opts *v1.PodLogOptions) *rest.Request } @@ -33,6 +35,10 @@ func (c *pods) Bind(binding *v1.Binding) error { return c.client.Post().Namespace(c.ns).Resource("pods").Name(binding.Name).SubResource("binding").Body(binding).Do().Error() } +func (c *pods) Evict(eviction *policy.Eviction) error { + return c.client.Post().Namespace(c.ns).Resource("pods").Name(eviction.Name).SubResource("eviction").Body(eviction).Do().Error() +} + // Get constructs a request for getting the logs for a pod func (c *pods) GetLogs(name string, opts *v1.PodLogOptions) *rest.Request { return c.client.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, api.ParameterCodec) diff --git a/staging/src/k8s.io/client-go/1.4/pkg/api/validation/validation.go b/staging/src/k8s.io/client-go/1.4/pkg/api/validation/validation.go index 1512b54c4e3..483a88d71f0 100644 --- a/staging/src/k8s.io/client-go/1.4/pkg/api/validation/validation.go +++ b/staging/src/k8s.io/client-go/1.4/pkg/api/validation/validation.go @@ -3435,9 +3435,11 @@ func validateEndpointAddress(address *api.EndpointAddress, fldPath *field.Path, if len(address.Hostname) > 0 { allErrs = append(allErrs, ValidateDNS1123Label(address.Hostname, fldPath.Child("hostname"))...) } - // During endpoint update, validate NodeName is DNS1123 compliant and transition rules allow the update + // During endpoint update, verify that NodeName is a DNS subdomain and transition rules allow the update if address.NodeName != nil { - allErrs = append(allErrs, ValidateDNS1123Label(*address.NodeName, fldPath.Child("nodeName"))...) + for _, msg := range ValidateNodeName(*address.NodeName, false) { + allErrs = append(allErrs, field.Invalid(fldPath.Child("nodeName"), *address.NodeName, msg)) + } } allErrs = append(allErrs, validateEpAddrNodeNameTransition(address, ipToNodeName, fldPath.Child("nodeName"))...) if len(allErrs) > 0 { diff --git a/staging/src/k8s.io/client-go/1.4/pkg/apis/apps/register.go b/staging/src/k8s.io/client-go/1.4/pkg/apis/apps/register.go index 28225023e57..57b6a610df9 100644 --- a/staging/src/k8s.io/client-go/1.4/pkg/apis/apps/register.go +++ b/staging/src/k8s.io/client-go/1.4/pkg/apis/apps/register.go @@ -50,6 +50,7 @@ func addKnownTypes(scheme *runtime.Scheme) error { &PetSet{}, &PetSetList{}, &api.ListOptions{}, + &api.DeleteOptions{}, ) return nil } diff --git a/staging/src/k8s.io/client-go/1.4/pkg/apis/certificates/doc.go b/staging/src/k8s.io/client-go/1.4/pkg/apis/certificates/doc.go index fd28fd007ad..cce031e2867 100644 --- a/staging/src/k8s.io/client-go/1.4/pkg/apis/certificates/doc.go +++ b/staging/src/k8s.io/client-go/1.4/pkg/apis/certificates/doc.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +groupName=certificates.k8s.io // +k8s:deepcopy-gen=package,register +// +groupName=certificates.k8s.io package certificates diff --git a/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/types.go b/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/types.go index 8e4b49602d4..18b1b861040 100644 --- a/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/types.go +++ b/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/types.go @@ -72,7 +72,7 @@ type PodDisruptionBudgetList struct { // Eviction evicts a pod from its node subject to certain policies and safety constraints. // This is a subresource of Pod. A request to cause such an eviction is -// created by POSTing to .../pods/foo/evictions. +// created by POSTing to .../pods//evictions. type Eviction struct { unversioned.TypeMeta `json:",inline"` diff --git a/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/generated.proto b/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/generated.proto index 2bc3b524b8b..8fb5c2be63f 100644 --- a/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/generated.proto +++ b/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/generated.proto @@ -32,7 +32,7 @@ option go_package = "v1alpha1"; // Eviction evicts a pod from its node subject to certain policies and safety constraints. // This is a subresource of Pod. A request to cause such an eviction is -// created by POSTing to .../pods/foo/evictions. +// created by POSTing to .../pods//evictions. message Eviction { // ObjectMeta describes the pod that is being evicted. optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1; diff --git a/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/types.go b/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/types.go index 1da3ebbcd33..a7150a21aac 100644 --- a/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/types.go +++ b/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/types.go @@ -71,7 +71,7 @@ type PodDisruptionBudgetList struct { // Eviction evicts a pod from its node subject to certain policies and safety constraints. // This is a subresource of Pod. A request to cause such an eviction is -// created by POSTing to .../pods/foo/evictions. +// created by POSTing to .../pods//evictions. type Eviction struct { unversioned.TypeMeta `json:",inline"` diff --git a/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/types_swagger_doc_generated.go b/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/types_swagger_doc_generated.go index 4711780e339..7750b1007fe 100644 --- a/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/types_swagger_doc_generated.go +++ b/staging/src/k8s.io/client-go/1.4/pkg/apis/policy/v1alpha1/types_swagger_doc_generated.go @@ -28,7 +28,7 @@ package v1alpha1 // AUTO-GENERATED FUNCTIONS START HERE var map_Eviction = map[string]string{ - "": "Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods/foo/evictions.", + "": "Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods//evictions.", "metadata": "ObjectMeta describes the pod that is being evicted.", "deleteOptions": "DeleteOptions may be provided", } diff --git a/staging/src/k8s.io/client-go/1.4/pkg/util/errors/errors.go b/staging/src/k8s.io/client-go/1.4/pkg/util/errors/errors.go index 0445c142bea..42631f21622 100644 --- a/staging/src/k8s.io/client-go/1.4/pkg/util/errors/errors.go +++ b/staging/src/k8s.io/client-go/1.4/pkg/util/errors/errors.go @@ -31,11 +31,23 @@ type Aggregate interface { // NewAggregate converts a slice of errors into an Aggregate interface, which // is itself an implementation of the error interface. If the slice is empty, // this returns nil. +// It will check if any of the element of input error list is nil, to avoid +// nil pointer panic when call Error(). func NewAggregate(errlist []error) Aggregate { if len(errlist) == 0 { return nil } - return aggregate(errlist) + // In case of input error list contains nil + var errs []error + for _, e := range errlist { + if e != nil { + errs = append(errs, e) + } + } + if len(errs) == 0 { + return nil + } + return aggregate(errs) } // This helper implements the error and Errors interfaces. Keeping it private diff --git a/staging/src/k8s.io/client-go/1.4/testing/fake.go b/staging/src/k8s.io/client-go/1.4/testing/fake.go index b220cc0bfd3..18434465412 100644 --- a/staging/src/k8s.io/client-go/1.4/testing/fake.go +++ b/staging/src/k8s.io/client-go/1.4/testing/fake.go @@ -55,7 +55,7 @@ type Reactor interface { type WatchReactor interface { // Handles indicates whether or not this Reactor deals with a given action Handles(action Action) bool - // React handles a watch action and returns results. It may choose to delegate by indicated handled=false + // React handles a watch action and returns results. It may choose to delegate by indicating handled=false React(action Action) (handled bool, ret watch.Interface, err error) } @@ -63,20 +63,20 @@ type WatchReactor interface { type ProxyReactor interface { // Handles indicates whether or not this Reactor deals with a given action Handles(action Action) bool - // React handles a watch action and returns results. It may choose to delegate by indicated handled=false + // React handles a watch action and returns results. It may choose to delegate by indicating handled=false React(action Action) (handled bool, ret rest.ResponseWrapper, err error) } // ReactionFunc is a function that returns an object or error for a given Action. If "handled" is false, -// then the test client will continue ignore the results and continue to the next ReactionFunc +// then the test client will ignore the results and continue to the next ReactionFunc type ReactionFunc func(action Action) (handled bool, ret runtime.Object, err error) // WatchReactionFunc is a function that returns a watch interface. If "handled" is false, -// then the test client will continue ignore the results and continue to the next ReactionFunc +// then the test client will ignore the results and continue to the next ReactionFunc type WatchReactionFunc func(action Action) (handled bool, ret watch.Interface, err error) // ProxyReactionFunc is a function that returns a ResponseWrapper interface for a given Action. If "handled" is false, -// then the test client will continue ignore the results and continue to the next ProxyReactionFunc +// then the test client will ignore the results and continue to the next ProxyReactionFunc type ProxyReactionFunc func(action Action) (handled bool, ret rest.ResponseWrapper, err error) // AddReactor appends a reactor to the end of the chain @@ -184,7 +184,7 @@ func (c *Fake) ClearActions() { c.actions = make([]Action, 0) } -// Actions returns a chronologically ordered slice fake actions called on the fake client +// Actions returns a chronologically ordered slice fake actions called on the fake client. func (c *Fake) Actions() []Action { c.RLock() defer c.RUnlock()