diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index 04aabc7c814..1d3d9923021 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -469,6 +469,14 @@ func validateTCPSocketAction(tcp *api.TCPSocketAction) 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{} diff --git a/pkg/api/validation/validation_test.go b/pkg/api/validation/validation_test.go index 2635f7c63f7..fdda8adb9c7 100644 --- a/pkg/api/validation/validation_test.go +++ b/pkg/api/validation/validation_test.go @@ -496,6 +496,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", @@ -506,6 +532,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}, },