diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index d3b12f8d44b..2031b69efe3 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -454,6 +454,14 @@ func validateHTTPGetAction(http *api.HTTPGetAction) errs.ValidationErrorList { return allErrors } +func validateTCPSocketAction(tcp *api.TCPSocketAction) errs.ValidationErrorList { + allErrors := errs.ValidationErrorList{} + if len(tcp.Port.StrVal) == 0 && tcp.Port.IntVal == 0 { + allErrors = append(allErrors, errs.NewFieldRequired("port", tcp.Port)) + } + return allErrors +} + func validateHandler(handler *api.Handler) errs.ValidationErrorList { numHandlers := 0 allErrors := errs.ValidationErrorList{} @@ -465,6 +473,10 @@ func validateHandler(handler *api.Handler) errs.ValidationErrorList { numHandlers++ allErrors = append(allErrors, validateHTTPGetAction(handler.HTTPGet).Prefix("httpGet")...) } + if handler.TCPSocket != nil { + numHandlers++ + allErrors = append(allErrors, validateTCPSocketAction(handler.TCPSocket).Prefix("tcpSocket")...) + } if numHandlers != 1 { allErrors = append(allErrors, errs.NewFieldInvalid("", handler, "exactly 1 handler type is required")) } diff --git a/pkg/api/validation/validation_test.go b/pkg/api/validation/validation_test.go index ca2ac42f8dd..f3ff540eef1 100644 --- a/pkg/api/validation/validation_test.go +++ b/pkg/api/validation/validation_test.go @@ -469,6 +469,32 @@ func TestValidateContainers(t *testing.T) { ImagePullPolicy: "IfNotPresent", }, }, + "invalid lifecycle, no tcp socket port.": { + { + Name: "life-123", + Image: "image", + Lifecycle: &api.Lifecycle{ + PreStop: &api.Handler{ + TCPSocket: &api.TCPSocketAction{}, + }, + }, + ImagePullPolicy: "IfNotPresent", + }, + }, + "invalid lifecycle, zero tcp socket port.": { + { + Name: "life-123", + Image: "image", + Lifecycle: &api.Lifecycle{ + PreStop: &api.Handler{ + TCPSocket: &api.TCPSocketAction{ + Port: util.IntOrString{IntVal: 0}, + }, + }, + }, + ImagePullPolicy: "IfNotPresent", + }, + }, "invalid lifecycle, no action.": { { Name: "life-123", @@ -479,6 +505,28 @@ func TestValidateContainers(t *testing.T) { ImagePullPolicy: "IfNotPresent", }, }, + "invalid liveness probe, no tcp socket port.": { + { + Name: "life-123", + Image: "image", + LivenessProbe: &api.Probe{ + Handler: api.Handler{ + TCPSocket: &api.TCPSocketAction{}, + }, + }, + ImagePullPolicy: "IfNotPresent", + }, + }, + "invalid liveness probe, no action.": { + { + Name: "life-123", + Image: "image", + LivenessProbe: &api.Probe{ + Handler: api.Handler{}, + }, + ImagePullPolicy: "IfNotPresent", + }, + }, "privilege disabled": { {Name: "abc", Image: "image", Privileged: true}, },