mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 18:31:15 +00:00
Refactor IntOrString into a new pkg
pkg/util/intstr is a cleaner encapsulation for this type and supporting functions. No behavioral change.
This commit is contained in:
parent
3a07af0b28
commit
ba383bcfeb
@ -34,6 +34,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
@ -408,8 +409,8 @@ func (e *endpointController) checkLeftoverEndpoints() {
|
|||||||
// HACK(jdef): return the HostPort in addition to the ContainerPort for generic mesos compatibility
|
// HACK(jdef): return the HostPort in addition to the ContainerPort for generic mesos compatibility
|
||||||
func findPort(pod *api.Pod, svcPort *api.ServicePort) (int, int, error) {
|
func findPort(pod *api.Pod, svcPort *api.ServicePort) (int, int, error) {
|
||||||
portName := svcPort.TargetPort
|
portName := svcPort.TargetPort
|
||||||
switch portName.Kind {
|
switch portName.Type {
|
||||||
case util.IntstrString:
|
case intstr.String:
|
||||||
name := portName.StrVal
|
name := portName.StrVal
|
||||||
for _, container := range pod.Spec.Containers {
|
for _, container := range pod.Spec.Containers {
|
||||||
for _, port := range container.Ports {
|
for _, port := range container.Ports {
|
||||||
@ -419,7 +420,7 @@ func findPort(pod *api.Pod, svcPort *api.ServicePort) (int, int, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case util.IntstrInt:
|
case intstr.Int:
|
||||||
// HACK(jdef): slightly different semantics from upstream here:
|
// HACK(jdef): slightly different semantics from upstream here:
|
||||||
// we ensure that if the user spec'd a port in the service that
|
// we ensure that if the user spec'd a port in the service that
|
||||||
// it actually maps to a host-port assigned to the pod. upstream
|
// it actually maps to a host-port assigned to the pod. upstream
|
||||||
|
@ -27,7 +27,7 @@ import (
|
|||||||
fields "k8s.io/kubernetes/pkg/fields"
|
fields "k8s.io/kubernetes/pkg/fields"
|
||||||
labels "k8s.io/kubernetes/pkg/labels"
|
labels "k8s.io/kubernetes/pkg/labels"
|
||||||
runtime "k8s.io/kubernetes/pkg/runtime"
|
runtime "k8s.io/kubernetes/pkg/runtime"
|
||||||
util "k8s.io/kubernetes/pkg/util"
|
intstr "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
inf "speter.net/go/exp/math/dec/inf"
|
inf "speter.net/go/exp/math/dec/inf"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -600,7 +600,7 @@ func deepCopy_api_GlusterfsVolumeSource(in GlusterfsVolumeSource, out *Glusterfs
|
|||||||
|
|
||||||
func deepCopy_api_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *conversion.Cloner) error {
|
func deepCopy_api_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *conversion.Cloner) error {
|
||||||
out.Path = in.Path
|
out.Path = in.Path
|
||||||
if err := deepCopy_util_IntOrString(in.Port, &out.Port, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.Host = in.Host
|
out.Host = in.Host
|
||||||
@ -2110,7 +2110,7 @@ func deepCopy_api_ServicePort(in ServicePort, out *ServicePort, c *conversion.Cl
|
|||||||
out.Name = in.Name
|
out.Name = in.Name
|
||||||
out.Protocol = in.Protocol
|
out.Protocol = in.Protocol
|
||||||
out.Port = in.Port
|
out.Port = in.Port
|
||||||
if err := deepCopy_util_IntOrString(in.TargetPort, &out.TargetPort, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.TargetPort, &out.TargetPort, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.NodePort = in.NodePort
|
out.NodePort = in.NodePort
|
||||||
@ -2159,7 +2159,7 @@ func deepCopy_api_ServiceStatus(in ServiceStatus, out *ServiceStatus, c *convers
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_api_TCPSocketAction(in TCPSocketAction, out *TCPSocketAction, c *conversion.Cloner) error {
|
func deepCopy_api_TCPSocketAction(in TCPSocketAction, out *TCPSocketAction, c *conversion.Cloner) error {
|
||||||
if err := deepCopy_util_IntOrString(in.Port, &out.Port, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -2347,8 +2347,8 @@ func deepCopy_unversioned_TypeMeta(in unversioned.TypeMeta, out *unversioned.Typ
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_util_IntOrString(in util.IntOrString, out *util.IntOrString, c *conversion.Cloner) error {
|
func deepCopy_intstr_IntOrString(in intstr.IntOrString, out *intstr.IntOrString, c *conversion.Cloner) error {
|
||||||
out.Kind = in.Kind
|
out.Type = in.Type
|
||||||
out.IntVal = in.IntVal
|
out.IntVal = in.IntVal
|
||||||
out.StrVal = in.StrVal
|
out.StrVal = in.StrVal
|
||||||
return nil
|
return nil
|
||||||
@ -2479,7 +2479,7 @@ func init() {
|
|||||||
deepCopy_unversioned_ListMeta,
|
deepCopy_unversioned_ListMeta,
|
||||||
deepCopy_unversioned_Time,
|
deepCopy_unversioned_Time,
|
||||||
deepCopy_unversioned_TypeMeta,
|
deepCopy_unversioned_TypeMeta,
|
||||||
deepCopy_util_IntOrString,
|
deepCopy_intstr_IntOrString,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// if one of the deep copy functions is malformed, detect it immediately.
|
// if one of the deep copy functions is malformed, detect it immediately.
|
||||||
|
@ -33,7 +33,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
"github.com/google/gofuzz"
|
"github.com/google/gofuzz"
|
||||||
)
|
)
|
||||||
@ -128,10 +128,10 @@ func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer {
|
|||||||
} else {
|
} else {
|
||||||
rollingUpdate := extensions.RollingUpdateDeployment{}
|
rollingUpdate := extensions.RollingUpdateDeployment{}
|
||||||
if c.RandBool() {
|
if c.RandBool() {
|
||||||
rollingUpdate.MaxUnavailable = util.NewIntOrStringFromInt(int(c.RandUint64()))
|
rollingUpdate.MaxUnavailable = intstr.FromInt(int(c.RandUint64()))
|
||||||
rollingUpdate.MaxSurge = util.NewIntOrStringFromInt(int(c.RandUint64()))
|
rollingUpdate.MaxSurge = intstr.FromInt(int(c.RandUint64()))
|
||||||
} else {
|
} else {
|
||||||
rollingUpdate.MaxSurge = util.NewIntOrStringFromString(fmt.Sprintf("%d%%", c.RandUint64()))
|
rollingUpdate.MaxSurge = intstr.FromString(fmt.Sprintf("%d%%", c.RandUint64()))
|
||||||
}
|
}
|
||||||
j.RollingUpdate = &rollingUpdate
|
j.RollingUpdate = &rollingUpdate
|
||||||
}
|
}
|
||||||
@ -342,10 +342,10 @@ func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer {
|
|||||||
c.Fuzz(&ss.Ports[0])
|
c.Fuzz(&ss.Ports[0])
|
||||||
}
|
}
|
||||||
for i := range ss.Ports {
|
for i := range ss.Ports {
|
||||||
switch ss.Ports[i].TargetPort.Kind {
|
switch ss.Ports[i].TargetPort.Type {
|
||||||
case util.IntstrInt:
|
case intstr.Int:
|
||||||
ss.Ports[i].TargetPort.IntVal = 1 + ss.Ports[i].TargetPort.IntVal%65535 // non-zero
|
ss.Ports[i].TargetPort.IntVal = 1 + ss.Ports[i].TargetPort.IntVal%65535 // non-zero
|
||||||
case util.IntstrString:
|
case intstr.String:
|
||||||
ss.Ports[i].TargetPort.StrVal = "x" + ss.Ports[i].TargetPort.StrVal // non-empty
|
ss.Ports[i].TargetPort.StrVal = "x" + ss.Ports[i].TargetPort.StrVal // non-empty
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ import (
|
|||||||
pkg6_labels "k8s.io/kubernetes/pkg/labels"
|
pkg6_labels "k8s.io/kubernetes/pkg/labels"
|
||||||
pkg8_runtime "k8s.io/kubernetes/pkg/runtime"
|
pkg8_runtime "k8s.io/kubernetes/pkg/runtime"
|
||||||
pkg1_types "k8s.io/kubernetes/pkg/types"
|
pkg1_types "k8s.io/kubernetes/pkg/types"
|
||||||
pkg5_util "k8s.io/kubernetes/pkg/util"
|
pkg5_intstr "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
"runtime"
|
||||||
pkg4_inf "speter.net/go/exp/math/dec/inf"
|
pkg4_inf "speter.net/go/exp/math/dec/inf"
|
||||||
@ -66,7 +66,7 @@ func init() {
|
|||||||
var v3 pkg6_labels.Selector
|
var v3 pkg6_labels.Selector
|
||||||
var v4 pkg8_runtime.Object
|
var v4 pkg8_runtime.Object
|
||||||
var v5 pkg1_types.UID
|
var v5 pkg1_types.UID
|
||||||
var v6 pkg5_util.IntOrString
|
var v6 pkg5_intstr.IntOrString
|
||||||
var v7 pkg4_inf.Dec
|
var v7 pkg4_inf.Dec
|
||||||
var v8 time.Time
|
var v8 time.Time
|
||||||
_, _, _, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6, v7, v8
|
_, _, _, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6, v7, v8
|
||||||
@ -12423,7 +12423,7 @@ func (x *HTTPGetAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
|||||||
}
|
}
|
||||||
case "port":
|
case "port":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.Port = pkg5_util.IntOrString{}
|
x.Port = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv957 := &x.Port
|
yyv957 := &x.Port
|
||||||
yym958 := z.DecBinary()
|
yym958 := z.DecBinary()
|
||||||
@ -12490,7 +12490,7 @@ func (x *HTTPGetAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.Port = pkg5_util.IntOrString{}
|
x.Port = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv963 := &x.Port
|
yyv963 := &x.Port
|
||||||
yym964 := z.DecBinary()
|
yym964 := z.DecBinary()
|
||||||
@ -12691,7 +12691,7 @@ func (x *TCPSocketAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
|||||||
switch yys978 {
|
switch yys978 {
|
||||||
case "port":
|
case "port":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.Port = pkg5_util.IntOrString{}
|
x.Port = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv979 := &x.Port
|
yyv979 := &x.Port
|
||||||
yym980 := z.DecBinary()
|
yym980 := z.DecBinary()
|
||||||
@ -12731,7 +12731,7 @@ func (x *TCPSocketAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.Port = pkg5_util.IntOrString{}
|
x.Port = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv982 := &x.Port
|
yyv982 := &x.Port
|
||||||
yym983 := z.DecBinary()
|
yym983 := z.DecBinary()
|
||||||
@ -23766,7 +23766,7 @@ func (x *ServicePort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
|||||||
}
|
}
|
||||||
case "targetPort":
|
case "targetPort":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.TargetPort = pkg5_util.IntOrString{}
|
x.TargetPort = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv1971 := &x.TargetPort
|
yyv1971 := &x.TargetPort
|
||||||
yym1972 := z.DecBinary()
|
yym1972 := z.DecBinary()
|
||||||
@ -23857,7 +23857,7 @@ func (x *ServicePort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.TargetPort = pkg5_util.IntOrString{}
|
x.TargetPort = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv1978 := &x.TargetPort
|
yyv1978 := &x.TargetPort
|
||||||
yym1979 := z.DecBinary()
|
yym1979 := z.DecBinary()
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Common string formats
|
// Common string formats
|
||||||
@ -681,7 +681,7 @@ type HTTPGetAction struct {
|
|||||||
// Optional: Path to access on the HTTP server.
|
// Optional: Path to access on the HTTP server.
|
||||||
Path string `json:"path,omitempty"`
|
Path string `json:"path,omitempty"`
|
||||||
// Required: Name or number of the port to access on the container.
|
// Required: Name or number of the port to access on the container.
|
||||||
Port util.IntOrString `json:"port,omitempty"`
|
Port intstr.IntOrString `json:"port,omitempty"`
|
||||||
// Optional: Host name to connect to, defaults to the pod IP.
|
// Optional: Host name to connect to, defaults to the pod IP.
|
||||||
Host string `json:"host,omitempty"`
|
Host string `json:"host,omitempty"`
|
||||||
// Optional: Scheme to use for connecting to the host, defaults to HTTP.
|
// Optional: Scheme to use for connecting to the host, defaults to HTTP.
|
||||||
@ -701,7 +701,7 @@ const (
|
|||||||
// TCPSocketAction describes an action based on opening a socket
|
// TCPSocketAction describes an action based on opening a socket
|
||||||
type TCPSocketAction struct {
|
type TCPSocketAction struct {
|
||||||
// Required: Port to connect to.
|
// Required: Port to connect to.
|
||||||
Port util.IntOrString `json:"port,omitempty"`
|
Port intstr.IntOrString `json:"port,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExecAction describes a "run in container" action.
|
// ExecAction describes a "run in container" action.
|
||||||
@ -1300,7 +1300,7 @@ type ServicePort struct {
|
|||||||
// is a string, it will be looked up as a named port in the target
|
// is a string, it will be looked up as a named port in the target
|
||||||
// Pod's container ports. If this is not specified, the default value
|
// Pod's container ports. If this is not specified, the default value
|
||||||
// is the sames as the Port field (an identity map).
|
// is the sames as the Port field (an identity map).
|
||||||
TargetPort util.IntOrString `json:"targetPort"`
|
TargetPort intstr.IntOrString `json:"targetPort"`
|
||||||
|
|
||||||
// The port on each node on which this service is exposed.
|
// The port on each node on which this service is exposed.
|
||||||
// Default is to auto-allocate a port if the ServiceType of this Service requires one.
|
// Default is to auto-allocate a port if the ServiceType of this Service requires one.
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
conversion "k8s.io/kubernetes/pkg/conversion"
|
conversion "k8s.io/kubernetes/pkg/conversion"
|
||||||
runtime "k8s.io/kubernetes/pkg/runtime"
|
runtime "k8s.io/kubernetes/pkg/runtime"
|
||||||
util "k8s.io/kubernetes/pkg/util"
|
intstr "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
inf "speter.net/go/exp/math/dec/inf"
|
inf "speter.net/go/exp/math/dec/inf"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -634,7 +634,7 @@ func deepCopy_v1_GlusterfsVolumeSource(in GlusterfsVolumeSource, out *GlusterfsV
|
|||||||
|
|
||||||
func deepCopy_v1_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *conversion.Cloner) error {
|
func deepCopy_v1_HTTPGetAction(in HTTPGetAction, out *HTTPGetAction, c *conversion.Cloner) error {
|
||||||
out.Path = in.Path
|
out.Path = in.Path
|
||||||
if err := deepCopy_util_IntOrString(in.Port, &out.Port, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.Host = in.Host
|
out.Host = in.Host
|
||||||
@ -2134,7 +2134,7 @@ func deepCopy_v1_ServicePort(in ServicePort, out *ServicePort, c *conversion.Clo
|
|||||||
out.Name = in.Name
|
out.Name = in.Name
|
||||||
out.Protocol = in.Protocol
|
out.Protocol = in.Protocol
|
||||||
out.Port = in.Port
|
out.Port = in.Port
|
||||||
if err := deepCopy_util_IntOrString(in.TargetPort, &out.TargetPort, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.TargetPort, &out.TargetPort, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.NodePort = in.NodePort
|
out.NodePort = in.NodePort
|
||||||
@ -2191,7 +2191,7 @@ func deepCopy_v1_ServiceStatus(in ServiceStatus, out *ServiceStatus, c *conversi
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_v1_TCPSocketAction(in TCPSocketAction, out *TCPSocketAction, c *conversion.Cloner) error {
|
func deepCopy_v1_TCPSocketAction(in TCPSocketAction, out *TCPSocketAction, c *conversion.Cloner) error {
|
||||||
if err := deepCopy_util_IntOrString(in.Port, &out.Port, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -2356,8 +2356,8 @@ func deepCopy_runtime_RawExtension(in runtime.RawExtension, out *runtime.RawExte
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_util_IntOrString(in util.IntOrString, out *util.IntOrString, c *conversion.Cloner) error {
|
func deepCopy_intstr_IntOrString(in intstr.IntOrString, out *intstr.IntOrString, c *conversion.Cloner) error {
|
||||||
out.Kind = in.Kind
|
out.Type = in.Type
|
||||||
out.IntVal = in.IntVal
|
out.IntVal = in.IntVal
|
||||||
out.StrVal = in.StrVal
|
out.StrVal = in.StrVal
|
||||||
return nil
|
return nil
|
||||||
@ -2489,7 +2489,7 @@ func init() {
|
|||||||
deepCopy_v1_VolumeMount,
|
deepCopy_v1_VolumeMount,
|
||||||
deepCopy_v1_VolumeSource,
|
deepCopy_v1_VolumeSource,
|
||||||
deepCopy_runtime_RawExtension,
|
deepCopy_runtime_RawExtension,
|
||||||
deepCopy_util_IntOrString,
|
deepCopy_intstr_IntOrString,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// if one of the deep copy functions is malformed, detect it immediately.
|
// if one of the deep copy functions is malformed, detect it immediately.
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func addDefaultingFuncs() {
|
func addDefaultingFuncs() {
|
||||||
@ -83,8 +84,8 @@ func addDefaultingFuncs() {
|
|||||||
if sp.Protocol == "" {
|
if sp.Protocol == "" {
|
||||||
sp.Protocol = ProtocolTCP
|
sp.Protocol = ProtocolTCP
|
||||||
}
|
}
|
||||||
if sp.TargetPort == util.NewIntOrStringFromInt(0) || sp.TargetPort == util.NewIntOrStringFromString("") {
|
if sp.TargetPort == intstr.FromInt(0) || sp.TargetPort == intstr.FromString("") {
|
||||||
sp.TargetPort = util.NewIntOrStringFromInt(sp.Port)
|
sp.TargetPort = intstr.FromInt(sp.Port)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -24,7 +24,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
versioned "k8s.io/kubernetes/pkg/api/v1"
|
versioned "k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func roundTrip(t *testing.T, obj runtime.Object) runtime.Object {
|
func roundTrip(t *testing.T, obj runtime.Object) runtime.Object {
|
||||||
@ -300,14 +300,14 @@ func TestSetDefaulServiceTargetPort(t *testing.T) {
|
|||||||
in := &versioned.Service{Spec: versioned.ServiceSpec{Ports: []versioned.ServicePort{{Port: 1234}}}}
|
in := &versioned.Service{Spec: versioned.ServiceSpec{Ports: []versioned.ServicePort{{Port: 1234}}}}
|
||||||
obj := roundTrip(t, runtime.Object(in))
|
obj := roundTrip(t, runtime.Object(in))
|
||||||
out := obj.(*versioned.Service)
|
out := obj.(*versioned.Service)
|
||||||
if out.Spec.Ports[0].TargetPort != util.NewIntOrStringFromInt(1234) {
|
if out.Spec.Ports[0].TargetPort != intstr.FromInt(1234) {
|
||||||
t.Errorf("Expected TargetPort to be defaulted, got %v", out.Spec.Ports[0].TargetPort)
|
t.Errorf("Expected TargetPort to be defaulted, got %v", out.Spec.Ports[0].TargetPort)
|
||||||
}
|
}
|
||||||
|
|
||||||
in = &versioned.Service{Spec: versioned.ServiceSpec{Ports: []versioned.ServicePort{{Port: 1234, TargetPort: util.NewIntOrStringFromInt(5678)}}}}
|
in = &versioned.Service{Spec: versioned.ServiceSpec{Ports: []versioned.ServicePort{{Port: 1234, TargetPort: intstr.FromInt(5678)}}}}
|
||||||
obj = roundTrip(t, runtime.Object(in))
|
obj = roundTrip(t, runtime.Object(in))
|
||||||
out = obj.(*versioned.Service)
|
out = obj.(*versioned.Service)
|
||||||
if out.Spec.Ports[0].TargetPort != util.NewIntOrStringFromInt(5678) {
|
if out.Spec.Ports[0].TargetPort != intstr.FromInt(5678) {
|
||||||
t.Errorf("Expected TargetPort to be unchanged, got %v", out.Spec.Ports[0].TargetPort)
|
t.Errorf("Expected TargetPort to be unchanged, got %v", out.Spec.Ports[0].TargetPort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -316,42 +316,42 @@ func TestSetDefaultServicePort(t *testing.T) {
|
|||||||
// Unchanged if set.
|
// Unchanged if set.
|
||||||
in := &versioned.Service{Spec: versioned.ServiceSpec{
|
in := &versioned.Service{Spec: versioned.ServiceSpec{
|
||||||
Ports: []versioned.ServicePort{
|
Ports: []versioned.ServicePort{
|
||||||
{Protocol: "UDP", Port: 9376, TargetPort: util.NewIntOrStringFromString("p")},
|
{Protocol: "UDP", Port: 9376, TargetPort: intstr.FromString("p")},
|
||||||
{Protocol: "UDP", Port: 8675, TargetPort: util.NewIntOrStringFromInt(309)},
|
{Protocol: "UDP", Port: 8675, TargetPort: intstr.FromInt(309)},
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
out := roundTrip(t, runtime.Object(in)).(*versioned.Service)
|
out := roundTrip(t, runtime.Object(in)).(*versioned.Service)
|
||||||
if out.Spec.Ports[0].Protocol != versioned.ProtocolUDP {
|
if out.Spec.Ports[0].Protocol != versioned.ProtocolUDP {
|
||||||
t.Errorf("Expected protocol %s, got %s", versioned.ProtocolUDP, out.Spec.Ports[0].Protocol)
|
t.Errorf("Expected protocol %s, got %s", versioned.ProtocolUDP, out.Spec.Ports[0].Protocol)
|
||||||
}
|
}
|
||||||
if out.Spec.Ports[0].TargetPort != util.NewIntOrStringFromString("p") {
|
if out.Spec.Ports[0].TargetPort != intstr.FromString("p") {
|
||||||
t.Errorf("Expected port %v, got %v", in.Spec.Ports[0].Port, out.Spec.Ports[0].TargetPort)
|
t.Errorf("Expected port %v, got %v", in.Spec.Ports[0].Port, out.Spec.Ports[0].TargetPort)
|
||||||
}
|
}
|
||||||
if out.Spec.Ports[1].Protocol != versioned.ProtocolUDP {
|
if out.Spec.Ports[1].Protocol != versioned.ProtocolUDP {
|
||||||
t.Errorf("Expected protocol %s, got %s", versioned.ProtocolUDP, out.Spec.Ports[1].Protocol)
|
t.Errorf("Expected protocol %s, got %s", versioned.ProtocolUDP, out.Spec.Ports[1].Protocol)
|
||||||
}
|
}
|
||||||
if out.Spec.Ports[1].TargetPort != util.NewIntOrStringFromInt(309) {
|
if out.Spec.Ports[1].TargetPort != intstr.FromInt(309) {
|
||||||
t.Errorf("Expected port %v, got %v", in.Spec.Ports[1].Port, out.Spec.Ports[1].TargetPort)
|
t.Errorf("Expected port %v, got %v", in.Spec.Ports[1].Port, out.Spec.Ports[1].TargetPort)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Defaulted.
|
// Defaulted.
|
||||||
in = &versioned.Service{Spec: versioned.ServiceSpec{
|
in = &versioned.Service{Spec: versioned.ServiceSpec{
|
||||||
Ports: []versioned.ServicePort{
|
Ports: []versioned.ServicePort{
|
||||||
{Protocol: "", Port: 9376, TargetPort: util.NewIntOrStringFromString("")},
|
{Protocol: "", Port: 9376, TargetPort: intstr.FromString("")},
|
||||||
{Protocol: "", Port: 8675, TargetPort: util.NewIntOrStringFromInt(0)},
|
{Protocol: "", Port: 8675, TargetPort: intstr.FromInt(0)},
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
out = roundTrip(t, runtime.Object(in)).(*versioned.Service)
|
out = roundTrip(t, runtime.Object(in)).(*versioned.Service)
|
||||||
if out.Spec.Ports[0].Protocol != versioned.ProtocolTCP {
|
if out.Spec.Ports[0].Protocol != versioned.ProtocolTCP {
|
||||||
t.Errorf("Expected protocol %s, got %s", versioned.ProtocolTCP, out.Spec.Ports[0].Protocol)
|
t.Errorf("Expected protocol %s, got %s", versioned.ProtocolTCP, out.Spec.Ports[0].Protocol)
|
||||||
}
|
}
|
||||||
if out.Spec.Ports[0].TargetPort != util.NewIntOrStringFromInt(in.Spec.Ports[0].Port) {
|
if out.Spec.Ports[0].TargetPort != intstr.FromInt(in.Spec.Ports[0].Port) {
|
||||||
t.Errorf("Expected port %v, got %v", in.Spec.Ports[0].Port, out.Spec.Ports[0].TargetPort)
|
t.Errorf("Expected port %v, got %v", in.Spec.Ports[0].Port, out.Spec.Ports[0].TargetPort)
|
||||||
}
|
}
|
||||||
if out.Spec.Ports[1].Protocol != versioned.ProtocolTCP {
|
if out.Spec.Ports[1].Protocol != versioned.ProtocolTCP {
|
||||||
t.Errorf("Expected protocol %s, got %s", versioned.ProtocolTCP, out.Spec.Ports[1].Protocol)
|
t.Errorf("Expected protocol %s, got %s", versioned.ProtocolTCP, out.Spec.Ports[1].Protocol)
|
||||||
}
|
}
|
||||||
if out.Spec.Ports[1].TargetPort != util.NewIntOrStringFromInt(in.Spec.Ports[1].Port) {
|
if out.Spec.Ports[1].TargetPort != intstr.FromInt(in.Spec.Ports[1].Port) {
|
||||||
t.Errorf("Expected port %v, got %v", in.Spec.Ports[1].Port, out.Spec.Ports[1].TargetPort)
|
t.Errorf("Expected port %v, got %v", in.Spec.Ports[1].Port, out.Spec.Ports[1].TargetPort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
pkg2_unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
pkg2_unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
pkg6_runtime "k8s.io/kubernetes/pkg/runtime"
|
pkg6_runtime "k8s.io/kubernetes/pkg/runtime"
|
||||||
pkg1_types "k8s.io/kubernetes/pkg/types"
|
pkg1_types "k8s.io/kubernetes/pkg/types"
|
||||||
pkg5_util "k8s.io/kubernetes/pkg/util"
|
pkg5_intstr "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
"runtime"
|
||||||
pkg4_inf "speter.net/go/exp/math/dec/inf"
|
pkg4_inf "speter.net/go/exp/math/dec/inf"
|
||||||
@ -62,7 +62,7 @@ func init() {
|
|||||||
var v1 pkg2_unversioned.Time
|
var v1 pkg2_unversioned.Time
|
||||||
var v2 pkg6_runtime.RawExtension
|
var v2 pkg6_runtime.RawExtension
|
||||||
var v3 pkg1_types.UID
|
var v3 pkg1_types.UID
|
||||||
var v4 pkg5_util.IntOrString
|
var v4 pkg5_intstr.IntOrString
|
||||||
var v5 pkg4_inf.Dec
|
var v5 pkg4_inf.Dec
|
||||||
var v6 time.Time
|
var v6 time.Time
|
||||||
_, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6
|
_, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6
|
||||||
@ -12029,7 +12029,7 @@ func (x *HTTPGetAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
|||||||
}
|
}
|
||||||
case "port":
|
case "port":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.Port = pkg5_util.IntOrString{}
|
x.Port = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv928 := &x.Port
|
yyv928 := &x.Port
|
||||||
yym929 := z.DecBinary()
|
yym929 := z.DecBinary()
|
||||||
@ -12096,7 +12096,7 @@ func (x *HTTPGetAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.Port = pkg5_util.IntOrString{}
|
x.Port = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv934 := &x.Port
|
yyv934 := &x.Port
|
||||||
yym935 := z.DecBinary()
|
yym935 := z.DecBinary()
|
||||||
@ -12290,7 +12290,7 @@ func (x *TCPSocketAction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
|||||||
switch yys949 {
|
switch yys949 {
|
||||||
case "port":
|
case "port":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.Port = pkg5_util.IntOrString{}
|
x.Port = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv950 := &x.Port
|
yyv950 := &x.Port
|
||||||
yym951 := z.DecBinary()
|
yym951 := z.DecBinary()
|
||||||
@ -12330,7 +12330,7 @@ func (x *TCPSocketAction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.Port = pkg5_util.IntOrString{}
|
x.Port = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv953 := &x.Port
|
yyv953 := &x.Port
|
||||||
yym954 := z.DecBinary()
|
yym954 := z.DecBinary()
|
||||||
@ -23258,7 +23258,7 @@ func (x *ServicePort) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
|||||||
}
|
}
|
||||||
case "targetPort":
|
case "targetPort":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.TargetPort = pkg5_util.IntOrString{}
|
x.TargetPort = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv1926 := &x.TargetPort
|
yyv1926 := &x.TargetPort
|
||||||
yym1927 := z.DecBinary()
|
yym1927 := z.DecBinary()
|
||||||
@ -23349,7 +23349,7 @@ func (x *ServicePort) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.TargetPort = pkg5_util.IntOrString{}
|
x.TargetPort = pkg5_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv1933 := &x.TargetPort
|
yyv1933 := &x.TargetPort
|
||||||
yym1934 := z.DecBinary()
|
yym1934 := z.DecBinary()
|
||||||
|
@ -21,7 +21,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
// The comments for the structs and fields can be used from go-resful to
|
// The comments for the structs and fields can be used from go-resful to
|
||||||
@ -810,7 +810,7 @@ type HTTPGetAction struct {
|
|||||||
// Name or number of the port to access on the container.
|
// Name or number of the port to access on the container.
|
||||||
// Number must be in the range 1 to 65535.
|
// Number must be in the range 1 to 65535.
|
||||||
// Name must be an IANA_SVC_NAME.
|
// Name must be an IANA_SVC_NAME.
|
||||||
Port util.IntOrString `json:"port"`
|
Port intstr.IntOrString `json:"port"`
|
||||||
// Host name to connect to, defaults to the pod IP.
|
// Host name to connect to, defaults to the pod IP.
|
||||||
Host string `json:"host,omitempty"`
|
Host string `json:"host,omitempty"`
|
||||||
// Scheme to use for connecting to the host.
|
// Scheme to use for connecting to the host.
|
||||||
@ -833,7 +833,7 @@ type TCPSocketAction struct {
|
|||||||
// Number or name of the port to access on the container.
|
// Number or name of the port to access on the container.
|
||||||
// Number must be in the range 1 to 65535.
|
// Number must be in the range 1 to 65535.
|
||||||
// Name must be an IANA_SVC_NAME.
|
// Name must be an IANA_SVC_NAME.
|
||||||
Port util.IntOrString `json:"port"`
|
Port intstr.IntOrString `json:"port"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExecAction describes a "run in container" action.
|
// ExecAction describes a "run in container" action.
|
||||||
@ -1621,7 +1621,7 @@ type ServicePort struct {
|
|||||||
// of Port is used (an identity map).
|
// of Port is used (an identity map).
|
||||||
// Defaults to the service port.
|
// Defaults to the service port.
|
||||||
// More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#defining-a-service
|
// More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#defining-a-service
|
||||||
TargetPort util.IntOrString `json:"targetPort,omitempty"`
|
TargetPort intstr.IntOrString `json:"targetPort,omitempty"`
|
||||||
|
|
||||||
// The port on each node on which this service is exposed when type=NodePort or LoadBalancer.
|
// The port on each node on which this service is exposed when type=NodePort or LoadBalancer.
|
||||||
// Usually assigned by the system. If specified, it will be allocated to the service
|
// Usually assigned by the system. If specified, it will be allocated to the service
|
||||||
|
@ -30,8 +30,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
"k8s.io/kubernetes/pkg/capabilities"
|
"k8s.io/kubernetes/pkg/capabilities"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
|
||||||
errs "k8s.io/kubernetes/pkg/util/fielderrors"
|
errs "k8s.io/kubernetes/pkg/util/fielderrors"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/validation"
|
"k8s.io/kubernetes/pkg/util/validation"
|
||||||
|
|
||||||
@ -933,9 +933,9 @@ func validateHTTPGetAction(http *api.HTTPGetAction) errs.ValidationErrorList {
|
|||||||
if len(http.Path) == 0 {
|
if len(http.Path) == 0 {
|
||||||
allErrors = append(allErrors, errs.NewFieldRequired("path"))
|
allErrors = append(allErrors, errs.NewFieldRequired("path"))
|
||||||
}
|
}
|
||||||
if http.Port.Kind == util.IntstrInt && !validation.IsValidPortNum(http.Port.IntVal) {
|
if http.Port.Type == intstr.Int && !validation.IsValidPortNum(http.Port.IntVal) {
|
||||||
allErrors = append(allErrors, errs.NewFieldInvalid("port", http.Port, PortRangeErrorMsg))
|
allErrors = append(allErrors, errs.NewFieldInvalid("port", http.Port, PortRangeErrorMsg))
|
||||||
} else if http.Port.Kind == util.IntstrString && !validation.IsValidPortName(http.Port.StrVal) {
|
} else if http.Port.Type == intstr.String && !validation.IsValidPortName(http.Port.StrVal) {
|
||||||
allErrors = append(allErrors, errs.NewFieldInvalid("port", http.Port.StrVal, PortNameErrorMsg))
|
allErrors = append(allErrors, errs.NewFieldInvalid("port", http.Port.StrVal, PortNameErrorMsg))
|
||||||
}
|
}
|
||||||
supportedSchemes := sets.NewString(string(api.URISchemeHTTP), string(api.URISchemeHTTPS))
|
supportedSchemes := sets.NewString(string(api.URISchemeHTTP), string(api.URISchemeHTTPS))
|
||||||
@ -947,9 +947,9 @@ func validateHTTPGetAction(http *api.HTTPGetAction) errs.ValidationErrorList {
|
|||||||
|
|
||||||
func validateTCPSocketAction(tcp *api.TCPSocketAction) errs.ValidationErrorList {
|
func validateTCPSocketAction(tcp *api.TCPSocketAction) errs.ValidationErrorList {
|
||||||
allErrors := errs.ValidationErrorList{}
|
allErrors := errs.ValidationErrorList{}
|
||||||
if tcp.Port.Kind == util.IntstrInt && !validation.IsValidPortNum(tcp.Port.IntVal) {
|
if tcp.Port.Type == intstr.Int && !validation.IsValidPortNum(tcp.Port.IntVal) {
|
||||||
allErrors = append(allErrors, errs.NewFieldInvalid("port", tcp.Port, PortRangeErrorMsg))
|
allErrors = append(allErrors, errs.NewFieldInvalid("port", tcp.Port, PortRangeErrorMsg))
|
||||||
} else if tcp.Port.Kind == util.IntstrString && !validation.IsValidPortName(tcp.Port.StrVal) {
|
} else if tcp.Port.Type == intstr.String && !validation.IsValidPortName(tcp.Port.StrVal) {
|
||||||
allErrors = append(allErrors, errs.NewFieldInvalid("port", tcp.Port.StrVal, PortNameErrorMsg))
|
allErrors = append(allErrors, errs.NewFieldInvalid("port", tcp.Port.StrVal, PortNameErrorMsg))
|
||||||
}
|
}
|
||||||
return allErrors
|
return allErrors
|
||||||
@ -1334,10 +1334,10 @@ func validateServicePort(sp *api.ServicePort, requireName bool, allNames *sets.S
|
|||||||
allErrs = append(allErrs, errs.NewFieldValueNotSupported("protocol", sp.Protocol, supportedPortProtocols.List()))
|
allErrs = append(allErrs, errs.NewFieldValueNotSupported("protocol", sp.Protocol, supportedPortProtocols.List()))
|
||||||
}
|
}
|
||||||
|
|
||||||
if sp.TargetPort.Kind == util.IntstrInt && !validation.IsValidPortNum(sp.TargetPort.IntVal) {
|
if sp.TargetPort.Type == intstr.Int && !validation.IsValidPortNum(sp.TargetPort.IntVal) {
|
||||||
allErrs = append(allErrs, errs.NewFieldInvalid("targetPort", sp.TargetPort, PortRangeErrorMsg))
|
allErrs = append(allErrs, errs.NewFieldInvalid("targetPort", sp.TargetPort, PortRangeErrorMsg))
|
||||||
}
|
}
|
||||||
if sp.TargetPort.Kind == util.IntstrString && !validation.IsValidPortName(sp.TargetPort.StrVal) {
|
if sp.TargetPort.Type == intstr.String && !validation.IsValidPortName(sp.TargetPort.StrVal) {
|
||||||
allErrs = append(allErrs, errs.NewFieldInvalid("targetPort", sp.TargetPort, PortNameErrorMsg))
|
allErrs = append(allErrs, errs.NewFieldInvalid("targetPort", sp.TargetPort, PortNameErrorMsg))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,10 +28,10 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/capabilities"
|
"k8s.io/kubernetes/pkg/capabilities"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
|
||||||
utilerrors "k8s.io/kubernetes/pkg/util/errors"
|
utilerrors "k8s.io/kubernetes/pkg/util/errors"
|
||||||
"k8s.io/kubernetes/pkg/util/fielderrors"
|
"k8s.io/kubernetes/pkg/util/fielderrors"
|
||||||
errors "k8s.io/kubernetes/pkg/util/fielderrors"
|
errors "k8s.io/kubernetes/pkg/util/fielderrors"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -839,9 +839,9 @@ func TestValidateProbe(t *testing.T) {
|
|||||||
func TestValidateHandler(t *testing.T) {
|
func TestValidateHandler(t *testing.T) {
|
||||||
successCases := []api.Handler{
|
successCases := []api.Handler{
|
||||||
{Exec: &api.ExecAction{Command: []string{"echo"}}},
|
{Exec: &api.ExecAction{Command: []string{"echo"}}},
|
||||||
{HTTPGet: &api.HTTPGetAction{Path: "/", Port: util.NewIntOrStringFromInt(1), Host: "", Scheme: "HTTP"}},
|
{HTTPGet: &api.HTTPGetAction{Path: "/", Port: intstr.FromInt(1), Host: "", Scheme: "HTTP"}},
|
||||||
{HTTPGet: &api.HTTPGetAction{Path: "/foo", Port: util.NewIntOrStringFromInt(65535), Host: "host", Scheme: "HTTP"}},
|
{HTTPGet: &api.HTTPGetAction{Path: "/foo", Port: intstr.FromInt(65535), Host: "host", Scheme: "HTTP"}},
|
||||||
{HTTPGet: &api.HTTPGetAction{Path: "/", Port: util.NewIntOrStringFromString("port"), Host: "", Scheme: "HTTP"}},
|
{HTTPGet: &api.HTTPGetAction{Path: "/", Port: intstr.FromString("port"), Host: "", Scheme: "HTTP"}},
|
||||||
}
|
}
|
||||||
for _, h := range successCases {
|
for _, h := range successCases {
|
||||||
if errs := validateHandler(&h); len(errs) != 0 {
|
if errs := validateHandler(&h); len(errs) != 0 {
|
||||||
@ -852,9 +852,9 @@ func TestValidateHandler(t *testing.T) {
|
|||||||
errorCases := []api.Handler{
|
errorCases := []api.Handler{
|
||||||
{},
|
{},
|
||||||
{Exec: &api.ExecAction{Command: []string{}}},
|
{Exec: &api.ExecAction{Command: []string{}}},
|
||||||
{HTTPGet: &api.HTTPGetAction{Path: "", Port: util.NewIntOrStringFromInt(0), Host: ""}},
|
{HTTPGet: &api.HTTPGetAction{Path: "", Port: intstr.FromInt(0), Host: ""}},
|
||||||
{HTTPGet: &api.HTTPGetAction{Path: "/foo", Port: util.NewIntOrStringFromInt(65536), Host: "host"}},
|
{HTTPGet: &api.HTTPGetAction{Path: "/foo", Port: intstr.FromInt(65536), Host: "host"}},
|
||||||
{HTTPGet: &api.HTTPGetAction{Path: "", Port: util.NewIntOrStringFromString(""), Host: ""}},
|
{HTTPGet: &api.HTTPGetAction{Path: "", Port: intstr.FromString(""), Host: ""}},
|
||||||
}
|
}
|
||||||
for _, h := range errorCases {
|
for _, h := range errorCases {
|
||||||
if errs := validateHandler(&h); len(errs) == 0 {
|
if errs := validateHandler(&h); len(errs) == 0 {
|
||||||
@ -1084,7 +1084,7 @@ func TestValidateContainers(t *testing.T) {
|
|||||||
Lifecycle: &api.Lifecycle{
|
Lifecycle: &api.Lifecycle{
|
||||||
PreStop: &api.Handler{
|
PreStop: &api.Handler{
|
||||||
TCPSocket: &api.TCPSocketAction{
|
TCPSocket: &api.TCPSocketAction{
|
||||||
Port: util.IntOrString{IntVal: 0},
|
Port: intstr.FromInt(0),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1688,7 +1688,7 @@ func makeValidService() api.Service {
|
|||||||
Selector: map[string]string{"key": "val"},
|
Selector: map[string]string{"key": "val"},
|
||||||
SessionAffinity: "None",
|
SessionAffinity: "None",
|
||||||
Type: api.ServiceTypeClusterIP,
|
Type: api.ServiceTypeClusterIP,
|
||||||
Ports: []api.ServicePort{{Name: "p", Protocol: "TCP", Port: 8675, TargetPort: util.NewIntOrStringFromInt(8675)}},
|
Ports: []api.ServicePort{{Name: "p", Protocol: "TCP", Port: 8675, TargetPort: intstr.FromInt(8675)}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1815,7 +1815,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "empty port[1] name",
|
name: "empty port[1] name",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "", Protocol: "TCP", Port: 12345, TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "", Protocol: "TCP", Port: 12345, TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
@ -1823,7 +1823,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "empty multi-port port[0] name",
|
name: "empty multi-port port[0] name",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Ports[0].Name = ""
|
s.Spec.Ports[0].Name = ""
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Protocol: "TCP", Port: 12345, TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Protocol: "TCP", Port: 12345, TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
@ -1872,7 +1872,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "invalid TargetPort int",
|
name: "invalid TargetPort int",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Ports[0].TargetPort = util.NewIntOrStringFromInt(65536)
|
s.Spec.Ports[0].TargetPort = intstr.FromInt(65536)
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
@ -1901,7 +1901,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "dup port name",
|
name: "dup port name",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Ports[0].Name = "p"
|
s.Spec.Ports[0].Name = "p"
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
@ -1917,7 +1917,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "invalid load balancer protocol 2",
|
name: "invalid load balancer protocol 2",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeLoadBalancer
|
s.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "UDP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
@ -1932,14 +1932,14 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid 2",
|
name: "valid 2",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Ports[0].Protocol = "UDP"
|
s.Spec.Ports[0].Protocol = "UDP"
|
||||||
s.Spec.Ports[0].TargetPort = util.NewIntOrStringFromInt(12345)
|
s.Spec.Ports[0].TargetPort = intstr.FromInt(12345)
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "valid 3",
|
name: "valid 3",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Ports[0].TargetPort = util.NewIntOrStringFromString("http")
|
s.Spec.Ports[0].TargetPort = intstr.FromString("http")
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -1954,7 +1954,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid cluster ip - empty",
|
name: "valid cluster ip - empty",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.ClusterIP = ""
|
s.Spec.ClusterIP = ""
|
||||||
s.Spec.Ports[0].TargetPort = util.NewIntOrStringFromString("http")
|
s.Spec.Ports[0].TargetPort = intstr.FromString("http")
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -1976,7 +1976,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid type loadbalancer 2 ports",
|
name: "valid type loadbalancer 2 ports",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeLoadBalancer
|
s.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -1984,7 +1984,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid external load balancer 2 ports",
|
name: "valid external load balancer 2 ports",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeLoadBalancer
|
s.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -1992,8 +1992,8 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "duplicate nodeports",
|
name: "duplicate nodeports",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeNodePort
|
s.Spec.Type = api.ServiceTypeNodePort
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: util.NewIntOrStringFromInt(1)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: util.NewIntOrStringFromInt(2)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)})
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
@ -2001,8 +2001,8 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "duplicate nodeports (different protocols)",
|
name: "duplicate nodeports (different protocols)",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeNodePort
|
s.Spec.Type = api.ServiceTypeNodePort
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: util.NewIntOrStringFromInt(1)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "UDP", NodePort: 1, TargetPort: util.NewIntOrStringFromInt(2)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "r", Port: 2, Protocol: "UDP", NodePort: 1, TargetPort: intstr.FromInt(2)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -2031,7 +2031,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid type loadbalancer 2 ports",
|
name: "valid type loadbalancer 2 ports",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeLoadBalancer
|
s.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -2039,7 +2039,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid type loadbalancer with NodePort",
|
name: "valid type loadbalancer with NodePort",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeLoadBalancer
|
s.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -2047,7 +2047,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid type=NodePort service with NodePort",
|
name: "valid type=NodePort service with NodePort",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeNodePort
|
s.Spec.Type = api.ServiceTypeNodePort
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -2055,7 +2055,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid type=NodePort service without NodePort",
|
name: "valid type=NodePort service without NodePort",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeNodePort
|
s.Spec.Type = api.ServiceTypeNodePort
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -2063,7 +2063,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid cluster service without NodePort",
|
name: "valid cluster service without NodePort",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeClusterIP
|
s.Spec.Type = api.ServiceTypeClusterIP
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -2071,7 +2071,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "invalid cluster service with NodePort",
|
name: "invalid cluster service with NodePort",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeClusterIP
|
s.Spec.Type = api.ServiceTypeClusterIP
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", NodePort: 12345, TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
@ -2079,8 +2079,8 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "invalid public service with duplicate NodePort",
|
name: "invalid public service with duplicate NodePort",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeNodePort
|
s.Spec.Type = api.ServiceTypeNodePort
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p1", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: util.NewIntOrStringFromInt(1)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p1", Port: 1, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(1)})
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p2", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: util.NewIntOrStringFromInt(2)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "p2", Port: 2, Protocol: "TCP", NodePort: 1, TargetPort: intstr.FromInt(2)})
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
@ -2088,7 +2088,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "valid type=LoadBalancer",
|
name: "valid type=LoadBalancer",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeLoadBalancer
|
s.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "q", Port: 12345, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 0,
|
numErrs: 0,
|
||||||
},
|
},
|
||||||
@ -2098,7 +2098,7 @@ func TestValidateService(t *testing.T) {
|
|||||||
name: "invalid port type=LoadBalancer",
|
name: "invalid port type=LoadBalancer",
|
||||||
tweakSvc: func(s *api.Service) {
|
tweakSvc: func(s *api.Service) {
|
||||||
s.Spec.Type = api.ServiceTypeLoadBalancer
|
s.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "kubelet", Port: 10250, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(12345)})
|
s.Spec.Ports = append(s.Spec.Ports, api.ServicePort{Name: "kubelet", Port: 10250, Protocol: "TCP", TargetPort: intstr.FromInt(12345)})
|
||||||
},
|
},
|
||||||
numErrs: 1,
|
numErrs: 1,
|
||||||
},
|
},
|
||||||
|
@ -25,7 +25,7 @@ import (
|
|||||||
resource "k8s.io/kubernetes/pkg/api/resource"
|
resource "k8s.io/kubernetes/pkg/api/resource"
|
||||||
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
conversion "k8s.io/kubernetes/pkg/conversion"
|
conversion "k8s.io/kubernetes/pkg/conversion"
|
||||||
util "k8s.io/kubernetes/pkg/util"
|
intstr "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
inf "speter.net/go/exp/math/dec/inf"
|
inf "speter.net/go/exp/math/dec/inf"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -302,7 +302,7 @@ func deepCopy_api_GlusterfsVolumeSource(in api.GlusterfsVolumeSource, out *api.G
|
|||||||
|
|
||||||
func deepCopy_api_HTTPGetAction(in api.HTTPGetAction, out *api.HTTPGetAction, c *conversion.Cloner) error {
|
func deepCopy_api_HTTPGetAction(in api.HTTPGetAction, out *api.HTTPGetAction, c *conversion.Cloner) error {
|
||||||
out.Path = in.Path
|
out.Path = in.Path
|
||||||
if err := deepCopy_util_IntOrString(in.Port, &out.Port, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.Host = in.Host
|
out.Host = in.Host
|
||||||
@ -695,7 +695,7 @@ func deepCopy_api_SecurityContext(in api.SecurityContext, out *api.SecurityConte
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_api_TCPSocketAction(in api.TCPSocketAction, out *api.TCPSocketAction, c *conversion.Cloner) error {
|
func deepCopy_api_TCPSocketAction(in api.TCPSocketAction, out *api.TCPSocketAction, c *conversion.Cloner) error {
|
||||||
if err := deepCopy_util_IntOrString(in.Port, &out.Port, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -1205,7 +1205,7 @@ func deepCopy_extensions_Ingress(in Ingress, out *Ingress, c *conversion.Cloner)
|
|||||||
|
|
||||||
func deepCopy_extensions_IngressBackend(in IngressBackend, out *IngressBackend, c *conversion.Cloner) error {
|
func deepCopy_extensions_IngressBackend(in IngressBackend, out *IngressBackend, c *conversion.Cloner) error {
|
||||||
out.ServiceName = in.ServiceName
|
out.ServiceName = in.ServiceName
|
||||||
if err := deepCopy_util_IntOrString(in.ServicePort, &out.ServicePort, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.ServicePort, &out.ServicePort, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -1440,10 +1440,10 @@ func deepCopy_extensions_ReplicationControllerDummy(in ReplicationControllerDumm
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_extensions_RollingUpdateDeployment(in RollingUpdateDeployment, out *RollingUpdateDeployment, c *conversion.Cloner) error {
|
func deepCopy_extensions_RollingUpdateDeployment(in RollingUpdateDeployment, out *RollingUpdateDeployment, c *conversion.Cloner) error {
|
||||||
if err := deepCopy_util_IntOrString(in.MaxUnavailable, &out.MaxUnavailable, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.MaxUnavailable, &out.MaxUnavailable, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := deepCopy_util_IntOrString(in.MaxSurge, &out.MaxSurge, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.MaxSurge, &out.MaxSurge, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.MinReadySeconds = in.MinReadySeconds
|
out.MinReadySeconds = in.MinReadySeconds
|
||||||
@ -1571,8 +1571,8 @@ func deepCopy_extensions_ThirdPartyResourceList(in ThirdPartyResourceList, out *
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_util_IntOrString(in util.IntOrString, out *util.IntOrString, c *conversion.Cloner) error {
|
func deepCopy_intstr_IntOrString(in intstr.IntOrString, out *intstr.IntOrString, c *conversion.Cloner) error {
|
||||||
out.Kind = in.Kind
|
out.Type = in.Type
|
||||||
out.IntVal = in.IntVal
|
out.IntVal = in.IntVal
|
||||||
out.StrVal = in.StrVal
|
out.StrVal = in.StrVal
|
||||||
return nil
|
return nil
|
||||||
@ -1671,7 +1671,7 @@ func init() {
|
|||||||
deepCopy_extensions_ThirdPartyResourceData,
|
deepCopy_extensions_ThirdPartyResourceData,
|
||||||
deepCopy_extensions_ThirdPartyResourceDataList,
|
deepCopy_extensions_ThirdPartyResourceDataList,
|
||||||
deepCopy_extensions_ThirdPartyResourceList,
|
deepCopy_extensions_ThirdPartyResourceList,
|
||||||
deepCopy_util_IntOrString,
|
deepCopy_intstr_IntOrString,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// if one of the deep copy functions is malformed, detect it immediately.
|
// if one of the deep copy functions is malformed, detect it immediately.
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
pkg4_resource "k8s.io/kubernetes/pkg/api/resource"
|
pkg4_resource "k8s.io/kubernetes/pkg/api/resource"
|
||||||
pkg1_unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
pkg1_unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
pkg3_types "k8s.io/kubernetes/pkg/types"
|
pkg3_types "k8s.io/kubernetes/pkg/types"
|
||||||
pkg6_util "k8s.io/kubernetes/pkg/util"
|
pkg6_intstr "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
"runtime"
|
||||||
pkg5_inf "speter.net/go/exp/math/dec/inf"
|
pkg5_inf "speter.net/go/exp/math/dec/inf"
|
||||||
@ -62,7 +62,7 @@ func init() {
|
|||||||
var v1 pkg4_resource.Quantity
|
var v1 pkg4_resource.Quantity
|
||||||
var v2 pkg1_unversioned.TypeMeta
|
var v2 pkg1_unversioned.TypeMeta
|
||||||
var v3 pkg3_types.UID
|
var v3 pkg3_types.UID
|
||||||
var v4 pkg6_util.IntOrString
|
var v4 pkg6_intstr.IntOrString
|
||||||
var v5 pkg5_inf.Dec
|
var v5 pkg5_inf.Dec
|
||||||
var v6 time.Time
|
var v6 time.Time
|
||||||
_, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6
|
_, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6
|
||||||
@ -5014,7 +5014,7 @@ func (x *RollingUpdateDeployment) codecDecodeSelfFromMap(l int, d *codec1978.Dec
|
|||||||
switch yys450 {
|
switch yys450 {
|
||||||
case "maxUnavailable":
|
case "maxUnavailable":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.MaxUnavailable = pkg6_util.IntOrString{}
|
x.MaxUnavailable = pkg6_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv451 := &x.MaxUnavailable
|
yyv451 := &x.MaxUnavailable
|
||||||
yym452 := z.DecBinary()
|
yym452 := z.DecBinary()
|
||||||
@ -5029,7 +5029,7 @@ func (x *RollingUpdateDeployment) codecDecodeSelfFromMap(l int, d *codec1978.Dec
|
|||||||
}
|
}
|
||||||
case "maxSurge":
|
case "maxSurge":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.MaxSurge = pkg6_util.IntOrString{}
|
x.MaxSurge = pkg6_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv453 := &x.MaxSurge
|
yyv453 := &x.MaxSurge
|
||||||
yym454 := z.DecBinary()
|
yym454 := z.DecBinary()
|
||||||
@ -5075,7 +5075,7 @@ func (x *RollingUpdateDeployment) codecDecodeSelfFromArray(l int, d *codec1978.D
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.MaxUnavailable = pkg6_util.IntOrString{}
|
x.MaxUnavailable = pkg6_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv457 := &x.MaxUnavailable
|
yyv457 := &x.MaxUnavailable
|
||||||
yym458 := z.DecBinary()
|
yym458 := z.DecBinary()
|
||||||
@ -5099,7 +5099,7 @@ func (x *RollingUpdateDeployment) codecDecodeSelfFromArray(l int, d *codec1978.D
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.MaxSurge = pkg6_util.IntOrString{}
|
x.MaxSurge = pkg6_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv459 := &x.MaxSurge
|
yyv459 := &x.MaxSurge
|
||||||
yym460 := z.DecBinary()
|
yym460 := z.DecBinary()
|
||||||
@ -10916,7 +10916,7 @@ func (x *IngressBackend) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
|||||||
}
|
}
|
||||||
case "servicePort":
|
case "servicePort":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.ServicePort = pkg6_util.IntOrString{}
|
x.ServicePort = pkg6_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv975 := &x.ServicePort
|
yyv975 := &x.ServicePort
|
||||||
yym976 := z.DecBinary()
|
yym976 := z.DecBinary()
|
||||||
@ -10971,7 +10971,7 @@ func (x *IngressBackend) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.ServicePort = pkg6_util.IntOrString{}
|
x.ServicePort = pkg6_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv979 := &x.ServicePort
|
yyv979 := &x.ServicePort
|
||||||
yym980 := z.DecBinary()
|
yym980 := z.DecBinary()
|
||||||
|
@ -31,7 +31,7 @@ package extensions
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
// describes the attributes of a scale subresource
|
// describes the attributes of a scale subresource
|
||||||
@ -256,7 +256,7 @@ type RollingUpdateDeployment struct {
|
|||||||
// can be scaled down further, followed by scaling up the new RC, ensuring
|
// can be scaled down further, followed by scaling up the new RC, ensuring
|
||||||
// that at least 70% of original number of pods are available at all times
|
// that at least 70% of original number of pods are available at all times
|
||||||
// during the update.
|
// during the update.
|
||||||
MaxUnavailable util.IntOrString `json:"maxUnavailable,omitempty"`
|
MaxUnavailable intstr.IntOrString `json:"maxUnavailable,omitempty"`
|
||||||
|
|
||||||
// The maximum number of pods that can be scheduled above the original number of
|
// The maximum number of pods that can be scheduled above the original number of
|
||||||
// pods.
|
// pods.
|
||||||
@ -268,7 +268,7 @@ type RollingUpdateDeployment struct {
|
|||||||
// immediately when the rolling update starts. Once old pods have been killed,
|
// immediately when the rolling update starts. Once old pods have been killed,
|
||||||
// new RC can be scaled up further, ensuring that total number of pods running
|
// new RC can be scaled up further, ensuring that total number of pods running
|
||||||
// at any time during the update is atmost 130% of original pods.
|
// at any time during the update is atmost 130% of original pods.
|
||||||
MaxSurge util.IntOrString `json:"maxSurge,omitempty"`
|
MaxSurge intstr.IntOrString `json:"maxSurge,omitempty"`
|
||||||
|
|
||||||
// Minimum number of seconds for which a newly created pod should be ready
|
// Minimum number of seconds for which a newly created pod should be ready
|
||||||
// without any of its container crashing, for it to be considered available.
|
// without any of its container crashing, for it to be considered available.
|
||||||
@ -583,7 +583,7 @@ type IngressBackend struct {
|
|||||||
ServiceName string `json:"serviceName"`
|
ServiceName string `json:"serviceName"`
|
||||||
|
|
||||||
// Specifies the port of the referenced service.
|
// Specifies the port of the referenced service.
|
||||||
ServicePort util.IntOrString `json:"servicePort"`
|
ServicePort intstr.IntOrString `json:"servicePort"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type NodeResource string
|
type NodeResource string
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
v1 "k8s.io/kubernetes/pkg/api/v1"
|
v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
"k8s.io/kubernetes/pkg/conversion"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func addConversionFuncs() {
|
func addConversionFuncs() {
|
||||||
@ -288,13 +288,13 @@ func convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployme
|
|||||||
defaulting.(func(*extensions.RollingUpdateDeployment))(in)
|
defaulting.(func(*extensions.RollingUpdateDeployment))(in)
|
||||||
}
|
}
|
||||||
if out.MaxUnavailable == nil {
|
if out.MaxUnavailable == nil {
|
||||||
out.MaxUnavailable = &util.IntOrString{}
|
out.MaxUnavailable = &intstr.IntOrString{}
|
||||||
}
|
}
|
||||||
if err := s.Convert(&in.MaxUnavailable, out.MaxUnavailable, 0); err != nil {
|
if err := s.Convert(&in.MaxUnavailable, out.MaxUnavailable, 0); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if out.MaxSurge == nil {
|
if out.MaxSurge == nil {
|
||||||
out.MaxSurge = &util.IntOrString{}
|
out.MaxSurge = &intstr.IntOrString{}
|
||||||
}
|
}
|
||||||
if err := s.Convert(&in.MaxSurge, out.MaxSurge, 0); err != nil {
|
if err := s.Convert(&in.MaxSurge, out.MaxSurge, 0); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
v1 "k8s.io/kubernetes/pkg/api/v1"
|
v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
conversion "k8s.io/kubernetes/pkg/conversion"
|
conversion "k8s.io/kubernetes/pkg/conversion"
|
||||||
util "k8s.io/kubernetes/pkg/util"
|
intstr "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
inf "speter.net/go/exp/math/dec/inf"
|
inf "speter.net/go/exp/math/dec/inf"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -338,7 +338,7 @@ func deepCopy_v1_GlusterfsVolumeSource(in v1.GlusterfsVolumeSource, out *v1.Glus
|
|||||||
|
|
||||||
func deepCopy_v1_HTTPGetAction(in v1.HTTPGetAction, out *v1.HTTPGetAction, c *conversion.Cloner) error {
|
func deepCopy_v1_HTTPGetAction(in v1.HTTPGetAction, out *v1.HTTPGetAction, c *conversion.Cloner) error {
|
||||||
out.Path = in.Path
|
out.Path = in.Path
|
||||||
if err := deepCopy_util_IntOrString(in.Port, &out.Port, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
out.Host = in.Host
|
out.Host = in.Host
|
||||||
@ -732,7 +732,7 @@ func deepCopy_v1_SecurityContext(in v1.SecurityContext, out *v1.SecurityContext,
|
|||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_v1_TCPSocketAction(in v1.TCPSocketAction, out *v1.TCPSocketAction, c *conversion.Cloner) error {
|
func deepCopy_v1_TCPSocketAction(in v1.TCPSocketAction, out *v1.TCPSocketAction, c *conversion.Cloner) error {
|
||||||
if err := deepCopy_util_IntOrString(in.Port, &out.Port, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.Port, &out.Port, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -1217,7 +1217,7 @@ func deepCopy_v1beta1_Ingress(in Ingress, out *Ingress, c *conversion.Cloner) er
|
|||||||
|
|
||||||
func deepCopy_v1beta1_IngressBackend(in IngressBackend, out *IngressBackend, c *conversion.Cloner) error {
|
func deepCopy_v1beta1_IngressBackend(in IngressBackend, out *IngressBackend, c *conversion.Cloner) error {
|
||||||
out.ServiceName = in.ServiceName
|
out.ServiceName = in.ServiceName
|
||||||
if err := deepCopy_util_IntOrString(in.ServicePort, &out.ServicePort, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(in.ServicePort, &out.ServicePort, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -1453,16 +1453,16 @@ func deepCopy_v1beta1_ReplicationControllerDummy(in ReplicationControllerDummy,
|
|||||||
|
|
||||||
func deepCopy_v1beta1_RollingUpdateDeployment(in RollingUpdateDeployment, out *RollingUpdateDeployment, c *conversion.Cloner) error {
|
func deepCopy_v1beta1_RollingUpdateDeployment(in RollingUpdateDeployment, out *RollingUpdateDeployment, c *conversion.Cloner) error {
|
||||||
if in.MaxUnavailable != nil {
|
if in.MaxUnavailable != nil {
|
||||||
out.MaxUnavailable = new(util.IntOrString)
|
out.MaxUnavailable = new(intstr.IntOrString)
|
||||||
if err := deepCopy_util_IntOrString(*in.MaxUnavailable, out.MaxUnavailable, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(*in.MaxUnavailable, out.MaxUnavailable, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
out.MaxUnavailable = nil
|
out.MaxUnavailable = nil
|
||||||
}
|
}
|
||||||
if in.MaxSurge != nil {
|
if in.MaxSurge != nil {
|
||||||
out.MaxSurge = new(util.IntOrString)
|
out.MaxSurge = new(intstr.IntOrString)
|
||||||
if err := deepCopy_util_IntOrString(*in.MaxSurge, out.MaxSurge, c); err != nil {
|
if err := deepCopy_intstr_IntOrString(*in.MaxSurge, out.MaxSurge, c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1593,8 +1593,8 @@ func deepCopy_v1beta1_ThirdPartyResourceList(in ThirdPartyResourceList, out *Thi
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deepCopy_util_IntOrString(in util.IntOrString, out *util.IntOrString, c *conversion.Cloner) error {
|
func deepCopy_intstr_IntOrString(in intstr.IntOrString, out *intstr.IntOrString, c *conversion.Cloner) error {
|
||||||
out.Kind = in.Kind
|
out.Type = in.Type
|
||||||
out.IntVal = in.IntVal
|
out.IntVal = in.IntVal
|
||||||
out.StrVal = in.StrVal
|
out.StrVal = in.StrVal
|
||||||
return nil
|
return nil
|
||||||
@ -1693,7 +1693,7 @@ func init() {
|
|||||||
deepCopy_v1beta1_ThirdPartyResourceData,
|
deepCopy_v1beta1_ThirdPartyResourceData,
|
||||||
deepCopy_v1beta1_ThirdPartyResourceDataList,
|
deepCopy_v1beta1_ThirdPartyResourceDataList,
|
||||||
deepCopy_v1beta1_ThirdPartyResourceList,
|
deepCopy_v1beta1_ThirdPartyResourceList,
|
||||||
deepCopy_util_IntOrString,
|
deepCopy_intstr_IntOrString,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// if one of the deep copy functions is malformed, detect it immediately.
|
// if one of the deep copy functions is malformed, detect it immediately.
|
||||||
|
@ -18,7 +18,7 @@ package v1beta1
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func addDefaultingFuncs() {
|
func addDefaultingFuncs() {
|
||||||
@ -74,12 +74,12 @@ func addDefaultingFuncs() {
|
|||||||
}
|
}
|
||||||
if strategy.RollingUpdate.MaxUnavailable == nil {
|
if strategy.RollingUpdate.MaxUnavailable == nil {
|
||||||
// Set default MaxUnavailable as 1 by default.
|
// Set default MaxUnavailable as 1 by default.
|
||||||
maxUnavailable := util.NewIntOrStringFromInt(1)
|
maxUnavailable := intstr.FromInt(1)
|
||||||
strategy.RollingUpdate.MaxUnavailable = &maxUnavailable
|
strategy.RollingUpdate.MaxUnavailable = &maxUnavailable
|
||||||
}
|
}
|
||||||
if strategy.RollingUpdate.MaxSurge == nil {
|
if strategy.RollingUpdate.MaxSurge == nil {
|
||||||
// Set default MaxSurge as 1 by default.
|
// Set default MaxSurge as 1 by default.
|
||||||
maxSurge := util.NewIntOrStringFromInt(1)
|
maxSurge := intstr.FromInt(1)
|
||||||
strategy.RollingUpdate.MaxSurge = &maxSurge
|
strategy.RollingUpdate.MaxSurge = &maxSurge
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSetDefaultDaemonSet(t *testing.T) {
|
func TestSetDefaultDaemonSet(t *testing.T) {
|
||||||
@ -85,8 +85,8 @@ func TestSetDefaultDaemonSet(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultDeployment(t *testing.T) {
|
func TestSetDefaultDeployment(t *testing.T) {
|
||||||
defaultIntOrString := util.NewIntOrStringFromInt(1)
|
defaultIntOrString := intstr.FromInt(1)
|
||||||
differentIntOrString := util.NewIntOrStringFromInt(5)
|
differentIntOrString := intstr.FromInt(5)
|
||||||
deploymentLabelKey := "deployment.kubernetes.io/podTemplateHash"
|
deploymentLabelKey := "deployment.kubernetes.io/podTemplateHash"
|
||||||
period := int64(v1.DefaultTerminationGracePeriodSeconds)
|
period := int64(v1.DefaultTerminationGracePeriodSeconds)
|
||||||
defaultTemplate := v1.PodTemplateSpec{
|
defaultTemplate := v1.PodTemplateSpec{
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
pkg1_unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
pkg1_unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
pkg2_v1 "k8s.io/kubernetes/pkg/api/v1"
|
pkg2_v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
pkg3_types "k8s.io/kubernetes/pkg/types"
|
pkg3_types "k8s.io/kubernetes/pkg/types"
|
||||||
pkg6_util "k8s.io/kubernetes/pkg/util"
|
pkg6_intstr "k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"reflect"
|
"reflect"
|
||||||
"runtime"
|
"runtime"
|
||||||
pkg5_inf "speter.net/go/exp/math/dec/inf"
|
pkg5_inf "speter.net/go/exp/math/dec/inf"
|
||||||
@ -62,7 +62,7 @@ func init() {
|
|||||||
var v1 pkg1_unversioned.TypeMeta
|
var v1 pkg1_unversioned.TypeMeta
|
||||||
var v2 pkg2_v1.ObjectMeta
|
var v2 pkg2_v1.ObjectMeta
|
||||||
var v3 pkg3_types.UID
|
var v3 pkg3_types.UID
|
||||||
var v4 pkg6_util.IntOrString
|
var v4 pkg6_intstr.IntOrString
|
||||||
var v5 pkg5_inf.Dec
|
var v5 pkg5_inf.Dec
|
||||||
var v6 time.Time
|
var v6 time.Time
|
||||||
_, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6
|
_, _, _, _, _, _, _ = v0, v1, v2, v3, v4, v5, v6
|
||||||
@ -5091,7 +5091,7 @@ func (x *RollingUpdateDeployment) codecDecodeSelfFromMap(l int, d *codec1978.Dec
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if x.MaxUnavailable == nil {
|
if x.MaxUnavailable == nil {
|
||||||
x.MaxUnavailable = new(pkg6_util.IntOrString)
|
x.MaxUnavailable = new(pkg6_intstr.IntOrString)
|
||||||
}
|
}
|
||||||
yym456 := z.DecBinary()
|
yym456 := z.DecBinary()
|
||||||
_ = yym456
|
_ = yym456
|
||||||
@ -5110,7 +5110,7 @@ func (x *RollingUpdateDeployment) codecDecodeSelfFromMap(l int, d *codec1978.Dec
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if x.MaxSurge == nil {
|
if x.MaxSurge == nil {
|
||||||
x.MaxSurge = new(pkg6_util.IntOrString)
|
x.MaxSurge = new(pkg6_intstr.IntOrString)
|
||||||
}
|
}
|
||||||
yym458 := z.DecBinary()
|
yym458 := z.DecBinary()
|
||||||
_ = yym458
|
_ = yym458
|
||||||
@ -5160,7 +5160,7 @@ func (x *RollingUpdateDeployment) codecDecodeSelfFromArray(l int, d *codec1978.D
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if x.MaxUnavailable == nil {
|
if x.MaxUnavailable == nil {
|
||||||
x.MaxUnavailable = new(pkg6_util.IntOrString)
|
x.MaxUnavailable = new(pkg6_intstr.IntOrString)
|
||||||
}
|
}
|
||||||
yym462 := z.DecBinary()
|
yym462 := z.DecBinary()
|
||||||
_ = yym462
|
_ = yym462
|
||||||
@ -5188,7 +5188,7 @@ func (x *RollingUpdateDeployment) codecDecodeSelfFromArray(l int, d *codec1978.D
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if x.MaxSurge == nil {
|
if x.MaxSurge == nil {
|
||||||
x.MaxSurge = new(pkg6_util.IntOrString)
|
x.MaxSurge = new(pkg6_intstr.IntOrString)
|
||||||
}
|
}
|
||||||
yym464 := z.DecBinary()
|
yym464 := z.DecBinary()
|
||||||
_ = yym464
|
_ = yym464
|
||||||
@ -11004,7 +11004,7 @@ func (x *IngressBackend) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
|||||||
}
|
}
|
||||||
case "servicePort":
|
case "servicePort":
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.ServicePort = pkg6_util.IntOrString{}
|
x.ServicePort = pkg6_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv979 := &x.ServicePort
|
yyv979 := &x.ServicePort
|
||||||
yym980 := z.DecBinary()
|
yym980 := z.DecBinary()
|
||||||
@ -11059,7 +11059,7 @@ func (x *IngressBackend) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
x.ServicePort = pkg6_util.IntOrString{}
|
x.ServicePort = pkg6_intstr.IntOrString{}
|
||||||
} else {
|
} else {
|
||||||
yyv983 := &x.ServicePort
|
yyv983 := &x.ServicePort
|
||||||
yym984 := z.DecBinary()
|
yym984 := z.DecBinary()
|
||||||
|
@ -19,7 +19,7 @@ package v1beta1
|
|||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
// describes the attributes of a scale subresource
|
// describes the attributes of a scale subresource
|
||||||
@ -250,7 +250,7 @@ type RollingUpdateDeployment struct {
|
|||||||
// can be scaled down further, followed by scaling up the new RC, ensuring
|
// can be scaled down further, followed by scaling up the new RC, ensuring
|
||||||
// that the total number of pods available at all times during the update is at
|
// that the total number of pods available at all times during the update is at
|
||||||
// least 70% of desired pods.
|
// least 70% of desired pods.
|
||||||
MaxUnavailable *util.IntOrString `json:"maxUnavailable,omitempty"`
|
MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
|
||||||
|
|
||||||
// The maximum number of pods that can be scheduled above the desired number of
|
// The maximum number of pods that can be scheduled above the desired number of
|
||||||
// pods.
|
// pods.
|
||||||
@ -263,7 +263,7 @@ type RollingUpdateDeployment struct {
|
|||||||
// 130% of desired pods. Once old pods have been killed,
|
// 130% of desired pods. Once old pods have been killed,
|
||||||
// new RC can be scaled up further, ensuring that total number of pods running
|
// new RC can be scaled up further, ensuring that total number of pods running
|
||||||
// at any time during the update is atmost 130% of desired pods.
|
// at any time during the update is atmost 130% of desired pods.
|
||||||
MaxSurge *util.IntOrString `json:"maxSurge,omitempty"`
|
MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty"`
|
||||||
|
|
||||||
// Minimum number of seconds for which a newly created pod should be ready
|
// Minimum number of seconds for which a newly created pod should be ready
|
||||||
// without any of its container crashing, for it to be considered available.
|
// without any of its container crashing, for it to be considered available.
|
||||||
@ -591,7 +591,7 @@ type IngressBackend struct {
|
|||||||
ServiceName string `json:"serviceName"`
|
ServiceName string `json:"serviceName"`
|
||||||
|
|
||||||
// Specifies the port of the referenced service.
|
// Specifies the port of the referenced service.
|
||||||
ServicePort util.IntOrString `json:"servicePort"`
|
ServicePort intstr.IntOrString `json:"servicePort"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type NodeResource string
|
type NodeResource string
|
||||||
|
@ -27,8 +27,8 @@ import (
|
|||||||
apivalidation "k8s.io/kubernetes/pkg/api/validation"
|
apivalidation "k8s.io/kubernetes/pkg/api/validation"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
|
||||||
errs "k8s.io/kubernetes/pkg/util/fielderrors"
|
errs "k8s.io/kubernetes/pkg/util/fielderrors"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/validation"
|
"k8s.io/kubernetes/pkg/util/validation"
|
||||||
utilvalidation "k8s.io/kubernetes/pkg/util/validation"
|
utilvalidation "k8s.io/kubernetes/pkg/util/validation"
|
||||||
@ -220,27 +220,27 @@ func ValidateDeploymentName(name string, prefix bool) (bool, string) {
|
|||||||
return apivalidation.NameIsDNSSubdomain(name, prefix)
|
return apivalidation.NameIsDNSSubdomain(name, prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ValidatePositiveIntOrPercent(intOrPercent util.IntOrString, fieldName string) errs.ValidationErrorList {
|
func ValidatePositiveIntOrPercent(intOrPercent intstr.IntOrString, fieldName string) errs.ValidationErrorList {
|
||||||
allErrs := errs.ValidationErrorList{}
|
allErrs := errs.ValidationErrorList{}
|
||||||
if intOrPercent.Kind == util.IntstrString {
|
if intOrPercent.Type == intstr.String {
|
||||||
if !validation.IsValidPercent(intOrPercent.StrVal) {
|
if !validation.IsValidPercent(intOrPercent.StrVal) {
|
||||||
allErrs = append(allErrs, errs.NewFieldInvalid(fieldName, intOrPercent, "value should be int(5) or percentage(5%)"))
|
allErrs = append(allErrs, errs.NewFieldInvalid(fieldName, intOrPercent, "value should be int(5) or percentage(5%)"))
|
||||||
}
|
}
|
||||||
} else if intOrPercent.Kind == util.IntstrInt {
|
} else if intOrPercent.Type == intstr.Int {
|
||||||
allErrs = append(allErrs, apivalidation.ValidatePositiveField(int64(intOrPercent.IntVal), fieldName)...)
|
allErrs = append(allErrs, apivalidation.ValidatePositiveField(int64(intOrPercent.IntVal), fieldName)...)
|
||||||
}
|
}
|
||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPercentValue(intOrStringValue util.IntOrString) (int, bool) {
|
func getPercentValue(intOrStringValue intstr.IntOrString) (int, bool) {
|
||||||
if intOrStringValue.Kind != util.IntstrString || !validation.IsValidPercent(intOrStringValue.StrVal) {
|
if intOrStringValue.Type != intstr.String || !validation.IsValidPercent(intOrStringValue.StrVal) {
|
||||||
return 0, false
|
return 0, false
|
||||||
}
|
}
|
||||||
value, _ := strconv.Atoi(intOrStringValue.StrVal[:len(intOrStringValue.StrVal)-1])
|
value, _ := strconv.Atoi(intOrStringValue.StrVal[:len(intOrStringValue.StrVal)-1])
|
||||||
return value, true
|
return value, true
|
||||||
}
|
}
|
||||||
|
|
||||||
func getIntOrPercentValue(intOrStringValue util.IntOrString) int {
|
func getIntOrPercentValue(intOrStringValue intstr.IntOrString) int {
|
||||||
value, isPercent := getPercentValue(intOrStringValue)
|
value, isPercent := getPercentValue(intOrStringValue)
|
||||||
if isPercent {
|
if isPercent {
|
||||||
return value
|
return value
|
||||||
@ -248,7 +248,7 @@ func getIntOrPercentValue(intOrStringValue util.IntOrString) int {
|
|||||||
return intOrStringValue.IntVal
|
return intOrStringValue.IntVal
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsNotMoreThan100Percent(intOrStringValue util.IntOrString, fieldName string) errs.ValidationErrorList {
|
func IsNotMoreThan100Percent(intOrStringValue intstr.IntOrString, fieldName string) errs.ValidationErrorList {
|
||||||
allErrs := errs.ValidationErrorList{}
|
allErrs := errs.ValidationErrorList{}
|
||||||
value, isPercent := getPercentValue(intOrStringValue)
|
value, isPercent := getPercentValue(intOrStringValue)
|
||||||
if !isPercent || value <= 100 {
|
if !isPercent || value <= 100 {
|
||||||
@ -511,7 +511,7 @@ func validateIngressBackend(backend *extensions.IngressBackend) errs.ValidationE
|
|||||||
} else if ok, errMsg := apivalidation.ValidateServiceName(backend.ServiceName, false); !ok {
|
} else if ok, errMsg := apivalidation.ValidateServiceName(backend.ServiceName, false); !ok {
|
||||||
allErrs = append(allErrs, errs.NewFieldInvalid("serviceName", backend.ServiceName, errMsg))
|
allErrs = append(allErrs, errs.NewFieldInvalid("serviceName", backend.ServiceName, errMsg))
|
||||||
}
|
}
|
||||||
if backend.ServicePort.Kind == util.IntstrString {
|
if backend.ServicePort.Type == intstr.String {
|
||||||
if !utilvalidation.IsDNS1123Label(backend.ServicePort.StrVal) {
|
if !utilvalidation.IsDNS1123Label(backend.ServicePort.StrVal) {
|
||||||
allErrs = append(allErrs, errs.NewFieldInvalid("servicePort", backend.ServicePort.StrVal, apivalidation.DNS1123LabelErrorMsg))
|
allErrs = append(allErrs, errs.NewFieldInvalid("servicePort", backend.ServicePort.StrVal, apivalidation.DNS1123LabelErrorMsg))
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,8 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
|
||||||
errors "k8s.io/kubernetes/pkg/util/fielderrors"
|
errors "k8s.io/kubernetes/pkg/util/fielderrors"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestValidateHorizontalPodAutoscaler(t *testing.T) {
|
func TestValidateHorizontalPodAutoscaler(t *testing.T) {
|
||||||
@ -772,7 +772,7 @@ func TestValidateDeployment(t *testing.T) {
|
|||||||
invalidMaxSurgeDeployment.Spec.Strategy = extensions.DeploymentStrategy{
|
invalidMaxSurgeDeployment.Spec.Strategy = extensions.DeploymentStrategy{
|
||||||
Type: extensions.RollingUpdateDeploymentStrategyType,
|
Type: extensions.RollingUpdateDeploymentStrategyType,
|
||||||
RollingUpdate: &extensions.RollingUpdateDeployment{
|
RollingUpdate: &extensions.RollingUpdateDeployment{
|
||||||
MaxSurge: util.NewIntOrStringFromString("20Percent"),
|
MaxSurge: intstr.FromString("20Percent"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
errorCases["value should be int(5) or percentage(5%)"] = invalidMaxSurgeDeployment
|
errorCases["value should be int(5) or percentage(5%)"] = invalidMaxSurgeDeployment
|
||||||
@ -782,8 +782,8 @@ func TestValidateDeployment(t *testing.T) {
|
|||||||
invalidRollingUpdateDeployment.Spec.Strategy = extensions.DeploymentStrategy{
|
invalidRollingUpdateDeployment.Spec.Strategy = extensions.DeploymentStrategy{
|
||||||
Type: extensions.RollingUpdateDeploymentStrategyType,
|
Type: extensions.RollingUpdateDeploymentStrategyType,
|
||||||
RollingUpdate: &extensions.RollingUpdateDeployment{
|
RollingUpdate: &extensions.RollingUpdateDeployment{
|
||||||
MaxSurge: util.NewIntOrStringFromString("0%"),
|
MaxSurge: intstr.FromString("0%"),
|
||||||
MaxUnavailable: util.NewIntOrStringFromInt(0),
|
MaxUnavailable: intstr.FromInt(0),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
errorCases["cannot be 0 when maxSurge is 0 as well"] = invalidRollingUpdateDeployment
|
errorCases["cannot be 0 when maxSurge is 0 as well"] = invalidRollingUpdateDeployment
|
||||||
@ -793,7 +793,7 @@ func TestValidateDeployment(t *testing.T) {
|
|||||||
invalidMaxUnavailableDeployment.Spec.Strategy = extensions.DeploymentStrategy{
|
invalidMaxUnavailableDeployment.Spec.Strategy = extensions.DeploymentStrategy{
|
||||||
Type: extensions.RollingUpdateDeploymentStrategyType,
|
Type: extensions.RollingUpdateDeploymentStrategyType,
|
||||||
RollingUpdate: &extensions.RollingUpdateDeployment{
|
RollingUpdate: &extensions.RollingUpdateDeployment{
|
||||||
MaxUnavailable: util.NewIntOrStringFromString("110%"),
|
MaxUnavailable: intstr.FromString("110%"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
errorCases["should not be more than 100%"] = invalidMaxUnavailableDeployment
|
errorCases["should not be more than 100%"] = invalidMaxUnavailableDeployment
|
||||||
@ -931,7 +931,7 @@ type ingressRules map[string]string
|
|||||||
func TestValidateIngress(t *testing.T) {
|
func TestValidateIngress(t *testing.T) {
|
||||||
defaultBackend := extensions.IngressBackend{
|
defaultBackend := extensions.IngressBackend{
|
||||||
ServiceName: "default-backend",
|
ServiceName: "default-backend",
|
||||||
ServicePort: util.IntOrString{Kind: util.IntstrInt, IntVal: 80},
|
ServicePort: intstr.FromInt(80),
|
||||||
}
|
}
|
||||||
|
|
||||||
newValid := func() extensions.Ingress {
|
newValid := func() extensions.Ingress {
|
||||||
@ -943,7 +943,7 @@ func TestValidateIngress(t *testing.T) {
|
|||||||
Spec: extensions.IngressSpec{
|
Spec: extensions.IngressSpec{
|
||||||
Backend: &extensions.IngressBackend{
|
Backend: &extensions.IngressBackend{
|
||||||
ServiceName: "default-backend",
|
ServiceName: "default-backend",
|
||||||
ServicePort: util.IntOrString{Kind: util.IntstrInt, IntVal: 80},
|
ServicePort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
Rules: []extensions.IngressRule{
|
Rules: []extensions.IngressRule{
|
||||||
{
|
{
|
||||||
@ -1030,7 +1030,7 @@ func TestValidateIngress(t *testing.T) {
|
|||||||
func TestValidateIngressStatusUpdate(t *testing.T) {
|
func TestValidateIngressStatusUpdate(t *testing.T) {
|
||||||
defaultBackend := extensions.IngressBackend{
|
defaultBackend := extensions.IngressBackend{
|
||||||
ServiceName: "default-backend",
|
ServiceName: "default-backend",
|
||||||
ServicePort: util.IntOrString{Kind: util.IntstrInt, IntVal: 80},
|
ServicePort: intstr.FromInt(80),
|
||||||
}
|
}
|
||||||
|
|
||||||
newValid := func() extensions.Ingress {
|
newValid := func() extensions.Ingress {
|
||||||
@ -1043,7 +1043,7 @@ func TestValidateIngressStatusUpdate(t *testing.T) {
|
|||||||
Spec: extensions.IngressSpec{
|
Spec: extensions.IngressSpec{
|
||||||
Backend: &extensions.IngressBackend{
|
Backend: &extensions.IngressBackend{
|
||||||
ServiceName: "default-backend",
|
ServiceName: "default-backend",
|
||||||
ServicePort: util.IntOrString{Kind: util.IntstrInt, IntVal: 80},
|
ServicePort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
Rules: []extensions.IngressRule{
|
Rules: []extensions.IngressRule{
|
||||||
{
|
{
|
||||||
|
@ -38,6 +38,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
"k8s.io/kubernetes/pkg/util/httpstream"
|
"k8s.io/kubernetes/pkg/util/httpstream"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
watchjson "k8s.io/kubernetes/pkg/watch/json"
|
watchjson "k8s.io/kubernetes/pkg/watch/json"
|
||||||
)
|
)
|
||||||
@ -697,7 +698,7 @@ func TestDoRequestNewWay(t *testing.T) {
|
|||||||
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
Port: 12345,
|
Port: 12345,
|
||||||
TargetPort: util.NewIntOrStringFromInt(12345),
|
TargetPort: intstr.FromInt(12345),
|
||||||
}}}}
|
}}}}
|
||||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||||
fakeHandler := util.FakeHandler{
|
fakeHandler := util.FakeHandler{
|
||||||
@ -828,7 +829,7 @@ func TestDoRequestNewWayReader(t *testing.T) {
|
|||||||
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
Port: 12345,
|
Port: 12345,
|
||||||
TargetPort: util.NewIntOrStringFromInt(12345),
|
TargetPort: intstr.FromInt(12345),
|
||||||
}}}}
|
}}}}
|
||||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||||
fakeHandler := util.FakeHandler{
|
fakeHandler := util.FakeHandler{
|
||||||
@ -870,7 +871,7 @@ func TestDoRequestNewWayObj(t *testing.T) {
|
|||||||
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
Port: 12345,
|
Port: 12345,
|
||||||
TargetPort: util.NewIntOrStringFromInt(12345),
|
TargetPort: intstr.FromInt(12345),
|
||||||
}}}}
|
}}}}
|
||||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||||
fakeHandler := util.FakeHandler{
|
fakeHandler := util.FakeHandler{
|
||||||
@ -926,7 +927,7 @@ func TestDoRequestNewWayFile(t *testing.T) {
|
|||||||
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
Port: 12345,
|
Port: 12345,
|
||||||
TargetPort: util.NewIntOrStringFromInt(12345),
|
TargetPort: intstr.FromInt(12345),
|
||||||
}}}}
|
}}}}
|
||||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||||
fakeHandler := util.FakeHandler{
|
fakeHandler := util.FakeHandler{
|
||||||
@ -973,7 +974,7 @@ func TestWasCreated(t *testing.T) {
|
|||||||
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
expectedObj := &api.Service{Spec: api.ServiceSpec{Ports: []api.ServicePort{{
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
Port: 12345,
|
Port: 12345,
|
||||||
TargetPort: util.NewIntOrStringFromInt(12345),
|
TargetPort: intstr.FromInt(12345),
|
||||||
}}}}
|
}}}}
|
||||||
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
expectedBody, _ := testapi.Default.Codec().Encode(expectedObj)
|
||||||
fakeHandler := util.FakeHandler{
|
fakeHandler := util.FakeHandler{
|
||||||
|
@ -25,13 +25,13 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
|
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDeploymentController_reconcileNewRC(t *testing.T) {
|
func TestDeploymentController_reconcileNewRC(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
deploymentReplicas int
|
deploymentReplicas int
|
||||||
maxSurge util.IntOrString
|
maxSurge intstr.IntOrString
|
||||||
oldReplicas int
|
oldReplicas int
|
||||||
newReplicas int
|
newReplicas int
|
||||||
scaleExpected bool
|
scaleExpected bool
|
||||||
@ -40,14 +40,14 @@ func TestDeploymentController_reconcileNewRC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
// Should not scale up.
|
// Should not scale up.
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxSurge: util.NewIntOrStringFromInt(0),
|
maxSurge: intstr.FromInt(0),
|
||||||
oldReplicas: 10,
|
oldReplicas: 10,
|
||||||
newReplicas: 0,
|
newReplicas: 0,
|
||||||
scaleExpected: false,
|
scaleExpected: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxSurge: util.NewIntOrStringFromInt(2),
|
maxSurge: intstr.FromInt(2),
|
||||||
oldReplicas: 10,
|
oldReplicas: 10,
|
||||||
newReplicas: 0,
|
newReplicas: 0,
|
||||||
scaleExpected: true,
|
scaleExpected: true,
|
||||||
@ -55,7 +55,7 @@ func TestDeploymentController_reconcileNewRC(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxSurge: util.NewIntOrStringFromInt(2),
|
maxSurge: intstr.FromInt(2),
|
||||||
oldReplicas: 5,
|
oldReplicas: 5,
|
||||||
newReplicas: 0,
|
newReplicas: 0,
|
||||||
scaleExpected: true,
|
scaleExpected: true,
|
||||||
@ -63,7 +63,7 @@ func TestDeploymentController_reconcileNewRC(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxSurge: util.NewIntOrStringFromInt(2),
|
maxSurge: intstr.FromInt(2),
|
||||||
oldReplicas: 10,
|
oldReplicas: 10,
|
||||||
newReplicas: 2,
|
newReplicas: 2,
|
||||||
scaleExpected: false,
|
scaleExpected: false,
|
||||||
@ -71,7 +71,7 @@ func TestDeploymentController_reconcileNewRC(t *testing.T) {
|
|||||||
{
|
{
|
||||||
// Should scale down.
|
// Should scale down.
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxSurge: util.NewIntOrStringFromInt(2),
|
maxSurge: intstr.FromInt(2),
|
||||||
oldReplicas: 2,
|
oldReplicas: 2,
|
||||||
newReplicas: 11,
|
newReplicas: 11,
|
||||||
scaleExpected: true,
|
scaleExpected: true,
|
||||||
@ -84,7 +84,7 @@ func TestDeploymentController_reconcileNewRC(t *testing.T) {
|
|||||||
newRc := rc("foo-v2", test.newReplicas)
|
newRc := rc("foo-v2", test.newReplicas)
|
||||||
oldRc := rc("foo-v2", test.oldReplicas)
|
oldRc := rc("foo-v2", test.oldReplicas)
|
||||||
allRcs := []*api.ReplicationController{newRc, oldRc}
|
allRcs := []*api.ReplicationController{newRc, oldRc}
|
||||||
deployment := deployment("foo", test.deploymentReplicas, test.maxSurge, util.NewIntOrStringFromInt(0))
|
deployment := deployment("foo", test.deploymentReplicas, test.maxSurge, intstr.FromInt(0))
|
||||||
fake := &testclient.Fake{}
|
fake := &testclient.Fake{}
|
||||||
controller := &DeploymentController{
|
controller := &DeploymentController{
|
||||||
client: fake,
|
client: fake,
|
||||||
@ -119,7 +119,7 @@ func TestDeploymentController_reconcileNewRC(t *testing.T) {
|
|||||||
func TestDeploymentController_reconcileOldRCs(t *testing.T) {
|
func TestDeploymentController_reconcileOldRCs(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
deploymentReplicas int
|
deploymentReplicas int
|
||||||
maxUnavailable util.IntOrString
|
maxUnavailable intstr.IntOrString
|
||||||
readyPods int
|
readyPods int
|
||||||
oldReplicas int
|
oldReplicas int
|
||||||
scaleExpected bool
|
scaleExpected bool
|
||||||
@ -127,14 +127,14 @@ func TestDeploymentController_reconcileOldRCs(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxUnavailable: util.NewIntOrStringFromInt(0),
|
maxUnavailable: intstr.FromInt(0),
|
||||||
readyPods: 10,
|
readyPods: 10,
|
||||||
oldReplicas: 10,
|
oldReplicas: 10,
|
||||||
scaleExpected: false,
|
scaleExpected: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxUnavailable: util.NewIntOrStringFromInt(2),
|
maxUnavailable: intstr.FromInt(2),
|
||||||
readyPods: 10,
|
readyPods: 10,
|
||||||
oldReplicas: 10,
|
oldReplicas: 10,
|
||||||
scaleExpected: true,
|
scaleExpected: true,
|
||||||
@ -142,14 +142,14 @@ func TestDeploymentController_reconcileOldRCs(t *testing.T) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxUnavailable: util.NewIntOrStringFromInt(2),
|
maxUnavailable: intstr.FromInt(2),
|
||||||
readyPods: 8,
|
readyPods: 8,
|
||||||
oldReplicas: 10,
|
oldReplicas: 10,
|
||||||
scaleExpected: false,
|
scaleExpected: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
deploymentReplicas: 10,
|
deploymentReplicas: 10,
|
||||||
maxUnavailable: util.NewIntOrStringFromInt(2),
|
maxUnavailable: intstr.FromInt(2),
|
||||||
readyPods: 10,
|
readyPods: 10,
|
||||||
oldReplicas: 0,
|
oldReplicas: 0,
|
||||||
scaleExpected: false,
|
scaleExpected: false,
|
||||||
@ -161,7 +161,7 @@ func TestDeploymentController_reconcileOldRCs(t *testing.T) {
|
|||||||
oldRc := rc("foo-v2", test.oldReplicas)
|
oldRc := rc("foo-v2", test.oldReplicas)
|
||||||
allRcs := []*api.ReplicationController{oldRc}
|
allRcs := []*api.ReplicationController{oldRc}
|
||||||
oldRcs := []*api.ReplicationController{oldRc}
|
oldRcs := []*api.ReplicationController{oldRc}
|
||||||
deployment := deployment("foo", test.deploymentReplicas, util.NewIntOrStringFromInt(0), test.maxUnavailable)
|
deployment := deployment("foo", test.deploymentReplicas, intstr.FromInt(0), test.maxUnavailable)
|
||||||
fake := &testclient.Fake{}
|
fake := &testclient.Fake{}
|
||||||
fake.AddReactor("list", "pods", func(action testclient.Action) (handled bool, ret runtime.Object, err error) {
|
fake.AddReactor("list", "pods", func(action testclient.Action) (handled bool, ret runtime.Object, err error) {
|
||||||
switch action.(type) {
|
switch action.(type) {
|
||||||
@ -241,7 +241,7 @@ func rc(name string, replicas int) *api.ReplicationController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func deployment(name string, replicas int, maxSurge, maxUnavailable util.IntOrString) exp.Deployment {
|
func deployment(name string, replicas int, maxSurge, maxUnavailable intstr.IntOrString) exp.Deployment {
|
||||||
return exp.Deployment{
|
return exp.Deployment{
|
||||||
ObjectMeta: api.ObjectMeta{
|
ObjectMeta: api.ObjectMeta{
|
||||||
Name: name,
|
Name: name,
|
||||||
|
@ -34,6 +34,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
@ -406,8 +407,8 @@ func (e *EndpointController) checkLeftoverEndpoints() {
|
|||||||
// match is found, fail.
|
// match is found, fail.
|
||||||
func findPort(pod *api.Pod, svcPort *api.ServicePort) (int, error) {
|
func findPort(pod *api.Pod, svcPort *api.ServicePort) (int, error) {
|
||||||
portName := svcPort.TargetPort
|
portName := svcPort.TargetPort
|
||||||
switch portName.Kind {
|
switch portName.Type {
|
||||||
case util.IntstrString:
|
case intstr.String:
|
||||||
name := portName.StrVal
|
name := portName.StrVal
|
||||||
for _, container := range pod.Spec.Containers {
|
for _, container := range pod.Spec.Containers {
|
||||||
for _, port := range container.Ports {
|
for _, port := range container.Ports {
|
||||||
@ -416,7 +417,7 @@ func findPort(pod *api.Pod, svcPort *api.ServicePort) (int, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case util.IntstrInt:
|
case intstr.Int:
|
||||||
return portName.IntVal, nil
|
return portName.IntVal, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func addPods(store cache.Store, namespace string, nPods int, nPorts int, nNotReady int) {
|
func addPods(store cache.Store, namespace string, nPods int, nPorts int, nNotReady int) {
|
||||||
@ -71,13 +72,13 @@ func TestFindPort(t *testing.T) {
|
|||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
containers []api.Container
|
containers []api.Container
|
||||||
port util.IntOrString
|
port intstr.IntOrString
|
||||||
expected int
|
expected int
|
||||||
pass bool
|
pass bool
|
||||||
}{{
|
}{{
|
||||||
name: "valid int, no ports",
|
name: "valid int, no ports",
|
||||||
containers: []api.Container{{}},
|
containers: []api.Container{{}},
|
||||||
port: util.NewIntOrStringFromInt(93),
|
port: intstr.FromInt(93),
|
||||||
expected: 93,
|
expected: 93,
|
||||||
pass: true,
|
pass: true,
|
||||||
}, {
|
}, {
|
||||||
@ -91,13 +92,13 @@ func TestFindPort(t *testing.T) {
|
|||||||
ContainerPort: 22,
|
ContainerPort: 22,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
}}}},
|
}}}},
|
||||||
port: util.NewIntOrStringFromInt(93),
|
port: intstr.FromInt(93),
|
||||||
expected: 93,
|
expected: 93,
|
||||||
pass: true,
|
pass: true,
|
||||||
}, {
|
}, {
|
||||||
name: "valid str, no ports",
|
name: "valid str, no ports",
|
||||||
containers: []api.Container{{}},
|
containers: []api.Container{{}},
|
||||||
port: util.NewIntOrStringFromString("p"),
|
port: intstr.FromString("p"),
|
||||||
expected: 0,
|
expected: 0,
|
||||||
pass: false,
|
pass: false,
|
||||||
}, {
|
}, {
|
||||||
@ -115,7 +116,7 @@ func TestFindPort(t *testing.T) {
|
|||||||
ContainerPort: 33,
|
ContainerPort: 33,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
}}}},
|
}}}},
|
||||||
port: util.NewIntOrStringFromString("q"),
|
port: intstr.FromString("q"),
|
||||||
expected: 33,
|
expected: 33,
|
||||||
pass: true,
|
pass: true,
|
||||||
}, {
|
}, {
|
||||||
@ -133,7 +134,7 @@ func TestFindPort(t *testing.T) {
|
|||||||
ContainerPort: 33,
|
ContainerPort: 33,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
}}}},
|
}}}},
|
||||||
port: util.NewIntOrStringFromString("q"),
|
port: intstr.FromString("q"),
|
||||||
expected: 33,
|
expected: 33,
|
||||||
pass: true,
|
pass: true,
|
||||||
}}
|
}}
|
||||||
@ -308,7 +309,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAll(t *testing.T) {
|
|||||||
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
|
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Selector: map[string]string{},
|
Selector: map[string]string{},
|
||||||
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)}},
|
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: intstr.FromInt(8080)}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
endpoints.syncService(ns + "/foo")
|
endpoints.syncService(ns + "/foo")
|
||||||
@ -345,7 +346,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAllNotReady(t *testing.T) {
|
|||||||
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
|
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Selector: map[string]string{},
|
Selector: map[string]string{},
|
||||||
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)}},
|
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: intstr.FromInt(8080)}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
endpoints.syncService(ns + "/foo")
|
endpoints.syncService(ns + "/foo")
|
||||||
@ -382,7 +383,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAllMixed(t *testing.T) {
|
|||||||
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
|
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Selector: map[string]string{},
|
Selector: map[string]string{},
|
||||||
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)}},
|
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: intstr.FromInt(8080)}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
endpoints.syncService(ns + "/foo")
|
endpoints.syncService(ns + "/foo")
|
||||||
@ -423,7 +424,7 @@ func TestSyncEndpointsItemsPreexisting(t *testing.T) {
|
|||||||
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
|
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Selector: map[string]string{"foo": "bar"},
|
Selector: map[string]string{"foo": "bar"},
|
||||||
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)}},
|
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: intstr.FromInt(8080)}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
endpoints.syncService(ns + "/foo")
|
endpoints.syncService(ns + "/foo")
|
||||||
@ -463,7 +464,7 @@ func TestSyncEndpointsItemsPreexistingIdentical(t *testing.T) {
|
|||||||
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: api.NamespaceDefault},
|
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: api.NamespaceDefault},
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Selector: map[string]string{"foo": "bar"},
|
Selector: map[string]string{"foo": "bar"},
|
||||||
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)}},
|
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: intstr.FromInt(8080)}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
endpoints.syncService(ns + "/foo")
|
endpoints.syncService(ns + "/foo")
|
||||||
@ -484,8 +485,8 @@ func TestSyncEndpointsItems(t *testing.T) {
|
|||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Selector: map[string]string{"foo": "bar"},
|
Selector: map[string]string{"foo": "bar"},
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "port0", Port: 80, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "port0", Port: 80, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
{Name: "port1", Port: 88, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8088)},
|
{Name: "port1", Port: 88, Protocol: "TCP", TargetPort: intstr.FromInt(8088)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -530,8 +531,8 @@ func TestSyncEndpointsItemsWithLabels(t *testing.T) {
|
|||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Selector: map[string]string{"foo": "bar"},
|
Selector: map[string]string{"foo": "bar"},
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "port0", Port: 80, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "port0", Port: 80, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
{Name: "port1", Port: 88, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8088)},
|
{Name: "port1", Port: 88, Protocol: "TCP", TargetPort: intstr.FromInt(8088)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -589,7 +590,7 @@ func TestSyncEndpointsItemsPreexistingLabelsChange(t *testing.T) {
|
|||||||
},
|
},
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Selector: map[string]string{"foo": "bar"},
|
Selector: map[string]string{"foo": "bar"},
|
||||||
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)}},
|
Ports: []api.ServicePort{{Port: 80, Protocol: "TCP", TargetPort: intstr.FromInt(8080)}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
endpoints.syncService(ns + "/foo")
|
endpoints.syncService(ns + "/foo")
|
||||||
|
@ -40,6 +40,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
type internalType struct {
|
type internalType struct {
|
||||||
@ -671,12 +672,12 @@ func (testServiceGenerator) Generate(genericParams map[string]interface{}) (runt
|
|||||||
}
|
}
|
||||||
if found && len(targetPort) > 0 {
|
if found && len(targetPort) > 0 {
|
||||||
if portNum, err := strconv.Atoi(targetPort); err != nil {
|
if portNum, err := strconv.Atoi(targetPort); err != nil {
|
||||||
service.Spec.Ports[0].TargetPort = util.NewIntOrStringFromString(targetPort)
|
service.Spec.Ports[0].TargetPort = intstr.FromString(targetPort)
|
||||||
} else {
|
} else {
|
||||||
service.Spec.Ports[0].TargetPort = util.NewIntOrStringFromInt(portNum)
|
service.Spec.Ports[0].TargetPort = intstr.FromInt(portNum)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
service.Spec.Ports[0].TargetPort = util.NewIntOrStringFromInt(port)
|
service.Spec.Ports[0].TargetPort = intstr.FromInt(port)
|
||||||
}
|
}
|
||||||
if params["create-external-load-balancer"] == "true" {
|
if params["create-external-load-balancer"] == "true" {
|
||||||
service.Spec.Type = api.ServiceTypeLoadBalancer
|
service.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/unversioned/fake"
|
"k8s.io/kubernetes/pkg/client/unversioned/fake"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRunExposeService(t *testing.T) {
|
func TestRunExposeService(t *testing.T) {
|
||||||
@ -63,7 +63,7 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolUDP,
|
Protocol: api.ProtocolUDP,
|
||||||
Port: 14,
|
Port: 14,
|
||||||
TargetPort: util.NewIntOrStringFromInt(14),
|
TargetPort: intstr.FromInt(14),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{"app": "go"},
|
Selector: map[string]string{"app": "go"},
|
||||||
@ -94,7 +94,7 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolUDP,
|
Protocol: api.ProtocolUDP,
|
||||||
Port: 14,
|
Port: 14,
|
||||||
TargetPort: util.NewIntOrStringFromInt(14),
|
TargetPort: intstr.FromInt(14),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{"func": "stream"},
|
Selector: map[string]string{"func": "stream"},
|
||||||
@ -126,7 +126,7 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
Port: 80,
|
Port: 80,
|
||||||
TargetPort: util.NewIntOrStringFromInt(80),
|
TargetPort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{"run": "this"},
|
Selector: map[string]string{"run": "this"},
|
||||||
@ -157,7 +157,7 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolUDP,
|
Protocol: api.ProtocolUDP,
|
||||||
Port: 14,
|
Port: 14,
|
||||||
TargetPort: util.NewIntOrStringFromInt(14),
|
TargetPort: intstr.FromInt(14),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{"func": "stream"},
|
Selector: map[string]string{"func": "stream"},
|
||||||
@ -188,7 +188,7 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolUDP,
|
Protocol: api.ProtocolUDP,
|
||||||
Port: 14,
|
Port: 14,
|
||||||
TargetPort: util.NewIntOrStringFromInt(14),
|
TargetPort: intstr.FromInt(14),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{"func": "stream"},
|
Selector: map[string]string{"func": "stream"},
|
||||||
@ -221,7 +221,7 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
Port: 90,
|
Port: 90,
|
||||||
TargetPort: util.NewIntOrStringFromInt(90),
|
TargetPort: intstr.FromInt(90),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -250,7 +250,7 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolUDP,
|
Protocol: api.ProtocolUDP,
|
||||||
Port: 14,
|
Port: 14,
|
||||||
TargetPort: util.NewIntOrStringFromInt(14),
|
TargetPort: intstr.FromInt(14),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{"func": "stream"},
|
Selector: map[string]string{"func": "stream"},
|
||||||
@ -277,7 +277,7 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
Port: 90,
|
Port: 90,
|
||||||
TargetPort: util.NewIntOrStringFromInt(90),
|
TargetPort: intstr.FromInt(90),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{"svc": "frompod"},
|
Selector: map[string]string{"svc": "frompod"},
|
||||||
@ -301,12 +301,12 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
Port: 80,
|
Port: 80,
|
||||||
TargetPort: util.NewIntOrStringFromInt(80),
|
TargetPort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
Port: 443,
|
Port: 443,
|
||||||
TargetPort: util.NewIntOrStringFromInt(443),
|
TargetPort: intstr.FromInt(443),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -320,13 +320,13 @@ func TestRunExposeService(t *testing.T) {
|
|||||||
Name: "port-1",
|
Name: "port-1",
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
Port: 80,
|
Port: 80,
|
||||||
TargetPort: util.NewIntOrStringFromInt(80),
|
TargetPort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "port-2",
|
Name: "port-2",
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
Port: 443,
|
Port: 443,
|
||||||
TargetPort: util.NewIntOrStringFromInt(443),
|
TargetPort: intstr.FromInt(443),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{"svc": "fromfoo"},
|
Selector: map[string]string{"svc": "fromfoo"},
|
||||||
|
@ -33,7 +33,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RollingUpdateOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
|
// RollingUpdateOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
|
||||||
@ -329,8 +329,8 @@ func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, arg
|
|||||||
Interval: interval,
|
Interval: interval,
|
||||||
Timeout: timeout,
|
Timeout: timeout,
|
||||||
CleanupPolicy: updateCleanupPolicy,
|
CleanupPolicy: updateCleanupPolicy,
|
||||||
MaxUnavailable: util.NewIntOrStringFromInt(0),
|
MaxUnavailable: intstr.FromInt(0),
|
||||||
MaxSurge: util.NewIntOrStringFromInt(1),
|
MaxSurge: intstr.FromInt(1),
|
||||||
}
|
}
|
||||||
if rollback {
|
if rollback {
|
||||||
err = kubectl.AbortRollingUpdate(config)
|
err = kubectl.AbortRollingUpdate(config)
|
||||||
|
@ -30,7 +30,7 @@ import (
|
|||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/fake"
|
"k8s.io/kubernetes/pkg/client/unversioned/fake"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetRestartPolicy(t *testing.T) {
|
func TestGetRestartPolicy(t *testing.T) {
|
||||||
@ -136,7 +136,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
TargetPort: util.NewIntOrStringFromInt(80),
|
TargetPort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
@ -168,7 +168,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
TargetPort: util.NewIntOrStringFromInt(80),
|
TargetPort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
|
@ -30,7 +30,7 @@ import (
|
|||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ type RollingUpdaterConfig struct {
|
|||||||
// can be scaled down further, followed by scaling up the new RC, ensuring
|
// can be scaled down further, followed by scaling up the new RC, ensuring
|
||||||
// that the total number of pods available at all times during the update is at
|
// that the total number of pods available at all times during the update is at
|
||||||
// least 70% of desired pods.
|
// least 70% of desired pods.
|
||||||
MaxUnavailable util.IntOrString
|
MaxUnavailable intstr.IntOrString
|
||||||
// MaxSurge is the maximum number of pods that can be scheduled above the desired number of pods.
|
// MaxSurge is the maximum number of pods that can be scheduled above the desired number of pods.
|
||||||
// Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
|
// Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
|
||||||
// This can not be 0 if MaxUnavailable is 0.
|
// This can not be 0 if MaxUnavailable is 0.
|
||||||
@ -81,7 +81,7 @@ type RollingUpdaterConfig struct {
|
|||||||
// 130% of desired pods. Once old pods have been killed, new RC can be scaled up
|
// 130% of desired pods. Once old pods have been killed, new RC can be scaled up
|
||||||
// further, ensuring that total number of pods running at any time during
|
// further, ensuring that total number of pods running at any time during
|
||||||
// the update is atmost 130% of desired pods.
|
// the update is atmost 130% of desired pods.
|
||||||
MaxSurge util.IntOrString
|
MaxSurge intstr.IntOrString
|
||||||
}
|
}
|
||||||
|
|
||||||
// RollingUpdaterCleanupPolicy is a cleanup action to take after the
|
// RollingUpdaterCleanupPolicy is a cleanup action to take after the
|
||||||
@ -483,14 +483,14 @@ func (r *RollingUpdater) cleanupWithClients(oldRc, newRc *api.ReplicationControl
|
|||||||
|
|
||||||
// func extractMaxValue is a helper to extract config max values as either
|
// func extractMaxValue is a helper to extract config max values as either
|
||||||
// absolute numbers or based on percentages of the given value.
|
// absolute numbers or based on percentages of the given value.
|
||||||
func extractMaxValue(field util.IntOrString, name string, value int) (int, error) {
|
func extractMaxValue(field intstr.IntOrString, name string, value int) (int, error) {
|
||||||
switch field.Kind {
|
switch field.Type {
|
||||||
case util.IntstrInt:
|
case intstr.Int:
|
||||||
if field.IntVal < 0 {
|
if field.IntVal < 0 {
|
||||||
return 0, fmt.Errorf("%s must be >= 0", name)
|
return 0, fmt.Errorf("%s must be >= 0", name)
|
||||||
}
|
}
|
||||||
return field.IntVal, nil
|
return field.IntVal, nil
|
||||||
case util.IntstrString:
|
case intstr.String:
|
||||||
s := strings.Replace(field.StrVal, "%", "", -1)
|
s := strings.Replace(field.StrVal, "%", "", -1)
|
||||||
v, err := strconv.Atoi(s)
|
v, err := strconv.Atoi(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -501,7 +501,7 @@ func extractMaxValue(field util.IntOrString, name string, value int) (int, error
|
|||||||
}
|
}
|
||||||
return int(math.Ceil(float64(value) * (float64(v)) / 100)), nil
|
return int(math.Ceil(float64(value) * (float64(v)) / 100)), nil
|
||||||
}
|
}
|
||||||
return 0, fmt.Errorf("invalid kind %q for %s", field.Kind, name)
|
return 0, fmt.Errorf("invalid kind %q for %s", field.Type, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Rename(c client.ReplicationControllersNamespacer, rc *api.ReplicationController, newName string) error {
|
func Rename(c client.ReplicationControllersNamespacer, rc *api.ReplicationController, newName string) error {
|
||||||
|
@ -33,7 +33,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/unversioned/fake"
|
"k8s.io/kubernetes/pkg/client/unversioned/fake"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
|
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -114,8 +114,8 @@ func TestUpdate(t *testing.T) {
|
|||||||
newRc *api.ReplicationController
|
newRc *api.ReplicationController
|
||||||
// whether newRc existed (false means it was created)
|
// whether newRc existed (false means it was created)
|
||||||
newRcExists bool
|
newRcExists bool
|
||||||
maxUnavail util.IntOrString
|
maxUnavail intstr.IntOrString
|
||||||
maxSurge util.IntOrString
|
maxSurge intstr.IntOrString
|
||||||
// expected is the sequence of up/down events that will be simulated and
|
// expected is the sequence of up/down events that will be simulated and
|
||||||
// verified
|
// verified
|
||||||
expected []interface{}
|
expected []interface{}
|
||||||
@ -127,8 +127,8 @@ func TestUpdate(t *testing.T) {
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("30%"),
|
maxUnavail: intstr.FromString("30%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("0%"),
|
maxSurge: intstr.FromString("0%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
down{oldReady: 10, newReady: 0, to: 7},
|
down{oldReady: 10, newReady: 0, to: 7},
|
||||||
up{3},
|
up{3},
|
||||||
@ -156,8 +156,8 @@ Scaling foo-v2 up to 10
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("30%"),
|
maxUnavail: intstr.FromString("30%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("0%"),
|
maxSurge: intstr.FromString("0%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
down{oldReady: 10, newReady: 0, to: 7},
|
down{oldReady: 10, newReady: 0, to: 7},
|
||||||
up{3},
|
up{3},
|
||||||
@ -185,8 +185,8 @@ Scaling foo-v2 up to 10
|
|||||||
oldRc: oldRc(7, 10),
|
oldRc: oldRc(7, 10),
|
||||||
newRc: newRc(3, 10),
|
newRc: newRc(3, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("30%"),
|
maxUnavail: intstr.FromString("30%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("0%"),
|
maxSurge: intstr.FromString("0%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
down{oldReady: 7, newReady: 3, to: 4},
|
down{oldReady: 7, newReady: 3, to: 4},
|
||||||
up{6},
|
up{6},
|
||||||
@ -209,8 +209,8 @@ Scaling foo-v2 up to 10
|
|||||||
oldRc: oldRc(7, 10),
|
oldRc: oldRc(7, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("30%"),
|
maxUnavail: intstr.FromString("30%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("0%"),
|
maxSurge: intstr.FromString("0%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
down{oldReady: 7, newReady: 0, noop: true},
|
down{oldReady: 7, newReady: 0, noop: true},
|
||||||
up{3},
|
up{3},
|
||||||
@ -236,8 +236,8 @@ Scaling foo-v2 up to 10
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("0%"),
|
maxUnavail: intstr.FromString("0%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("30%"),
|
maxSurge: intstr.FromString("30%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{3},
|
up{3},
|
||||||
down{oldReady: 10, newReady: 3, to: 7},
|
down{oldReady: 10, newReady: 3, to: 7},
|
||||||
@ -264,8 +264,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("0%"),
|
maxUnavail: intstr.FromString("0%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("30%"),
|
maxSurge: intstr.FromString("30%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{3},
|
up{3},
|
||||||
down{oldReady: 10, newReady: 0, noop: true},
|
down{oldReady: 10, newReady: 0, noop: true},
|
||||||
@ -298,8 +298,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("10%"),
|
maxUnavail: intstr.FromString("10%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("20%"),
|
maxSurge: intstr.FromString("20%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{2},
|
up{2},
|
||||||
down{oldReady: 10, newReady: 2, to: 7},
|
down{oldReady: 10, newReady: 2, to: 7},
|
||||||
@ -326,8 +326,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("10%"),
|
maxUnavail: intstr.FromString("10%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("20%"),
|
maxSurge: intstr.FromString("20%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{2},
|
up{2},
|
||||||
down{oldReady: 10, newReady: 2, to: 7},
|
down{oldReady: 10, newReady: 2, to: 7},
|
||||||
@ -355,8 +355,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(2, 10),
|
newRc: newRc(2, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("10%"),
|
maxUnavail: intstr.FromString("10%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("20%"),
|
maxSurge: intstr.FromString("20%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
down{oldReady: 10, newReady: 2, to: 7},
|
down{oldReady: 10, newReady: 2, to: 7},
|
||||||
up{5},
|
up{5},
|
||||||
@ -381,8 +381,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("0%"),
|
maxUnavail: intstr.FromString("0%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("100%"),
|
maxSurge: intstr.FromString("100%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{10},
|
up{10},
|
||||||
down{oldReady: 10, newReady: 10, to: 0},
|
down{oldReady: 10, newReady: 10, to: 0},
|
||||||
@ -397,8 +397,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("0%"),
|
maxUnavail: intstr.FromString("0%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("100%"),
|
maxSurge: intstr.FromString("100%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{10},
|
up{10},
|
||||||
down{oldReady: 10, newReady: 0, noop: true},
|
down{oldReady: 10, newReady: 0, noop: true},
|
||||||
@ -418,8 +418,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 10),
|
newRc: newRc(0, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("100%"),
|
maxUnavail: intstr.FromString("100%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("0%"),
|
maxSurge: intstr.FromString("0%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
down{oldReady: 10, newReady: 0, to: 0},
|
down{oldReady: 10, newReady: 0, to: 0},
|
||||||
up{10},
|
up{10},
|
||||||
@ -434,8 +434,8 @@ Scaling foo-v2 up to 10
|
|||||||
oldRc: oldRc(1, 1),
|
oldRc: oldRc(1, 1),
|
||||||
newRc: newRc(0, 1),
|
newRc: newRc(0, 1),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("10%"),
|
maxUnavail: intstr.FromString("10%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("0%"),
|
maxSurge: intstr.FromString("0%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
down{oldReady: 1, newReady: 0, to: 0},
|
down{oldReady: 1, newReady: 0, to: 0},
|
||||||
up{1},
|
up{1},
|
||||||
@ -450,8 +450,8 @@ Scaling foo-v2 up to 1
|
|||||||
oldRc: oldRc(1, 1),
|
oldRc: oldRc(1, 1),
|
||||||
newRc: newRc(0, 1),
|
newRc: newRc(0, 1),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("0%"),
|
maxUnavail: intstr.FromString("0%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("10%"),
|
maxSurge: intstr.FromString("10%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{1},
|
up{1},
|
||||||
down{oldReady: 1, newReady: 0, noop: true},
|
down{oldReady: 1, newReady: 0, noop: true},
|
||||||
@ -467,8 +467,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(1, 1),
|
oldRc: oldRc(1, 1),
|
||||||
newRc: newRc(0, 1),
|
newRc: newRc(0, 1),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("10%"),
|
maxUnavail: intstr.FromString("10%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("10%"),
|
maxSurge: intstr.FromString("10%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{1},
|
up{1},
|
||||||
down{oldReady: 1, newReady: 0, noop: true},
|
down{oldReady: 1, newReady: 0, noop: true},
|
||||||
@ -484,8 +484,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(3, 3),
|
oldRc: oldRc(3, 3),
|
||||||
newRc: newRc(0, 3),
|
newRc: newRc(0, 3),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromInt(0),
|
maxUnavail: intstr.FromInt(0),
|
||||||
maxSurge: util.NewIntOrStringFromInt(1),
|
maxSurge: intstr.FromInt(1),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{1},
|
up{1},
|
||||||
down{oldReady: 3, newReady: 1, to: 2},
|
down{oldReady: 3, newReady: 1, to: 2},
|
||||||
@ -508,8 +508,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(6, 10),
|
oldRc: oldRc(6, 10),
|
||||||
newRc: newRc(5, 10),
|
newRc: newRc(5, 10),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("0%"),
|
maxUnavail: intstr.FromString("0%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("20%"),
|
maxSurge: intstr.FromString("20%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{6},
|
up{6},
|
||||||
down{oldReady: 6, newReady: 6, to: 4},
|
down{oldReady: 6, newReady: 6, to: 4},
|
||||||
@ -532,8 +532,8 @@ Scaling foo-v1 down to 0
|
|||||||
oldRc: oldRc(10, 10),
|
oldRc: oldRc(10, 10),
|
||||||
newRc: newRc(0, 20),
|
newRc: newRc(0, 20),
|
||||||
newRcExists: false,
|
newRcExists: false,
|
||||||
maxUnavail: util.NewIntOrStringFromString("0%"),
|
maxUnavail: intstr.FromString("0%"),
|
||||||
maxSurge: util.NewIntOrStringFromString("300%"),
|
maxSurge: intstr.FromString("300%"),
|
||||||
expected: []interface{}{
|
expected: []interface{}{
|
||||||
up{20},
|
up{20},
|
||||||
down{oldReady: 10, newReady: 20, to: 0},
|
down{oldReady: 10, newReady: 20, to: 0},
|
||||||
@ -680,8 +680,8 @@ func TestUpdate_progressTimeout(t *testing.T) {
|
|||||||
Interval: time.Millisecond,
|
Interval: time.Millisecond,
|
||||||
Timeout: time.Millisecond,
|
Timeout: time.Millisecond,
|
||||||
CleanupPolicy: DeleteRollingUpdateCleanupPolicy,
|
CleanupPolicy: DeleteRollingUpdateCleanupPolicy,
|
||||||
MaxUnavailable: util.NewIntOrStringFromInt(0),
|
MaxUnavailable: intstr.FromInt(0),
|
||||||
MaxSurge: util.NewIntOrStringFromInt(1),
|
MaxSurge: intstr.FromInt(1),
|
||||||
}
|
}
|
||||||
err := updater.Update(config)
|
err := updater.Update(config)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@ -733,7 +733,7 @@ func TestUpdate_assignOriginalAnnotation(t *testing.T) {
|
|||||||
Interval: time.Millisecond,
|
Interval: time.Millisecond,
|
||||||
Timeout: time.Millisecond,
|
Timeout: time.Millisecond,
|
||||||
CleanupPolicy: DeleteRollingUpdateCleanupPolicy,
|
CleanupPolicy: DeleteRollingUpdateCleanupPolicy,
|
||||||
MaxUnavailable: util.NewIntOrStringFromString("100%"),
|
MaxUnavailable: intstr.FromString("100%"),
|
||||||
}
|
}
|
||||||
err := updater.Update(config)
|
err := updater.Update(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -1301,54 +1301,54 @@ func TestRollingUpdater_pollForReadyPods(t *testing.T) {
|
|||||||
|
|
||||||
func TestRollingUpdater_extractMaxValue(t *testing.T) {
|
func TestRollingUpdater_extractMaxValue(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
field util.IntOrString
|
field intstr.IntOrString
|
||||||
original int
|
original int
|
||||||
expected int
|
expected int
|
||||||
valid bool
|
valid bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
field: util.NewIntOrStringFromInt(1),
|
field: intstr.FromInt(1),
|
||||||
original: 100,
|
original: 100,
|
||||||
expected: 1,
|
expected: 1,
|
||||||
valid: true,
|
valid: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: util.NewIntOrStringFromInt(0),
|
field: intstr.FromInt(0),
|
||||||
original: 100,
|
original: 100,
|
||||||
expected: 0,
|
expected: 0,
|
||||||
valid: true,
|
valid: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: util.NewIntOrStringFromInt(-1),
|
field: intstr.FromInt(-1),
|
||||||
original: 100,
|
original: 100,
|
||||||
valid: false,
|
valid: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: util.NewIntOrStringFromString("10%"),
|
field: intstr.FromString("10%"),
|
||||||
original: 100,
|
original: 100,
|
||||||
expected: 10,
|
expected: 10,
|
||||||
valid: true,
|
valid: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: util.NewIntOrStringFromString("100%"),
|
field: intstr.FromString("100%"),
|
||||||
original: 100,
|
original: 100,
|
||||||
expected: 100,
|
expected: 100,
|
||||||
valid: true,
|
valid: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: util.NewIntOrStringFromString("200%"),
|
field: intstr.FromString("200%"),
|
||||||
original: 100,
|
original: 100,
|
||||||
expected: 200,
|
expected: 200,
|
||||||
valid: true,
|
valid: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: util.NewIntOrStringFromString("0%"),
|
field: intstr.FromString("0%"),
|
||||||
original: 100,
|
original: 100,
|
||||||
expected: 0,
|
expected: 0,
|
||||||
valid: true,
|
valid: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: util.NewIntOrStringFromString("-1%"),
|
field: intstr.FromString("-1%"),
|
||||||
original: 100,
|
original: 100,
|
||||||
valid: false,
|
valid: false,
|
||||||
},
|
},
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
// The only difference between ServiceGeneratorV1 and V2 is that the service port is named "default" in V1, while it is left unnamed in V2.
|
// The only difference between ServiceGeneratorV1 and V2 is that the service port is named "default" in V1, while it is left unnamed in V2.
|
||||||
@ -156,11 +156,11 @@ func generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
|||||||
targetPortString, found = params["container-port"]
|
targetPortString, found = params["container-port"]
|
||||||
}
|
}
|
||||||
if found && len(targetPortString) > 0 {
|
if found && len(targetPortString) > 0 {
|
||||||
var targetPort util.IntOrString
|
var targetPort intstr.IntOrString
|
||||||
if portNum, err := strconv.Atoi(targetPortString); err != nil {
|
if portNum, err := strconv.Atoi(targetPortString); err != nil {
|
||||||
targetPort = util.NewIntOrStringFromString(targetPortString)
|
targetPort = intstr.FromString(targetPortString)
|
||||||
} else {
|
} else {
|
||||||
targetPort = util.NewIntOrStringFromInt(portNum)
|
targetPort = intstr.FromInt(portNum)
|
||||||
}
|
}
|
||||||
// Use the same target-port for every port
|
// Use the same target-port for every port
|
||||||
for i := range service.Spec.Ports {
|
for i := range service.Spec.Ports {
|
||||||
@ -171,7 +171,7 @@ func generate(genericParams map[string]interface{}) (runtime.Object, error) {
|
|||||||
// should be the same as Port
|
// should be the same as Port
|
||||||
for i := range service.Spec.Ports {
|
for i := range service.Spec.Ports {
|
||||||
port := service.Spec.Ports[i].Port
|
port := service.Spec.Ports[i].Port
|
||||||
service.Spec.Ports[i].TargetPort = util.NewIntOrStringFromInt(port)
|
service.Spec.Ports[i].TargetPort = intstr.FromInt(port)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if params["create-external-load-balancer"] == "true" {
|
if params["create-external-load-balancer"] == "true" {
|
||||||
|
@ -21,7 +21,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGenerateService(t *testing.T) {
|
func TestGenerateService(t *testing.T) {
|
||||||
@ -52,7 +52,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
TargetPort: util.NewIntOrStringFromInt(1234),
|
TargetPort: intstr.FromInt(1234),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -81,7 +81,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "UDP",
|
Protocol: "UDP",
|
||||||
TargetPort: util.NewIntOrStringFromString("foobar"),
|
TargetPort: intstr.FromString("foobar"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -114,7 +114,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
TargetPort: util.NewIntOrStringFromInt(1234),
|
TargetPort: intstr.FromInt(1234),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -143,7 +143,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "UDP",
|
Protocol: "UDP",
|
||||||
TargetPort: util.NewIntOrStringFromString("foobar"),
|
TargetPort: intstr.FromString("foobar"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
ExternalIPs: []string{"1.2.3.4"},
|
ExternalIPs: []string{"1.2.3.4"},
|
||||||
@ -174,7 +174,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "UDP",
|
Protocol: "UDP",
|
||||||
TargetPort: util.NewIntOrStringFromString("foobar"),
|
TargetPort: intstr.FromString("foobar"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Type: api.ServiceTypeLoadBalancer,
|
Type: api.ServiceTypeLoadBalancer,
|
||||||
@ -205,7 +205,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "UDP",
|
Protocol: "UDP",
|
||||||
TargetPort: util.NewIntOrStringFromString("foobar"),
|
TargetPort: intstr.FromString("foobar"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Type: api.ServiceTypeNodePort,
|
Type: api.ServiceTypeNodePort,
|
||||||
@ -236,7 +236,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
{
|
{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "UDP",
|
Protocol: "UDP",
|
||||||
TargetPort: util.NewIntOrStringFromString("foobar"),
|
TargetPort: intstr.FromString("foobar"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Type: api.ServiceTypeNodePort,
|
Type: api.ServiceTypeNodePort,
|
||||||
@ -266,7 +266,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
Name: "default",
|
Name: "default",
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
TargetPort: util.NewIntOrStringFromInt(1234),
|
TargetPort: intstr.FromInt(1234),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -296,7 +296,7 @@ func TestGenerateService(t *testing.T) {
|
|||||||
Name: "default",
|
Name: "default",
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
TargetPort: util.NewIntOrStringFromInt(1234),
|
TargetPort: intstr.FromInt(1234),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
SessionAffinity: api.ServiceAffinityClientIP,
|
SessionAffinity: api.ServiceAffinityClientIP,
|
||||||
@ -325,13 +325,13 @@ func TestGenerateService(t *testing.T) {
|
|||||||
Name: "port-1",
|
Name: "port-1",
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromString("foobar"),
|
TargetPort: intstr.FromString("foobar"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "port-2",
|
Name: "port-2",
|
||||||
Port: 443,
|
Port: 443,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromString("foobar"),
|
TargetPort: intstr.FromString("foobar"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -359,13 +359,13 @@ func TestGenerateService(t *testing.T) {
|
|||||||
Name: "port-1",
|
Name: "port-1",
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: api.ProtocolUDP,
|
Protocol: api.ProtocolUDP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(1234),
|
TargetPort: intstr.FromInt(1234),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "port-2",
|
Name: "port-2",
|
||||||
Port: 443,
|
Port: 443,
|
||||||
Protocol: api.ProtocolUDP,
|
Protocol: api.ProtocolUDP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(1234),
|
TargetPort: intstr.FromInt(1234),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -392,13 +392,13 @@ func TestGenerateService(t *testing.T) {
|
|||||||
Name: "port-1",
|
Name: "port-1",
|
||||||
Port: 80,
|
Port: 80,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(80),
|
TargetPort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "port-2",
|
Name: "port-2",
|
||||||
Port: 443,
|
Port: 443,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(443),
|
TargetPort: intstr.FromInt(443),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -43,6 +43,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
uexec "k8s.io/kubernetes/pkg/util/exec"
|
uexec "k8s.io/kubernetes/pkg/util/exec"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1468,7 +1469,7 @@ func TestSyncPodWithPodInfraCreatesContainerCallsHandler(t *testing.T) {
|
|||||||
PostStart: &api.Handler{
|
PostStart: &api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Host: "foo",
|
Host: "foo",
|
||||||
Port: util.IntOrString{IntVal: 8080, Kind: util.IntstrInt},
|
Port: intstr.FromInt(8080),
|
||||||
Path: "bar",
|
Path: "bar",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1519,7 +1520,7 @@ func TestSyncPodEventHandlerFails(t *testing.T) {
|
|||||||
PostStart: &api.Handler{
|
PostStart: &api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Host: "does.no.exist",
|
Host: "does.no.exist",
|
||||||
Port: util.IntOrString{IntVal: 8080, Kind: util.IntstrInt},
|
Port: intstr.FromInt(8080),
|
||||||
Path: "bar",
|
Path: "bar",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -25,7 +25,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
type HandlerRunner struct {
|
type HandlerRunner struct {
|
||||||
@ -66,8 +66,8 @@ func (hr *HandlerRunner) Run(containerID kubecontainer.ContainerID, pod *api.Pod
|
|||||||
// an attempt is made to find a port with the same name in the container spec.
|
// an attempt is made to find a port with the same name in the container spec.
|
||||||
// If a port with the same name is found, it's ContainerPort value is returned. If no matching
|
// If a port with the same name is found, it's ContainerPort value is returned. If no matching
|
||||||
// port is found, an error is returned.
|
// port is found, an error is returned.
|
||||||
func resolvePort(portReference util.IntOrString, container *api.Container) (int, error) {
|
func resolvePort(portReference intstr.IntOrString, container *api.Container) (int, error) {
|
||||||
if portReference.Kind == util.IntstrInt {
|
if portReference.Type == intstr.Int {
|
||||||
return portReference.IntVal, nil
|
return portReference.IntVal, nil
|
||||||
} else {
|
} else {
|
||||||
portName := portReference.StrVal
|
portName := portReference.StrVal
|
||||||
@ -99,7 +99,7 @@ func (hr *HandlerRunner) runHTTPHandler(pod *api.Pod, container *api.Container,
|
|||||||
host = status.PodIP
|
host = status.PodIP
|
||||||
}
|
}
|
||||||
var port int
|
var port int
|
||||||
if handler.HTTPGet.Port.Kind == util.IntstrString && len(handler.HTTPGet.Port.StrVal) == 0 {
|
if handler.HTTPGet.Port.Type == intstr.String && len(handler.HTTPGet.Port.StrVal) == 0 {
|
||||||
port = 80
|
port = 80
|
||||||
} else {
|
} else {
|
||||||
var err error
|
var err error
|
||||||
|
@ -24,12 +24,12 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestResolvePortInt(t *testing.T) {
|
func TestResolvePortInt(t *testing.T) {
|
||||||
expected := 80
|
expected := 80
|
||||||
port, err := resolvePort(util.IntOrString{Kind: util.IntstrInt, IntVal: expected}, &api.Container{})
|
port, err := resolvePort(intstr.FromInt(expected), &api.Container{})
|
||||||
if port != expected {
|
if port != expected {
|
||||||
t.Errorf("expected: %d, saw: %d", expected, port)
|
t.Errorf("expected: %d, saw: %d", expected, port)
|
||||||
}
|
}
|
||||||
@ -46,7 +46,7 @@ func TestResolvePortString(t *testing.T) {
|
|||||||
{Name: name, ContainerPort: expected},
|
{Name: name, ContainerPort: expected},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
port, err := resolvePort(util.IntOrString{Kind: util.IntstrString, StrVal: name}, container)
|
port, err := resolvePort(intstr.FromString(name), container)
|
||||||
if port != expected {
|
if port != expected {
|
||||||
t.Errorf("expected: %d, saw: %d", expected, port)
|
t.Errorf("expected: %d, saw: %d", expected, port)
|
||||||
}
|
}
|
||||||
@ -63,7 +63,7 @@ func TestResolvePortStringUnknown(t *testing.T) {
|
|||||||
{Name: "bar", ContainerPort: expected},
|
{Name: "bar", ContainerPort: expected},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
port, err := resolvePort(util.IntOrString{Kind: util.IntstrString, StrVal: name}, container)
|
port, err := resolvePort(intstr.FromString(name), container)
|
||||||
if port != -1 {
|
if port != -1 {
|
||||||
t.Errorf("expected: -1, saw: %d", port)
|
t.Errorf("expected: -1, saw: %d", port)
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ func TestRunHandlerHttp(t *testing.T) {
|
|||||||
PostStart: &api.Handler{
|
PostStart: &api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Host: "foo",
|
Host: "foo",
|
||||||
Port: util.IntOrString{IntVal: 8080, Kind: util.IntstrInt},
|
Port: intstr.FromInt(8080),
|
||||||
Path: "bar",
|
Path: "bar",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -32,8 +32,8 @@ import (
|
|||||||
execprobe "k8s.io/kubernetes/pkg/probe/exec"
|
execprobe "k8s.io/kubernetes/pkg/probe/exec"
|
||||||
httprobe "k8s.io/kubernetes/pkg/probe/http"
|
httprobe "k8s.io/kubernetes/pkg/probe/http"
|
||||||
tcprobe "k8s.io/kubernetes/pkg/probe/tcp"
|
tcprobe "k8s.io/kubernetes/pkg/probe/tcp"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
|
||||||
"k8s.io/kubernetes/pkg/util/exec"
|
"k8s.io/kubernetes/pkg/util/exec"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
@ -158,13 +158,13 @@ func (pb *prober) runProbe(p *api.Probe, pod *api.Pod, status api.PodStatus, con
|
|||||||
return probe.Unknown, "", fmt.Errorf("Missing probe handler for %s:%s", kubecontainer.GetPodFullName(pod), container.Name)
|
return probe.Unknown, "", fmt.Errorf("Missing probe handler for %s:%s", kubecontainer.GetPodFullName(pod), container.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func extractPort(param util.IntOrString, container api.Container) (int, error) {
|
func extractPort(param intstr.IntOrString, container api.Container) (int, error) {
|
||||||
port := -1
|
port := -1
|
||||||
var err error
|
var err error
|
||||||
switch param.Kind {
|
switch param.Type {
|
||||||
case util.IntstrInt:
|
case intstr.Int:
|
||||||
port = param.IntVal
|
port = param.IntVal
|
||||||
case util.IntstrString:
|
case intstr.String:
|
||||||
if port, err = findPortByName(container, param.StrVal); err != nil {
|
if port, err = findPortByName(container, param.StrVal); err != nil {
|
||||||
// Last ditch effort - maybe it was an int stored as string?
|
// Last ditch effort - maybe it was an int stored as string?
|
||||||
if port, err = strconv.Atoi(param.StrVal); err != nil {
|
if port, err = strconv.Atoi(param.StrVal); err != nil {
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/prober/results"
|
"k8s.io/kubernetes/pkg/kubelet/prober/results"
|
||||||
"k8s.io/kubernetes/pkg/probe"
|
"k8s.io/kubernetes/pkg/probe"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFormatURL(t *testing.T) {
|
func TestFormatURL(t *testing.T) {
|
||||||
@ -76,14 +76,14 @@ func TestGetURLParts(t *testing.T) {
|
|||||||
port int
|
port int
|
||||||
path string
|
path string
|
||||||
}{
|
}{
|
||||||
{&api.HTTPGetAction{Host: "", Port: util.NewIntOrStringFromInt(-1), Path: ""}, false, "", -1, ""},
|
{&api.HTTPGetAction{Host: "", Port: intstr.FromInt(-1), Path: ""}, false, "", -1, ""},
|
||||||
{&api.HTTPGetAction{Host: "", Port: util.NewIntOrStringFromString(""), Path: ""}, false, "", -1, ""},
|
{&api.HTTPGetAction{Host: "", Port: intstr.FromString(""), Path: ""}, false, "", -1, ""},
|
||||||
{&api.HTTPGetAction{Host: "", Port: util.NewIntOrStringFromString("-1"), Path: ""}, false, "", -1, ""},
|
{&api.HTTPGetAction{Host: "", Port: intstr.FromString("-1"), Path: ""}, false, "", -1, ""},
|
||||||
{&api.HTTPGetAction{Host: "", Port: util.NewIntOrStringFromString("not-found"), Path: ""}, false, "", -1, ""},
|
{&api.HTTPGetAction{Host: "", Port: intstr.FromString("not-found"), Path: ""}, false, "", -1, ""},
|
||||||
{&api.HTTPGetAction{Host: "", Port: util.NewIntOrStringFromString("found"), Path: ""}, true, "127.0.0.1", 93, ""},
|
{&api.HTTPGetAction{Host: "", Port: intstr.FromString("found"), Path: ""}, true, "127.0.0.1", 93, ""},
|
||||||
{&api.HTTPGetAction{Host: "", Port: util.NewIntOrStringFromInt(76), Path: ""}, true, "127.0.0.1", 76, ""},
|
{&api.HTTPGetAction{Host: "", Port: intstr.FromInt(76), Path: ""}, true, "127.0.0.1", 76, ""},
|
||||||
{&api.HTTPGetAction{Host: "", Port: util.NewIntOrStringFromString("118"), Path: ""}, true, "127.0.0.1", 118, ""},
|
{&api.HTTPGetAction{Host: "", Port: intstr.FromString("118"), Path: ""}, true, "127.0.0.1", 118, ""},
|
||||||
{&api.HTTPGetAction{Host: "hostname", Port: util.NewIntOrStringFromInt(76), Path: "path"}, true, "hostname", 76, "path"},
|
{&api.HTTPGetAction{Host: "hostname", Port: intstr.FromInt(76), Path: "path"}, true, "hostname", 76, "path"},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range testCases {
|
for _, test := range testCases {
|
||||||
@ -130,13 +130,13 @@ func TestGetTCPAddrParts(t *testing.T) {
|
|||||||
host string
|
host string
|
||||||
port int
|
port int
|
||||||
}{
|
}{
|
||||||
{&api.TCPSocketAction{Port: util.NewIntOrStringFromInt(-1)}, false, "", -1},
|
{&api.TCPSocketAction{Port: intstr.FromInt(-1)}, false, "", -1},
|
||||||
{&api.TCPSocketAction{Port: util.NewIntOrStringFromString("")}, false, "", -1},
|
{&api.TCPSocketAction{Port: intstr.FromString("")}, false, "", -1},
|
||||||
{&api.TCPSocketAction{Port: util.NewIntOrStringFromString("-1")}, false, "", -1},
|
{&api.TCPSocketAction{Port: intstr.FromString("-1")}, false, "", -1},
|
||||||
{&api.TCPSocketAction{Port: util.NewIntOrStringFromString("not-found")}, false, "", -1},
|
{&api.TCPSocketAction{Port: intstr.FromString("not-found")}, false, "", -1},
|
||||||
{&api.TCPSocketAction{Port: util.NewIntOrStringFromString("found")}, true, "1.2.3.4", 93},
|
{&api.TCPSocketAction{Port: intstr.FromString("found")}, true, "1.2.3.4", 93},
|
||||||
{&api.TCPSocketAction{Port: util.NewIntOrStringFromInt(76)}, true, "1.2.3.4", 76},
|
{&api.TCPSocketAction{Port: intstr.FromInt(76)}, true, "1.2.3.4", 76},
|
||||||
{&api.TCPSocketAction{Port: util.NewIntOrStringFromString("118")}, true, "1.2.3.4", 118},
|
{&api.TCPSocketAction{Port: intstr.FromString("118")}, true, "1.2.3.4", 118},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range testCases {
|
for _, test := range testCases {
|
||||||
|
@ -31,6 +31,7 @@ import (
|
|||||||
servicecontroller "k8s.io/kubernetes/pkg/registry/service/ipallocator/controller"
|
servicecontroller "k8s.io/kubernetes/pkg/registry/service/ipallocator/controller"
|
||||||
portallocatorcontroller "k8s.io/kubernetes/pkg/registry/service/portallocator/controller"
|
portallocatorcontroller "k8s.io/kubernetes/pkg/registry/service/portallocator/controller"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
@ -157,7 +158,7 @@ func createPortAndServiceSpec(servicePort int, nodePort int, servicePortName str
|
|||||||
servicePorts := []api.ServicePort{{Protocol: api.ProtocolTCP,
|
servicePorts := []api.ServicePort{{Protocol: api.ProtocolTCP,
|
||||||
Port: servicePort,
|
Port: servicePort,
|
||||||
Name: servicePortName,
|
Name: servicePortName,
|
||||||
TargetPort: util.NewIntOrStringFromInt(servicePort)}}
|
TargetPort: intstr.FromInt(servicePort)}}
|
||||||
serviceType := api.ServiceTypeClusterIP
|
serviceType := api.ServiceTypeClusterIP
|
||||||
if nodePort > 0 {
|
if nodePort > 0 {
|
||||||
servicePorts[0].NodePort = nodePort
|
servicePorts[0].NodePort = nodePort
|
||||||
|
@ -24,7 +24,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestReconcileEndpoints(t *testing.T) {
|
func TestReconcileEndpoints(t *testing.T) {
|
||||||
@ -453,14 +453,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service does not exist",
|
testName: "service does not exist",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
expectCreate: &api.Service{
|
expectCreate: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -501,14 +501,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition wrong port",
|
testName: "service definition wrong port",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8000, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8000, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -520,7 +520,7 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -533,15 +533,15 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition missing port",
|
testName: "service definition missing port",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
{Name: "baz", Port: 1000, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(1000)},
|
{Name: "baz", Port: 1000, Protocol: "TCP", TargetPort: intstr.FromInt(1000)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -553,8 +553,8 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
{Name: "baz", Port: 1000, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(1000)},
|
{Name: "baz", Port: 1000, Protocol: "TCP", TargetPort: intstr.FromInt(1000)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -567,14 +567,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition incorrect port",
|
testName: "service definition incorrect port",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "bar", Port: 1000, Protocol: "UDP", TargetPort: util.NewIntOrStringFromInt(1000)},
|
{Name: "bar", Port: 1000, Protocol: "UDP", TargetPort: intstr.FromInt(1000)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -586,7 +586,7 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -599,14 +599,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition incorrect port name",
|
testName: "service definition incorrect port name",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 1000, Protocol: "UDP", TargetPort: util.NewIntOrStringFromInt(1000)},
|
{Name: "foo", Port: 1000, Protocol: "UDP", TargetPort: intstr.FromInt(1000)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -618,7 +618,7 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -631,14 +631,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition incorrect target port",
|
testName: "service definition incorrect target port",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(1000)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(1000)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -650,7 +650,7 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -663,14 +663,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition incorrect protocol",
|
testName: "service definition incorrect protocol",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "UDP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "UDP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -682,7 +682,7 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -695,14 +695,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition has incorrect type",
|
testName: "service definition has incorrect type",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -714,7 +714,7 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -727,14 +727,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition satisfies",
|
testName: "service definition satisfies",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
@ -779,14 +779,14 @@ func TestCreateOrUpdateMasterService(t *testing.T) {
|
|||||||
testName: "service definition wrong port, no expected update",
|
testName: "service definition wrong port, no expected update",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
servicePorts: []api.ServicePort{
|
servicePorts: []api.ServicePort{
|
||||||
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(8080)},
|
{Name: "foo", Port: 8080, Protocol: "TCP", TargetPort: intstr.FromInt(8080)},
|
||||||
},
|
},
|
||||||
serviceType: api.ServiceTypeClusterIP,
|
serviceType: api.ServiceTypeClusterIP,
|
||||||
service: &api.Service{
|
service: &api.Service{
|
||||||
ObjectMeta: om("foo"),
|
ObjectMeta: om("foo"),
|
||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Name: "foo", Port: 1000, Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(1000)},
|
{Name: "foo", Port: 1000, Protocol: "TCP", TargetPort: intstr.FromInt(1000)},
|
||||||
},
|
},
|
||||||
Selector: nil,
|
Selector: nil,
|
||||||
ClusterIP: "1.2.3.4",
|
ClusterIP: "1.2.3.4",
|
||||||
|
@ -48,6 +48,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
"k8s.io/kubernetes/pkg/storage/etcd/etcdtest"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
"github.com/coreos/go-etcd/etcd"
|
"github.com/coreos/go-etcd/etcd"
|
||||||
"github.com/emicklei/go-restful"
|
"github.com/emicklei/go-restful"
|
||||||
@ -221,13 +222,13 @@ func TestControllerServicePorts(t *testing.T) {
|
|||||||
Name: "additional-port-1",
|
Name: "additional-port-1",
|
||||||
Port: 1000,
|
Port: 1000,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(1000),
|
TargetPort: intstr.FromInt(1000),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "additional-port-2",
|
Name: "additional-port-2",
|
||||||
Port: 1010,
|
Port: 1010,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(1010),
|
TargetPort: intstr.FromInt(1010),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *StatusREST, *tools.FakeEtcdClient) {
|
||||||
@ -41,7 +41,7 @@ var (
|
|||||||
name = "foo-ingress"
|
name = "foo-ingress"
|
||||||
defaultHostname = "foo.bar.com"
|
defaultHostname = "foo.bar.com"
|
||||||
defaultBackendName = "default-backend"
|
defaultBackendName = "default-backend"
|
||||||
defaultBackendPort = util.IntOrString{Kind: util.IntstrInt, IntVal: 80}
|
defaultBackendPort = intstr.FromInt(80)
|
||||||
defaultLoadBalancer = "127.0.0.1"
|
defaultLoadBalancer = "127.0.0.1"
|
||||||
defaultPath = "/foo"
|
defaultPath = "/foo"
|
||||||
defaultPathMap = map[string]string{defaultPath: defaultBackendName}
|
defaultPathMap = map[string]string{defaultPath: defaultBackendName}
|
||||||
|
@ -21,13 +21,13 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newIngress() extensions.Ingress {
|
func newIngress() extensions.Ingress {
|
||||||
defaultBackend := extensions.IngressBackend{
|
defaultBackend := extensions.IngressBackend{
|
||||||
ServiceName: "default-backend",
|
ServiceName: "default-backend",
|
||||||
ServicePort: util.IntOrString{Kind: util.IntstrInt, IntVal: 80},
|
ServicePort: intstr.FromInt(80),
|
||||||
}
|
}
|
||||||
return extensions.Ingress{
|
return extensions.Ingress{
|
||||||
ObjectMeta: api.ObjectMeta{
|
ObjectMeta: api.ObjectMeta{
|
||||||
@ -37,7 +37,7 @@ func newIngress() extensions.Ingress {
|
|||||||
Spec: extensions.IngressSpec{
|
Spec: extensions.IngressSpec{
|
||||||
Backend: &extensions.IngressBackend{
|
Backend: &extensions.IngressBackend{
|
||||||
ServiceName: "default-backend",
|
ServiceName: "default-backend",
|
||||||
ServicePort: util.IntOrString{Kind: util.IntstrInt, IntVal: 80},
|
ServicePort: intstr.FromInt(80),
|
||||||
},
|
},
|
||||||
Rules: []extensions.IngressRule{
|
Rules: []extensions.IngressRule{
|
||||||
{
|
{
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/registry/registrytest"
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/tools"
|
"k8s.io/kubernetes/pkg/tools"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
func newStorage(t *testing.T) (*REST, *tools.FakeEtcdClient) {
|
||||||
@ -48,7 +48,7 @@ func validService() *api.Service {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ func TestCreate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -99,7 +99,7 @@ func TestUpdate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
}
|
}
|
||||||
return object
|
return object
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/registry/service/ipallocator"
|
"k8s.io/kubernetes/pkg/registry/service/ipallocator"
|
||||||
"k8s.io/kubernetes/pkg/registry/service/portallocator"
|
"k8s.io/kubernetes/pkg/registry/service/portallocator"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO(wojtek-t): Cleanup this file.
|
// TODO(wojtek-t): Cleanup this file.
|
||||||
@ -77,7 +78,7 @@ func TestServiceRegistryCreate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -120,7 +121,7 @@ func TestServiceStorageValidatesCreate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -170,7 +171,7 @@ func TestServiceRegistryUpdate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -189,7 +190,7 @@ func TestServiceRegistryUpdate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -234,7 +235,7 @@ func TestServiceStorageValidatesUpdate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -247,7 +248,7 @@ func TestServiceStorageValidatesUpdate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -275,7 +276,7 @@ func TestServiceRegistryExternalService(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -350,7 +351,7 @@ func TestServiceRegistryUpdateExternalService(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -388,12 +389,12 @@ func TestServiceRegistryUpdateMultiPortExternalService(t *testing.T) {
|
|||||||
Name: "p",
|
Name: "p",
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}, {
|
}, {
|
||||||
Name: "q",
|
Name: "q",
|
||||||
Port: 8086,
|
Port: 8086,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(8086),
|
TargetPort: intstr.FromInt(8086),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -569,7 +570,7 @@ func TestServiceRegistryIPAllocation(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -592,7 +593,7 @@ func TestServiceRegistryIPAllocation(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
}}
|
}}
|
||||||
ctx = api.NewDefaultContext()
|
ctx = api.NewDefaultContext()
|
||||||
@ -624,7 +625,7 @@ func TestServiceRegistryIPAllocation(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -651,7 +652,7 @@ func TestServiceRegistryIPReallocation(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -679,7 +680,7 @@ func TestServiceRegistryIPReallocation(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -706,7 +707,7 @@ func TestServiceRegistryIPUpdate(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -760,7 +761,7 @@ func TestServiceRegistryIPLoadBalancer(t *testing.T) {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 6502,
|
Port: 6502,
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
TargetPort: util.NewIntOrStringFromInt(6502),
|
TargetPort: intstr.FromInt(6502),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCheckGeneratedNameError(t *testing.T) {
|
func TestCheckGeneratedNameError(t *testing.T) {
|
||||||
@ -56,7 +56,7 @@ func makeValidService() api.Service {
|
|||||||
Selector: map[string]string{"key": "val"},
|
Selector: map[string]string{"key": "val"},
|
||||||
SessionAffinity: "None",
|
SessionAffinity: "None",
|
||||||
Type: api.ServiceTypeClusterIP,
|
Type: api.ServiceTypeClusterIP,
|
||||||
Ports: []api.ServicePort{{Name: "p", Protocol: "TCP", Port: 8675, TargetPort: util.NewIntOrStringFromInt(8675)}},
|
Ports: []api.ServicePort{{Name: "p", Protocol: "TCP", Port: 8675, TargetPort: intstr.FromInt(8675)}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
98
pkg/util/intstr/intstr.go
Normal file
98
pkg/util/intstr/intstr.go
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2014 The Kubernetes Authors All rights reserved.
|
||||||
|
|
||||||
|
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 intstr
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/google/gofuzz"
|
||||||
|
)
|
||||||
|
|
||||||
|
// IntOrString is a type that can hold an int or a string. When used in
|
||||||
|
// JSON or YAML marshalling and unmarshalling, it produces or consumes the
|
||||||
|
// inner type. This allows you to have, for example, a JSON field that can
|
||||||
|
// accept a name or number.
|
||||||
|
type IntOrString struct {
|
||||||
|
Type Type
|
||||||
|
IntVal int
|
||||||
|
StrVal string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Type represents the stored type of IntOrString.
|
||||||
|
type Type int
|
||||||
|
|
||||||
|
const (
|
||||||
|
Int Type = iota // The IntOrString holds an int.
|
||||||
|
String // The IntOrString holds a string.
|
||||||
|
)
|
||||||
|
|
||||||
|
// FromInt creates an IntOrString object with an int value.
|
||||||
|
func FromInt(val int) IntOrString {
|
||||||
|
return IntOrString{Type: Int, IntVal: val}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FromString creates an IntOrString object with a string value.
|
||||||
|
func FromString(val string) IntOrString {
|
||||||
|
return IntOrString{Type: String, StrVal: val}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalJSON implements the json.Unmarshaller interface.
|
||||||
|
func (intstr *IntOrString) UnmarshalJSON(value []byte) error {
|
||||||
|
if value[0] == '"' {
|
||||||
|
intstr.Type = String
|
||||||
|
return json.Unmarshal(value, &intstr.StrVal)
|
||||||
|
}
|
||||||
|
intstr.Type = Int
|
||||||
|
return json.Unmarshal(value, &intstr.IntVal)
|
||||||
|
}
|
||||||
|
|
||||||
|
// String returns the string value, or the Itoa of the int value.
|
||||||
|
func (intstr *IntOrString) String() string {
|
||||||
|
if intstr.Type == String {
|
||||||
|
return intstr.StrVal
|
||||||
|
}
|
||||||
|
return strconv.Itoa(intstr.IntVal)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarshalJSON implements the json.Marshaller interface.
|
||||||
|
func (intstr IntOrString) MarshalJSON() ([]byte, error) {
|
||||||
|
switch intstr.Type {
|
||||||
|
case Int:
|
||||||
|
return json.Marshal(intstr.IntVal)
|
||||||
|
case String:
|
||||||
|
return json.Marshal(intstr.StrVal)
|
||||||
|
default:
|
||||||
|
return []byte{}, fmt.Errorf("impossible IntOrString.Type")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (intstr *IntOrString) Fuzz(c fuzz.Continue) {
|
||||||
|
if intstr == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if c.RandBool() {
|
||||||
|
intstr.Type = Int
|
||||||
|
c.Fuzz(&intstr.IntVal)
|
||||||
|
intstr.StrVal = ""
|
||||||
|
} else {
|
||||||
|
intstr.Type = String
|
||||||
|
intstr.IntVal = 0
|
||||||
|
c.Fuzz(&intstr.StrVal)
|
||||||
|
}
|
||||||
|
}
|
111
pkg/util/intstr/intstr_test.go
Normal file
111
pkg/util/intstr/intstr_test.go
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2014 The Kubernetes Authors All rights reserved.
|
||||||
|
|
||||||
|
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 intstr
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ghodss/yaml"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestFromInt(t *testing.T) {
|
||||||
|
i := FromInt(93)
|
||||||
|
if i.Type != Int || i.IntVal != 93 {
|
||||||
|
t.Errorf("Expected IntVal=93, got %+v", i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFromString(t *testing.T) {
|
||||||
|
i := FromString("76")
|
||||||
|
if i.Type != String || i.StrVal != "76" {
|
||||||
|
t.Errorf("Expected StrVal=\"76\", got %+v", i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type IntOrStringHolder struct {
|
||||||
|
IOrS IntOrString `json:"val"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIntOrStringUnmarshalJSON(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
input string
|
||||||
|
result IntOrString
|
||||||
|
}{
|
||||||
|
{"{\"val\": 123}", FromInt(123)},
|
||||||
|
{"{\"val\": \"123\"}", FromString("123")},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
var result IntOrStringHolder
|
||||||
|
if err := json.Unmarshal([]byte(c.input), &result); err != nil {
|
||||||
|
t.Errorf("Failed to unmarshal input '%v': %v", c.input, err)
|
||||||
|
}
|
||||||
|
if result.IOrS != c.result {
|
||||||
|
t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIntOrStringMarshalJSON(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
input IntOrString
|
||||||
|
result string
|
||||||
|
}{
|
||||||
|
{FromInt(123), "{\"val\":123}"},
|
||||||
|
{FromString("123"), "{\"val\":\"123\"}"},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
input := IntOrStringHolder{c.input}
|
||||||
|
result, err := json.Marshal(&input)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Failed to marshal input '%v': %v", input, err)
|
||||||
|
}
|
||||||
|
if string(result) != c.result {
|
||||||
|
t.Errorf("Failed to marshal input '%v': expected: %+v, got %q", input, c.result, string(result))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIntOrStringMarshalJSONUnmarshalYAML(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
input IntOrString
|
||||||
|
}{
|
||||||
|
{FromInt(123)},
|
||||||
|
{FromString("123")},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
input := IntOrStringHolder{c.input}
|
||||||
|
jsonMarshalled, err := json.Marshal(&input)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("1: Failed to marshal input: '%v': %v", input, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var result IntOrStringHolder
|
||||||
|
err = yaml.Unmarshal(jsonMarshalled, &result)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("2: Failed to unmarshal '%+v': %v", string(jsonMarshalled), err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !reflect.DeepEqual(input, result) {
|
||||||
|
t.Errorf("3: Failed to marshal input '%+v': got %+v", input, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,6 @@ package util
|
|||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"math"
|
"math"
|
||||||
@ -34,8 +33,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/google/gofuzz"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// For testing, bypass HandleCrash.
|
// For testing, bypass HandleCrash.
|
||||||
@ -133,88 +133,15 @@ func Until(f func(), period time.Duration, stopCh <-chan struct{}) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// IntOrString is a type that can hold an int or a string. When used in
|
func GetIntOrPercentValue(intOrStr *intstr.IntOrString) (int, bool, error) {
|
||||||
// JSON or YAML marshalling and unmarshalling, it produces or consumes the
|
switch intOrStr.Type {
|
||||||
// inner type. This allows you to have, for example, a JSON field that can
|
case intstr.Int:
|
||||||
// accept a name or number.
|
return intOrStr.IntVal, false, nil
|
||||||
type IntOrString struct {
|
case intstr.String:
|
||||||
Kind IntstrKind
|
s := strings.Replace(intOrStr.StrVal, "%", "", -1)
|
||||||
IntVal int
|
|
||||||
StrVal string
|
|
||||||
}
|
|
||||||
|
|
||||||
// IntstrKind represents the stored type of IntOrString.
|
|
||||||
type IntstrKind int
|
|
||||||
|
|
||||||
const (
|
|
||||||
IntstrInt IntstrKind = iota // The IntOrString holds an int.
|
|
||||||
IntstrString // The IntOrString holds a string.
|
|
||||||
)
|
|
||||||
|
|
||||||
// NewIntOrStringFromInt creates an IntOrString object with an int value.
|
|
||||||
func NewIntOrStringFromInt(val int) IntOrString {
|
|
||||||
return IntOrString{Kind: IntstrInt, IntVal: val}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewIntOrStringFromString creates an IntOrString object with a string value.
|
|
||||||
func NewIntOrStringFromString(val string) IntOrString {
|
|
||||||
return IntOrString{Kind: IntstrString, StrVal: val}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalJSON implements the json.Unmarshaller interface.
|
|
||||||
func (intstr *IntOrString) UnmarshalJSON(value []byte) error {
|
|
||||||
if value[0] == '"' {
|
|
||||||
intstr.Kind = IntstrString
|
|
||||||
return json.Unmarshal(value, &intstr.StrVal)
|
|
||||||
}
|
|
||||||
intstr.Kind = IntstrInt
|
|
||||||
return json.Unmarshal(value, &intstr.IntVal)
|
|
||||||
}
|
|
||||||
|
|
||||||
// String returns the string value, or Itoa's the int value.
|
|
||||||
func (intstr *IntOrString) String() string {
|
|
||||||
if intstr.Kind == IntstrString {
|
|
||||||
return intstr.StrVal
|
|
||||||
}
|
|
||||||
return strconv.Itoa(intstr.IntVal)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalJSON implements the json.Marshaller interface.
|
|
||||||
func (intstr IntOrString) MarshalJSON() ([]byte, error) {
|
|
||||||
switch intstr.Kind {
|
|
||||||
case IntstrInt:
|
|
||||||
return json.Marshal(intstr.IntVal)
|
|
||||||
case IntstrString:
|
|
||||||
return json.Marshal(intstr.StrVal)
|
|
||||||
default:
|
|
||||||
return []byte{}, fmt.Errorf("impossible IntOrString.Kind")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (intstr *IntOrString) Fuzz(c fuzz.Continue) {
|
|
||||||
if intstr == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if c.RandBool() {
|
|
||||||
intstr.Kind = IntstrInt
|
|
||||||
c.Fuzz(&intstr.IntVal)
|
|
||||||
intstr.StrVal = ""
|
|
||||||
} else {
|
|
||||||
intstr.Kind = IntstrString
|
|
||||||
intstr.IntVal = 0
|
|
||||||
c.Fuzz(&intstr.StrVal)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetIntOrPercentValue(intStr *IntOrString) (int, bool, error) {
|
|
||||||
switch intStr.Kind {
|
|
||||||
case IntstrInt:
|
|
||||||
return intStr.IntVal, false, nil
|
|
||||||
case IntstrString:
|
|
||||||
s := strings.Replace(intStr.StrVal, "%", "", -1)
|
|
||||||
v, err := strconv.Atoi(s)
|
v, err := strconv.Atoi(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, false, fmt.Errorf("invalid value %q: %v", intStr.StrVal, err)
|
return 0, false, fmt.Errorf("invalid value %q: %v", intOrStr.StrVal, err)
|
||||||
}
|
}
|
||||||
return v, true, nil
|
return v, true, nil
|
||||||
}
|
}
|
||||||
|
@ -17,16 +17,12 @@ limitations under the License.
|
|||||||
package util
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"reflect"
|
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUntil(t *testing.T) {
|
func TestUntil(t *testing.T) {
|
||||||
@ -109,133 +105,6 @@ func TestCustomHandleError(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNewIntOrStringFromInt(t *testing.T) {
|
|
||||||
i := NewIntOrStringFromInt(93)
|
|
||||||
if i.Kind != IntstrInt || i.IntVal != 93 {
|
|
||||||
t.Errorf("Expected IntVal=93, got %+v", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestNewIntOrStringFromString(t *testing.T) {
|
|
||||||
i := NewIntOrStringFromString("76")
|
|
||||||
if i.Kind != IntstrString || i.StrVal != "76" {
|
|
||||||
t.Errorf("Expected StrVal=\"76\", got %+v", i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type IntOrStringHolder struct {
|
|
||||||
IOrS IntOrString `json:"val"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIntOrStringUnmarshalYAML(t *testing.T) {
|
|
||||||
cases := []struct {
|
|
||||||
input string
|
|
||||||
result IntOrString
|
|
||||||
}{
|
|
||||||
{"val: 123\n", IntOrString{Kind: IntstrInt, IntVal: 123}},
|
|
||||||
{"val: \"123\"\n", IntOrString{Kind: IntstrString, StrVal: "123"}},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, c := range cases {
|
|
||||||
var result IntOrStringHolder
|
|
||||||
if err := yaml.Unmarshal([]byte(c.input), &result); err != nil {
|
|
||||||
t.Errorf("Failed to unmarshal input '%v': %v", c.input, err)
|
|
||||||
}
|
|
||||||
if result.IOrS != c.result {
|
|
||||||
t.Errorf("Failed to unmarshal input '%v': expected: %+v, got %+v", c.input, c.result, result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIntOrStringMarshalYAML(t *testing.T) {
|
|
||||||
cases := []struct {
|
|
||||||
input IntOrString
|
|
||||||
result string
|
|
||||||
}{
|
|
||||||
{IntOrString{Kind: IntstrInt, IntVal: 123}, "val: 123\n"},
|
|
||||||
{IntOrString{Kind: IntstrString, StrVal: "123"}, "val: \"123\"\n"},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, c := range cases {
|
|
||||||
input := IntOrStringHolder{c.input}
|
|
||||||
result, err := yaml.Marshal(&input)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Failed to marshal input '%v': %v", input, err)
|
|
||||||
}
|
|
||||||
if string(result) != c.result {
|
|
||||||
t.Errorf("Failed to marshal input '%v': expected: %+v, got %q", input, c.result, string(result))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIntOrStringUnmarshalJSON(t *testing.T) {
|
|
||||||
cases := []struct {
|
|
||||||
input string
|
|
||||||
result IntOrString
|
|
||||||
}{
|
|
||||||
{"{\"val\": 123}", IntOrString{Kind: IntstrInt, IntVal: 123}},
|
|
||||||
{"{\"val\": \"123\"}", IntOrString{Kind: IntstrString, StrVal: "123"}},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, c := range cases {
|
|
||||||
var result IntOrStringHolder
|
|
||||||
if err := json.Unmarshal([]byte(c.input), &result); err != nil {
|
|
||||||
t.Errorf("Failed to unmarshal input '%v': %v", c.input, err)
|
|
||||||
}
|
|
||||||
if result.IOrS != c.result {
|
|
||||||
t.Errorf("Failed to unmarshal input '%v': expected %+v, got %+v", c.input, c.result, result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIntOrStringMarshalJSON(t *testing.T) {
|
|
||||||
cases := []struct {
|
|
||||||
input IntOrString
|
|
||||||
result string
|
|
||||||
}{
|
|
||||||
{IntOrString{Kind: IntstrInt, IntVal: 123}, "{\"val\":123}"},
|
|
||||||
{IntOrString{Kind: IntstrString, StrVal: "123"}, "{\"val\":\"123\"}"},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, c := range cases {
|
|
||||||
input := IntOrStringHolder{c.input}
|
|
||||||
result, err := json.Marshal(&input)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Failed to marshal input '%v': %v", input, err)
|
|
||||||
}
|
|
||||||
if string(result) != c.result {
|
|
||||||
t.Errorf("Failed to marshal input '%v': expected: %+v, got %q", input, c.result, string(result))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestIntOrStringMarshalJSONUnmarshalYAML(t *testing.T) {
|
|
||||||
cases := []struct {
|
|
||||||
input IntOrString
|
|
||||||
}{
|
|
||||||
{IntOrString{Kind: IntstrInt, IntVal: 123}},
|
|
||||||
{IntOrString{Kind: IntstrString, StrVal: "123"}},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, c := range cases {
|
|
||||||
input := IntOrStringHolder{c.input}
|
|
||||||
jsonMarshalled, err := json.Marshal(&input)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("1: Failed to marshal input: '%v': %v", input, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var result IntOrStringHolder
|
|
||||||
err = yaml.Unmarshal(jsonMarshalled, &result)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("2: Failed to unmarshal '%+v': %v", string(jsonMarshalled), err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !reflect.DeepEqual(input, result) {
|
|
||||||
t.Errorf("3: Failed to marshal input '%+v': got %+v", input, result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestStringDiff(t *testing.T) {
|
func TestStringDiff(t *testing.T) {
|
||||||
diff := StringDiff("aaabb", "aaacc")
|
diff := StringDiff("aaabb", "aaacc")
|
||||||
expect := "aaa\n\nA: bb\n\nB: cc\n\n"
|
expect := "aaa\n\nA: bb\n\nB: cc\n\n"
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
)
|
)
|
||||||
@ -279,7 +279,7 @@ func runServiceAndWorkloadForResourceConsumer(c *client.Client, ns, name, kind s
|
|||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: port,
|
Port: port,
|
||||||
TargetPort: util.NewIntOrStringFromInt(targetPort),
|
TargetPort: intstr.FromInt(targetPort),
|
||||||
}},
|
}},
|
||||||
|
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
@ -144,7 +145,7 @@ func (b webserverProbeBuilder) build() *api.Probe {
|
|||||||
probe := &api.Probe{
|
probe := &api.Probe{
|
||||||
Handler: api.Handler{
|
Handler: api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Port: util.NewIntOrStringFromInt(80),
|
Port: intstr.FromInt(80),
|
||||||
Path: "/",
|
Path: "/",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -153,7 +154,7 @@ func (b webserverProbeBuilder) build() *api.Probe {
|
|||||||
probe.InitialDelaySeconds = 30
|
probe.InitialDelaySeconds = 30
|
||||||
}
|
}
|
||||||
if b.failing {
|
if b.failing {
|
||||||
probe.HTTPGet.Port = util.NewIntOrStringFromInt(81)
|
probe.HTTPGet.Port = intstr.FromInt(81)
|
||||||
}
|
}
|
||||||
return probe
|
return probe
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ import (
|
|||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
@ -105,7 +105,7 @@ func ruleByIndex(i int) extensions.IngressRule {
|
|||||||
Path: fmt.Sprintf("/%v%d", pathPrefix, i),
|
Path: fmt.Sprintf("/%v%d", pathPrefix, i),
|
||||||
Backend: extensions.IngressBackend{
|
Backend: extensions.IngressBackend{
|
||||||
ServiceName: fmt.Sprintf("%v%d", appPrefix, i),
|
ServiceName: fmt.Sprintf("%v%d", appPrefix, i),
|
||||||
ServicePort: util.NewIntOrStringFromInt(httpContainerPort),
|
ServicePort: intstr.FromInt(httpContainerPort),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -129,7 +129,7 @@ func createIngress(c *client.Client, ns string, start, num int) extensions.Ingre
|
|||||||
Spec: extensions.IngressSpec{
|
Spec: extensions.IngressSpec{
|
||||||
Backend: &extensions.IngressBackend{
|
Backend: &extensions.IngressBackend{
|
||||||
ServiceName: fmt.Sprintf("%v%d", appPrefix, start),
|
ServiceName: fmt.Sprintf("%v%d", appPrefix, start),
|
||||||
ServicePort: util.NewIntOrStringFromInt(httpContainerPort),
|
ServicePort: intstr.FromInt(httpContainerPort),
|
||||||
},
|
},
|
||||||
Rules: []extensions.IngressRule{},
|
Rules: []extensions.IngressRule{},
|
||||||
},
|
},
|
||||||
|
@ -33,6 +33,7 @@ import (
|
|||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -343,8 +344,8 @@ func (config *KubeProxyTestConfig) createNodePortService(selector map[string]str
|
|||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Type: api.ServiceTypeNodePort,
|
Type: api.ServiceTypeNodePort,
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Port: clusterHttpPort, Name: "http", Protocol: "TCP", NodePort: nodeHttpPort, TargetPort: util.NewIntOrStringFromInt(endpointHttpPort)},
|
{Port: clusterHttpPort, Name: "http", Protocol: "TCP", NodePort: nodeHttpPort, TargetPort: intstr.FromInt(endpointHttpPort)},
|
||||||
{Port: clusterUdpPort, Name: "udp", Protocol: "UDP", NodePort: nodeUdpPort, TargetPort: util.NewIntOrStringFromInt(endpointUdpPort)},
|
{Port: clusterUdpPort, Name: "udp", Protocol: "UDP", NodePort: nodeUdpPort, TargetPort: intstr.FromInt(endpointUdpPort)},
|
||||||
},
|
},
|
||||||
Selector: selector,
|
Selector: selector,
|
||||||
},
|
},
|
||||||
@ -366,7 +367,7 @@ func (config *KubeProxyTestConfig) createLoadBalancerService(selector map[string
|
|||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Type: api.ServiceTypeLoadBalancer,
|
Type: api.ServiceTypeLoadBalancer,
|
||||||
Ports: []api.ServicePort{
|
Ports: []api.ServicePort{
|
||||||
{Port: loadBalancerHttpPort, Name: "http", Protocol: "TCP", TargetPort: util.NewIntOrStringFromInt(endpointHttpPort)},
|
{Port: loadBalancerHttpPort, Name: "http", Protocol: "TCP", TargetPort: intstr.FromInt(endpointHttpPort)},
|
||||||
},
|
},
|
||||||
Selector: selector,
|
Selector: selector,
|
||||||
},
|
},
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
@ -117,7 +117,7 @@ var _ = Describe("Networking", func() {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
Port: 8080,
|
Port: 8080,
|
||||||
TargetPort: util.NewIntOrStringFromInt(8080),
|
TargetPort: intstr.FromInt(8080),
|
||||||
}},
|
}},
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
"name": svcname,
|
"name": svcname,
|
||||||
|
@ -35,6 +35,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/kubelet"
|
"k8s.io/kubernetes/pkg/kubelet"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
|
|
||||||
@ -287,7 +288,7 @@ var _ = Describe("Pods", func() {
|
|||||||
Handler: api.Handler{
|
Handler: api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Path: "/index.html",
|
Path: "/index.html",
|
||||||
Port: util.NewIntOrStringFromInt(8080),
|
Port: intstr.FromInt(8080),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
InitialDelaySeconds: 30,
|
InitialDelaySeconds: 30,
|
||||||
@ -396,7 +397,7 @@ var _ = Describe("Pods", func() {
|
|||||||
Handler: api.Handler{
|
Handler: api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Path: "/index.html",
|
Path: "/index.html",
|
||||||
Port: util.NewIntOrStringFromInt(8080),
|
Port: intstr.FromInt(8080),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
InitialDelaySeconds: 30,
|
InitialDelaySeconds: 30,
|
||||||
@ -498,7 +499,7 @@ var _ = Describe("Pods", func() {
|
|||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 8765,
|
Port: 8765,
|
||||||
TargetPort: util.NewIntOrStringFromInt(8080),
|
TargetPort: intstr.FromInt(8080),
|
||||||
}},
|
}},
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
"name": serverName,
|
"name": serverName,
|
||||||
@ -611,7 +612,7 @@ var _ = Describe("Pods", func() {
|
|||||||
Handler: api.Handler{
|
Handler: api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Path: "/healthz",
|
Path: "/healthz",
|
||||||
Port: util.NewIntOrStringFromInt(8080),
|
Port: intstr.FromInt(8080),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
InitialDelaySeconds: 15,
|
InitialDelaySeconds: 15,
|
||||||
@ -639,7 +640,7 @@ var _ = Describe("Pods", func() {
|
|||||||
Handler: api.Handler{
|
Handler: api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Path: "/healthz",
|
Path: "/healthz",
|
||||||
Port: util.NewIntOrStringFromInt(8080),
|
Port: intstr.FromInt(8080),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
InitialDelaySeconds: 5,
|
InitialDelaySeconds: 5,
|
||||||
@ -673,7 +674,7 @@ var _ = Describe("Pods", func() {
|
|||||||
Handler: api.Handler{
|
Handler: api.Handler{
|
||||||
HTTPGet: &api.HTTPGetAction{
|
HTTPGet: &api.HTTPGetAction{
|
||||||
Path: "/read",
|
Path: "/read",
|
||||||
Port: util.NewIntOrStringFromInt(8080),
|
Port: intstr.FromInt(8080),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
InitialDelaySeconds: 15,
|
InitialDelaySeconds: 15,
|
||||||
|
@ -30,6 +30,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
@ -71,22 +72,22 @@ func proxyContext(version string) {
|
|||||||
{
|
{
|
||||||
Name: "portname1",
|
Name: "portname1",
|
||||||
Port: 80,
|
Port: 80,
|
||||||
TargetPort: util.NewIntOrStringFromString("dest1"),
|
TargetPort: intstr.FromString("dest1"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "portname2",
|
Name: "portname2",
|
||||||
Port: 81,
|
Port: 81,
|
||||||
TargetPort: util.NewIntOrStringFromInt(162),
|
TargetPort: intstr.FromInt(162),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "tlsportname1",
|
Name: "tlsportname1",
|
||||||
Port: 443,
|
Port: 443,
|
||||||
TargetPort: util.NewIntOrStringFromString("tlsdest1"),
|
TargetPort: intstr.FromString("tlsdest1"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "tlsportname2",
|
Name: "tlsportname2",
|
||||||
Port: 444,
|
Port: 444,
|
||||||
TargetPort: util.NewIntOrStringFromInt(462),
|
TargetPort: intstr.FromInt(462),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
@ -123,8 +123,8 @@ func svcByName(name string, port int) *api.Service {
|
|||||||
"name": name,
|
"name": name,
|
||||||
},
|
},
|
||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: port,
|
Port: 9376,
|
||||||
TargetPort: util.NewIntOrStringFromInt(port),
|
TargetPort: intstr.FromInt(port),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -96,7 +97,7 @@ var _ = Describe("Services", func() {
|
|||||||
Selector: labels,
|
Selector: labels,
|
||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
TargetPort: util.NewIntOrStringFromInt(80),
|
TargetPort: intstr.FromInt(80),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -159,12 +160,12 @@ var _ = Describe("Services", func() {
|
|||||||
{
|
{
|
||||||
Name: "portname1",
|
Name: "portname1",
|
||||||
Port: 80,
|
Port: 80,
|
||||||
TargetPort: util.NewIntOrStringFromString(svc1port),
|
TargetPort: intstr.FromString(svc1port),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "portname2",
|
Name: "portname2",
|
||||||
Port: 81,
|
Port: 81,
|
||||||
TargetPort: util.NewIntOrStringFromString(svc2port),
|
TargetPort: intstr.FromString(svc2port),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -800,7 +801,7 @@ var _ = Describe("Services", func() {
|
|||||||
svc1 := t1.BuildServiceSpec()
|
svc1 := t1.BuildServiceSpec()
|
||||||
svc1.Spec.Type = api.ServiceTypeLoadBalancer
|
svc1.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
svc1.Spec.Ports[0].Port = servicePort
|
svc1.Spec.Ports[0].Port = servicePort
|
||||||
svc1.Spec.Ports[0].TargetPort = util.NewIntOrStringFromInt(80)
|
svc1.Spec.Ports[0].TargetPort = intstr.FromInt(80)
|
||||||
_, err = t1.CreateService(svc1)
|
_, err = t1.CreateService(svc1)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
@ -825,7 +826,7 @@ var _ = Describe("Services", func() {
|
|||||||
svc2 := t2.BuildServiceSpec()
|
svc2 := t2.BuildServiceSpec()
|
||||||
svc2.Spec.Type = api.ServiceTypeLoadBalancer
|
svc2.Spec.Type = api.ServiceTypeLoadBalancer
|
||||||
svc2.Spec.Ports[0].Port = servicePort
|
svc2.Spec.Ports[0].Port = servicePort
|
||||||
svc2.Spec.Ports[0].TargetPort = util.NewIntOrStringFromInt(80)
|
svc2.Spec.Ports[0].TargetPort = intstr.FromInt(80)
|
||||||
svc2.Spec.LoadBalancerIP = loadBalancerIP
|
svc2.Spec.LoadBalancerIP = loadBalancerIP
|
||||||
_, err = t2.CreateService(svc2)
|
_, err = t2.CreateService(svc2)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
@ -1236,7 +1237,7 @@ func startServeHostnameService(c *client.Client, ns, name string, port, replicas
|
|||||||
Spec: api.ServiceSpec{
|
Spec: api.ServiceSpec{
|
||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: port,
|
Port: port,
|
||||||
TargetPort: util.NewIntOrStringFromInt(9376),
|
TargetPort: intstr.FromInt(9376),
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
}},
|
}},
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
@ -1411,7 +1412,7 @@ func (t *WebserverTest) BuildServiceSpec() *api.Service {
|
|||||||
Selector: t.Labels,
|
Selector: t.Labels,
|
||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Port: 80,
|
Port: 80,
|
||||||
TargetPort: util.NewIntOrStringFromInt(80),
|
TargetPort: intstr.FromInt(80),
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ import (
|
|||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -129,7 +129,7 @@ func main() {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
Port: 9376,
|
Port: 9376,
|
||||||
TargetPort: util.NewIntOrStringFromInt(9376),
|
TargetPort: intstr.FromInt(9376),
|
||||||
}},
|
}},
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
"name": "serve-hostname",
|
"name": "serve-hostname",
|
||||||
|
@ -37,7 +37,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -150,7 +150,7 @@ func main() {
|
|||||||
Ports: []api.ServicePort{{
|
Ports: []api.ServicePort{{
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
Port: 9376,
|
Port: 9376,
|
||||||
TargetPort: util.NewIntOrStringFromInt(9376),
|
TargetPort: intstr.FromInt(9376),
|
||||||
}},
|
}},
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
"name": "serve-hostname",
|
"name": "serve-hostname",
|
||||||
|
Loading…
Reference in New Issue
Block a user