diff --git a/pkg/api/errors/errors.go b/pkg/api/errors/errors.go index ea62742c3e..584dff8956 100644 --- a/pkg/api/errors/errors.go +++ b/pkg/api/errors/errors.go @@ -224,7 +224,7 @@ func NewServerTimeout(kind, operation string, retryAfterSeconds int) error { Details: &unversioned.StatusDetails{ Kind: kind, Name: operation, - RetryAfterSeconds: retryAfterSeconds, + RetryAfterSeconds: int32(retryAfterSeconds), }, Message: fmt.Sprintf("The %s operation against %s could not be completed at this time, please try again.", operation, kind), }} @@ -252,7 +252,7 @@ func NewTimeoutError(message string, retryAfterSeconds int) error { Reason: unversioned.StatusReasonTimeout, Message: fmt.Sprintf("Timeout: %s", message), Details: &unversioned.StatusDetails{ - RetryAfterSeconds: retryAfterSeconds, + RetryAfterSeconds: int32(retryAfterSeconds), }, }} } @@ -318,14 +318,14 @@ func NewGenericServerResponse(code int, verb, kind, name, serverMessage string, } return &StatusError{unversioned.Status{ Status: unversioned.StatusFailure, - Code: code, + Code: int32(code), Reason: reason, Details: &unversioned.StatusDetails{ Kind: kind, Name: name, Causes: causes, - RetryAfterSeconds: retryAfterSeconds, + RetryAfterSeconds: int32(retryAfterSeconds), }, Message: message, }} @@ -410,7 +410,7 @@ func SuggestsClientDelay(err error) (int, bool) { if t.Status().Details != nil { switch t.Status().Reason { case unversioned.StatusReasonServerTimeout, unversioned.StatusReasonTimeout: - return t.Status().Details.RetryAfterSeconds, true + return int(t.Status().Details.RetryAfterSeconds), true } } } diff --git a/pkg/api/types.go b/pkg/api/types.go index 1a07db1b12..d7fee57d51 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -719,11 +719,11 @@ type Probe struct { // The action taken to determine the health of a container Handler `json:",inline"` // Length of time before health checking is activated. In seconds. - InitialDelaySeconds int64 `json:"initialDelaySeconds,omitempty"` + InitialDelaySeconds int `json:"initialDelaySeconds,omitempty"` // Length of time before health checking times out. In seconds. - TimeoutSeconds int64 `json:"timeoutSeconds,omitempty"` + TimeoutSeconds int `json:"timeoutSeconds,omitempty"` // How often (in seconds) to perform the probe. - PeriodSeconds int64 `json:"periodSeconds,omitempty"` + PeriodSeconds int `json:"periodSeconds,omitempty"` // Minimum consecutive successes for the probe to be considered successful after having failed. // Must be 1 for liveness. SuccessThreshold int `json:"successThreshold,omitempty"` diff --git a/pkg/api/unversioned/types.go b/pkg/api/unversioned/types.go index 32160a54d7..7674a30411 100644 --- a/pkg/api/unversioned/types.go +++ b/pkg/api/unversioned/types.go @@ -99,7 +99,7 @@ type Status struct { // the reason type. Details *StatusDetails `json:"details,omitempty"` // Suggested HTTP return code for this status, 0 if not set. - Code int `json:"code,omitempty"` + Code int32 `json:"code,omitempty"` } // StatusDetails is a set of additional properties that MAY be set by the @@ -120,7 +120,7 @@ type StatusDetails struct { // failure. Not all StatusReasons may provide detailed causes. Causes []StatusCause `json:"causes,omitempty"` // If specified, the time in seconds before the operation should be retried. - RetryAfterSeconds int `json:"retryAfterSeconds,omitempty"` + RetryAfterSeconds int32 `json:"retryAfterSeconds,omitempty"` } // Values of Status.Status @@ -204,7 +204,7 @@ const ( // Details (optional): // "kind" string - the kind attribute of the resource being acted on. // "id" string - the operation that is being attempted. - // "retryAfterSeconds" int - the number of seconds before the operation should be retried + // "retryAfterSeconds" int32 - the number of seconds before the operation should be retried // Status code 500 StatusReasonServerTimeout StatusReason = "ServerTimeout" @@ -214,7 +214,7 @@ const ( // The request might succeed with an increased value of timeout param. The client *should* // wait at least the number of seconds specified by the retryAfterSeconds field. // Details (optional): - // "retryAfterSeconds" int - the number of seconds before the operation should be retried + // "retryAfterSeconds" int32 - the number of seconds before the operation should be retried // Status code 504 StatusReasonTimeout StatusReason = "Timeout" diff --git a/pkg/api/v1/conversion.go b/pkg/api/v1/conversion.go index ce4b440ec8..16b2a8c47b 100644 --- a/pkg/api/v1/conversion.go +++ b/pkg/api/v1/conversion.go @@ -180,8 +180,8 @@ func convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec(in *a if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { defaulting.(func(*api.ReplicationControllerSpec))(in) } - out.Replicas = new(int) - *out.Replicas = in.Replicas + out.Replicas = new(int32) + *out.Replicas = int32(in.Replicas) if in.Selector != nil { out.Selector = make(map[string]string) for key, val := range in.Selector { @@ -213,7 +213,7 @@ func convert_v1_ReplicationControllerSpec_To_api_ReplicationControllerSpec(in *R if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { defaulting.(func(*ReplicationControllerSpec))(in) } - out.Replicas = *in.Replicas + out.Replicas = int(*in.Replicas) if in.Selector != nil { out.Selector = make(map[string]string) for key, val := range in.Selector { diff --git a/pkg/api/v1/defaults.go b/pkg/api/v1/defaults.go index bbc407e363..68ce75bb95 100644 --- a/pkg/api/v1/defaults.go +++ b/pkg/api/v1/defaults.go @@ -41,7 +41,7 @@ func addDefaultingFuncs() { } } if obj.Spec.Replicas == nil { - obj.Spec.Replicas = new(int) + obj.Spec.Replicas = new(int32) *obj.Spec.Replicas = 1 } }, @@ -85,7 +85,7 @@ func addDefaultingFuncs() { sp.Protocol = ProtocolTCP } if sp.TargetPort == intstr.FromInt(0) || sp.TargetPort == intstr.FromString("") { - sp.TargetPort = intstr.FromInt(sp.Port) + sp.TargetPort = intstr.FromInt(int(sp.Port)) } } }, diff --git a/pkg/api/v1/types.go b/pkg/api/v1/types.go index a80cbabd78..ea5bd3dcbc 100644 --- a/pkg/api/v1/types.go +++ b/pkg/api/v1/types.go @@ -635,7 +635,7 @@ type GCEPersistentDiskVolumeSource struct { // Examples: For volume /dev/sda1, you specify the partition as "1". // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk - Partition int `json:"partition,omitempty"` + Partition int32 `json:"partition,omitempty"` // ReadOnly here will force the ReadOnly setting in VolumeMounts. // Defaults to false. // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk @@ -661,7 +661,7 @@ type AWSElasticBlockStoreVolumeSource struct { // If omitted, the default is to mount by volume name. // Examples: For volume /dev/sda1, you specify the partition as "1". // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). - Partition int `json:"partition,omitempty"` + Partition int32 `json:"partition,omitempty"` // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". // If omitted, the default is "false". // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore @@ -709,7 +709,7 @@ type ISCSIVolumeSource struct { // Target iSCSI Qualified Name. IQN string `json:"iqn"` // iSCSI target lun number. - Lun int `json:"lun"` + Lun int32 `json:"lun"` // Filesystem type of the volume that you want to mount. // Tip: Ensure that the filesystem type is supported by the host operating system. // Examples: "ext4", "xfs", "ntfs". @@ -726,7 +726,7 @@ type FCVolumeSource struct { // Required: FC target world wide names (WWNs) TargetWWNs []string `json:"targetWWNs"` // Required: FC target lun number - Lun *int `json:"lun"` + Lun *int32 `json:"lun"` // Required: Filesystem type to mount. // Must be a filesystem type supported by the host operating system. // Ex. "ext4", "xfs", "ntfs" @@ -747,10 +747,10 @@ type ContainerPort struct { // If specified, this must be a valid port number, 0 < x < 65536. // If HostNetwork is specified, this must match ContainerPort. // Most containers do not need this. - HostPort int `json:"hostPort,omitempty"` + HostPort int32 `json:"hostPort,omitempty"` // Number of port to expose on the pod's IP address. // This must be a valid port number, 0 < x < 65536. - ContainerPort int `json:"containerPort"` + ContainerPort int32 `json:"containerPort"` // Protocol for port. Must be UDP or TCP. // Defaults to "TCP". Protocol Protocol `json:"protocol,omitempty"` @@ -853,20 +853,20 @@ type Probe struct { Handler `json:",inline"` // Number of seconds after the container has started before liveness probes are initiated. // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes - InitialDelaySeconds int64 `json:"initialDelaySeconds,omitempty"` + InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"` // Number of seconds after which the probe times out. // Defaults to 1 second. Minimum value is 1. // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes - TimeoutSeconds int64 `json:"timeoutSeconds,omitempty"` + TimeoutSeconds int32 `json:"timeoutSeconds,omitempty"` // How often (in seconds) to perform the probe. // Default to 10 seconds. Minimum value is 1. - PeriodSeconds int64 `json:"periodSeconds,omitempty"` + PeriodSeconds int32 `json:"periodSeconds,omitempty"` // Minimum consecutive successes for the probe to be considered successful after having failed. // Defaults to 1. Must be 1 for liveness. Minimum value is 1. - SuccessThreshold int `json:"successThreshold,omitempty"` + SuccessThreshold int32 `json:"successThreshold,omitempty"` // Minimum consecutive failures for the probe to be considered failed after having succeeded. // Defaults to 3. Minimum value is 1. - FailureThreshold int `json:"failureThreshold,omitempty"` + FailureThreshold int32 `json:"failureThreshold,omitempty"` } // PullPolicy describes a policy for if/when to pull a container image @@ -1064,9 +1064,9 @@ type ContainerStateRunning struct { // ContainerStateTerminated is a terminated state of a container. type ContainerStateTerminated struct { // Exit status from the last termination of the container - ExitCode int `json:"exitCode"` + ExitCode int32 `json:"exitCode"` // Signal from the last termination of the container - Signal int `json:"signal,omitempty"` + Signal int32 `json:"signal,omitempty"` // (brief) reason from the last termination of the container Reason string `json:"reason,omitempty"` // Message regarding the last termination of the container @@ -1106,7 +1106,7 @@ type ContainerStatus struct { // the number of dead containers that have not yet been removed. // Note that this is calculated from dead containers. But those containers are subject to // garbage collection. This value will get capped at 5 by GC. - RestartCount int `json:"restartCount"` + RestartCount int32 `json:"restartCount"` // The image the container is running. // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md // TODO(dchen1107): Which image the container is running with? @@ -1423,7 +1423,7 @@ type ReplicationControllerSpec struct { // This is a pointer to distinguish between explicit zero and unspecified. // Defaults to 1. // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller - Replicas *int `json:"replicas,omitempty"` + Replicas *int32 `json:"replicas,omitempty"` // Selector is a label query over pods that should match the Replicas count. // If Selector is empty, it is defaulted to the labels present on the Pod template. @@ -1448,7 +1448,7 @@ type ReplicationControllerSpec struct { type ReplicationControllerStatus struct { // Replicas is the most recently oberved number of replicas. // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller - Replicas int `json:"replicas"` + Replicas int32 `json:"replicas"` // ObservedGeneration reflects the generation of the most recently observed replication controller. ObservedGeneration int64 `json:"observedGeneration,omitempty"` @@ -1612,7 +1612,7 @@ type ServicePort struct { Protocol Protocol `json:"protocol,omitempty"` // The port that will be exposed by this service. - Port int `json:"port"` + Port int32 `json:"port"` // Number or name of the port to access on the pods targeted by the service. // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. @@ -1628,7 +1628,7 @@ type ServicePort struct { // if unused or else creation of the service will fail. // Default is to auto-allocate a port if the ServiceType of this Service requires one. // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#type--nodeport - NodePort int `json:"nodePort,omitempty"` + NodePort int32 `json:"nodePort,omitempty"` } // Service is a named abstraction of software service (for example, mysql) consisting of local port @@ -1771,7 +1771,7 @@ type EndpointPort struct { Name string `json:"name,omitempty"` // The port number of the endpoint. - Port int `json:"port"` + Port int32 `json:"port"` // The IP protocol for this port. // Must be UDP or TCP. @@ -1807,7 +1807,7 @@ type NodeSpec struct { // DaemonEndpoint contains information about a single Daemon endpoint. type DaemonEndpoint struct { // Port number of the given endpoint. - Port int `json:port` + Port int32 `json:port` } // NodeDaemonEndpoints lists ports opened by daemons running on the Node. @@ -2258,7 +2258,7 @@ type Event struct { LastTimestamp unversioned.Time `json:"lastTimestamp,omitempty"` // The number of times this event has occurred. - Count int `json:"count,omitempty"` + Count int32 `json:"count,omitempty"` // Type of this event (Normal, Warning), new types could be added in the future Type string `json:"type,omitempty"` diff --git a/pkg/api/validation/validation.go b/pkg/api/validation/validation.go index af9e85c96d..50260b960b 100644 --- a/pkg/api/validation/validation.go +++ b/pkg/api/validation/validation.go @@ -880,8 +880,9 @@ func validateProbe(probe *api.Probe) validation.ErrorList { return allErrs } allErrs = append(allErrs, validateHandler(&probe.Handler)...) - allErrs = append(allErrs, ValidatePositiveField(probe.InitialDelaySeconds, "initialDelaySeconds")...) - allErrs = append(allErrs, ValidatePositiveField(probe.TimeoutSeconds, "timeoutSeconds")...) + + allErrs = append(allErrs, ValidatePositiveField(int64(probe.InitialDelaySeconds), "initialDelaySeconds")...) + allErrs = append(allErrs, ValidatePositiveField(int64(probe.TimeoutSeconds), "timeoutSeconds")...) allErrs = append(allErrs, ValidatePositiveField(int64(probe.PeriodSeconds), "periodSeconds")...) allErrs = append(allErrs, ValidatePositiveField(int64(probe.SuccessThreshold), "successThreshold")...) allErrs = append(allErrs, ValidatePositiveField(int64(probe.FailureThreshold), "failureThreshold")...) @@ -932,7 +933,7 @@ func validateHTTPGetAction(http *api.HTTPGetAction) validation.ErrorList { if len(http.Path) == 0 { allErrors = append(allErrors, validation.NewRequiredError("path")) } - if http.Port.Type == intstr.Int && !validation.IsValidPortNum(http.Port.IntVal) { + if http.Port.Type == intstr.Int && !validation.IsValidPortNum(http.Port.IntValue()) { allErrors = append(allErrors, validation.NewInvalidError("port", http.Port, PortRangeErrorMsg)) } else if http.Port.Type == intstr.String && !validation.IsValidPortName(http.Port.StrVal) { allErrors = append(allErrors, validation.NewInvalidError("port", http.Port.StrVal, PortNameErrorMsg)) @@ -946,7 +947,7 @@ func validateHTTPGetAction(http *api.HTTPGetAction) validation.ErrorList { func validateTCPSocketAction(tcp *api.TCPSocketAction) validation.ErrorList { allErrors := validation.ErrorList{} - if tcp.Port.Type == intstr.Int && !validation.IsValidPortNum(tcp.Port.IntVal) { + if tcp.Port.Type == intstr.Int && !validation.IsValidPortNum(tcp.Port.IntValue()) { allErrors = append(allErrors, validation.NewInvalidError("port", tcp.Port, PortRangeErrorMsg)) } else if tcp.Port.Type == intstr.String && !validation.IsValidPortName(tcp.Port.StrVal) { allErrors = append(allErrors, validation.NewInvalidError("port", tcp.Port.StrVal, PortNameErrorMsg)) @@ -1333,7 +1334,7 @@ func validateServicePort(sp *api.ServicePort, requireName bool, allNames *sets.S allErrs = append(allErrs, validation.NewNotSupportedError("protocol", sp.Protocol, supportedPortProtocols.List())) } - if sp.TargetPort.Type == intstr.Int && !validation.IsValidPortNum(sp.TargetPort.IntVal) { + if sp.TargetPort.Type == intstr.Int && !validation.IsValidPortNum(sp.TargetPort.IntValue()) { allErrs = append(allErrs, validation.NewInvalidError("targetPort", sp.TargetPort, PortRangeErrorMsg)) } if sp.TargetPort.Type == intstr.String && !validation.IsValidPortName(sp.TargetPort.StrVal) { diff --git a/pkg/apis/componentconfig/v1alpha1/defaults.go b/pkg/apis/componentconfig/v1alpha1/defaults.go index d8b8d80d18..32938babe6 100644 --- a/pkg/apis/componentconfig/v1alpha1/defaults.go +++ b/pkg/apis/componentconfig/v1alpha1/defaults.go @@ -34,7 +34,7 @@ func addDefaultingFuncs() { obj.HealthzBindAddress = "127.0.0.1" } if obj.OOMScoreAdj == nil { - temp := qos.KubeProxyOOMScoreAdj + temp := int32(qos.KubeProxyOOMScoreAdj) obj.OOMScoreAdj = &temp } if obj.IPTablesSyncePeriodSeconds == 0 { diff --git a/pkg/apis/componentconfig/v1alpha1/types.go b/pkg/apis/componentconfig/v1alpha1/types.go index fdb64d4d4b..73b4817434 100644 --- a/pkg/apis/componentconfig/v1alpha1/types.go +++ b/pkg/apis/componentconfig/v1alpha1/types.go @@ -21,22 +21,22 @@ import "k8s.io/kubernetes/pkg/api/unversioned" type KubeProxyConfiguration struct { unversioned.TypeMeta - // bindAddress is the IP address for the proxy server to serve on (set to 0.0.0.0 for all interfaces) + // bindAddress is the IP address for the proxy server to serve on (set to 0.0.0.0 for all int32erfaces) BindAddress string `json:"bindAddress"` // cleanupIPTables CleanupIPTables bool `json:"cleanupIPTables"` - // healthzBindAddress is the IP address for the health check server to serve on, defaulting to 127.0.0.1 (set to 0.0.0.0 for all interfaces) + // healthzBindAddress is the IP address for the health check server to serve on, defaulting to 127.0.0.1 (set to 0.0.0.0 for all int32erfaces) HealthzBindAddress string `json:"healthzBindAddress"` // healthzPort is the port to bind the health check server. Use 0 to disable. - HealthzPort int `json:"healthzPort"` + HealthzPort int32 `json:"healthzPort"` // hostnameOverride, if non-empty, will be used as the identity instead of the actual hostname. HostnameOverride string `json:"hostnameOverride"` // iptablesSyncPeriodSeconds is the period that iptables rules are refreshed (e.g. '5s', '1m', '2h22m'). Must be greater than 0. - IPTablesSyncePeriodSeconds int `json:"iptablesSyncPeriodSeconds"` + IPTablesSyncePeriodSeconds int32 `json:"iptablesSyncPeriodSeconds"` // kubeAPIBurst is the burst to use while talking with kubernetes apiserver - KubeAPIBurst int `json:"kubeAPIBurst"` + KubeAPIBurst int32 `json:"kubeAPIBurst"` // kubeAPIQPS is the max QPS to use while talking with kubernetes apiserver - KubeAPIQPS int `json:"kubeAPIQPS"` + KubeAPIQPS int32 `json:"kubeAPIQPS"` // kubeconfigPath is the path to the kubeconfig file with authorization information (the master location is set by the master flag). KubeconfigPath string `json:"kubeconfigPath"` // masqueradeAll tells kube-proxy to SNAT everything if using the pure iptables proxy mode. @@ -44,7 +44,7 @@ type KubeProxyConfiguration struct { // master is the address of the Kubernetes API server (overrides any value in kubeconfig) Master string `json:"master"` // oomScoreAdj is the oom-score-adj value for kube-proxy process. Values must be within the range [-1000, 1000] - OOMScoreAdj *int `json:"oomScoreAdj"` + OOMScoreAdj *int32 `json:"oomScoreAdj"` // mode specifies which proxy mode to use. Mode ProxyMode `json:"mode"` // portRange is the range of host ports (beginPort-endPort, inclusive) that may be consumed in order to proxy service traffic. If unspecified (0-0) then ports will be randomly chosen. @@ -52,7 +52,7 @@ type KubeProxyConfiguration struct { // resourceContainer is the bsolute name of the resource-only container to create and run the Kube-proxy in (Default: /kube-proxy). ResourceContainer string `json:"resourceContainer"` // udpTimeoutMilliseconds is how long an idle UDP connection will be kept open (e.g. '250ms', '2s'). Must be greater than 0. Only applicable for proxyMode=userspace. - UDPTimeoutMilliseconds int `json:"udpTimeoutMilliseconds"` + UDPTimeoutMilliseconds int32 `json:"udpTimeoutMilliseconds"` } // Currently two modes of proxying are available: 'userspace' (older, stable) or 'iptables' (experimental). If blank, look at the Node object on the Kubernetes API and respect the 'net.experimental.kubernetes.io/proxy-mode' annotation if provided. Otherwise use the best-available proxy (currently userspace, but may change in future versions). If the iptables proxy is selected, regardless of how, but the system's kernel or iptables versions are insufficient, this always falls back to the userspace proxy. diff --git a/pkg/apis/extensions/v1beta1/conversion.go b/pkg/apis/extensions/v1beta1/conversion.go index bacdba174b..1d7da2a0b2 100644 --- a/pkg/apis/extensions/v1beta1/conversion.go +++ b/pkg/apis/extensions/v1beta1/conversion.go @@ -203,8 +203,8 @@ func convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec(in *extensions. if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found { defaulting.(func(*extensions.DeploymentSpec))(in) } - out.Replicas = new(int) - *out.Replicas = in.Replicas + out.Replicas = new(int32) + *out.Replicas = int32(in.Replicas) if in.Selector != nil { out.Selector = make(map[string]string) for key, val := range in.Selector { @@ -229,7 +229,7 @@ func convert_v1beta1_DeploymentSpec_To_extensions_DeploymentSpec(in *DeploymentS defaulting.(func(*DeploymentSpec))(in) } if in.Replicas != nil { - out.Replicas = *in.Replicas + out.Replicas = int(*in.Replicas) } if in.Selector != nil { out.Selector = make(map[string]string) @@ -299,7 +299,7 @@ func convert_extensions_RollingUpdateDeployment_To_v1beta1_RollingUpdateDeployme if err := s.Convert(&in.MaxSurge, out.MaxSurge, 0); err != nil { return err } - out.MinReadySeconds = in.MinReadySeconds + out.MinReadySeconds = int32(in.MinReadySeconds) return nil } @@ -313,7 +313,7 @@ func convert_v1beta1_RollingUpdateDeployment_To_extensions_RollingUpdateDeployme if err := s.Convert(in.MaxSurge, &out.MaxSurge, 0); err != nil { return err } - out.MinReadySeconds = in.MinReadySeconds + out.MinReadySeconds = int(in.MinReadySeconds) return nil } diff --git a/pkg/apis/extensions/v1beta1/defaults.go b/pkg/apis/extensions/v1beta1/defaults.go index 0ada5cbf93..96f7ed10dd 100644 --- a/pkg/apis/extensions/v1beta1/defaults.go +++ b/pkg/apis/extensions/v1beta1/defaults.go @@ -59,7 +59,7 @@ func addDefaultingFuncs() { } // Set DeploymentSpec.Replicas to 1 if it is not set. if obj.Spec.Replicas == nil { - obj.Spec.Replicas = new(int) + obj.Spec.Replicas = new(int32) *obj.Spec.Replicas = 1 } strategy := &obj.Spec.Strategy @@ -102,7 +102,7 @@ func addDefaultingFuncs() { } } if obj.Spec.Completions == nil { - completions := 1 + completions := int32(1) obj.Spec.Completions = &completions } if obj.Spec.Parallelism == nil { @@ -111,7 +111,7 @@ func addDefaultingFuncs() { }, func(obj *HorizontalPodAutoscaler) { if obj.Spec.MinReplicas == nil { - minReplicas := 1 + minReplicas := int32(1) obj.Spec.MinReplicas = &minReplicas } if obj.Spec.CPUUtilization == nil { diff --git a/pkg/apis/extensions/v1beta1/types.go b/pkg/apis/extensions/v1beta1/types.go index 6e80704703..e691e11636 100644 --- a/pkg/apis/extensions/v1beta1/types.go +++ b/pkg/apis/extensions/v1beta1/types.go @@ -25,13 +25,13 @@ import ( // describes the attributes of a scale subresource type ScaleSpec struct { // desired number of instances for the scaled object. - Replicas int `json:"replicas,omitempty"` + Replicas int32 `json:"replicas,omitempty"` } // represents the current status of a scale subresource. type ScaleStatus struct { // actual number of observed instances of the scaled object. - Replicas int `json:"replicas"` + Replicas int32 `json:"replicas"` // label query over pods that should match the replicas count. More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors Selector map[string]string `json:"selector,omitempty"` @@ -70,7 +70,7 @@ type SubresourceReference struct { type CPUTargetUtilization struct { // fraction of the requested CPU that should be utilized/used, // e.g. 70 means that 70% of the requested CPU should be in use. - TargetPercentage int `json:"targetPercentage"` + TargetPercentage int32 `json:"targetPercentage"` } // specification of a horizontal pod autoscaler. @@ -79,9 +79,9 @@ type HorizontalPodAutoscalerSpec struct { // and will set the desired number of pods by modifying its spec. ScaleRef SubresourceReference `json:"scaleRef"` // lower limit for the number of pods that can be set by the autoscaler, default 1. - MinReplicas *int `json:"minReplicas,omitempty"` + MinReplicas *int32 `json:"minReplicas,omitempty"` // upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas. - MaxReplicas int `json:"maxReplicas"` + MaxReplicas int32 `json:"maxReplicas"` // target average CPU utilization (represented as a percentage of requested CPU) over all the pods; // if not specified it defaults to the target CPU utilization at 80% of the requested resources. CPUUtilization *CPUTargetUtilization `json:"cpuUtilization,omitempty"` @@ -97,14 +97,14 @@ type HorizontalPodAutoscalerStatus struct { LastScaleTime *unversioned.Time `json:"lastScaleTime,omitempty"` // current number of replicas of pods managed by this autoscaler. - CurrentReplicas int `json:"currentReplicas"` + CurrentReplicas int32 `json:"currentReplicas"` // desired number of replicas of pods managed by this autoscaler. - DesiredReplicas int `json:"desiredReplicas"` + DesiredReplicas int32 `json:"desiredReplicas"` // current average CPU utilization over all pods, represented as a percentage of requested CPU, // e.g. 70 means that an average pod is using now 70% of its requested CPU. - CurrentCPUUtilizationPercentage *int `json:"currentCPUUtilizationPercentage,omitempty"` + CurrentCPUUtilizationPercentage *int32 `json:"currentCPUUtilizationPercentage,omitempty"` } // configuration of a horizontal pod autoscaler. @@ -192,7 +192,7 @@ type Deployment struct { type DeploymentSpec struct { // Number of desired pods. This is a pointer to distinguish between explicit // zero and not specified. Defaults to 1. - Replicas *int `json:"replicas,omitempty"` + Replicas *int32 `json:"replicas,omitempty"` // Label selector for pods. Existing ReplicationControllers whose pods are // selected by this will be the ones affected by this deployment. @@ -268,16 +268,16 @@ type RollingUpdateDeployment struct { // 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. // Defaults to 0 (pod will be considered available as soon as it is ready) - MinReadySeconds int `json:"minReadySeconds,omitempty"` + MinReadySeconds int32 `json:"minReadySeconds,omitempty"` } // DeploymentStatus is the most recently observed status of the Deployment. type DeploymentStatus struct { // Total number of non-terminated pods targeted by this deployment (their labels match the selector). - Replicas int `json:"replicas,omitempty"` + Replicas int32 `json:"replicas,omitempty"` // Total number of non-terminated pods targeted by this deployment that have the desired template spec. - UpdatedReplicas int `json:"updatedReplicas,omitempty"` + UpdatedReplicas int32 `json:"updatedReplicas,omitempty"` } // DeploymentList is a list of Deployments. @@ -311,17 +311,17 @@ type DaemonSetStatus struct { // CurrentNumberScheduled is the number of nodes that are running at least 1 // daemon pod and are supposed to run the daemon pod. // More info: http://releases.k8s.io/HEAD/docs/admin/daemon.md - CurrentNumberScheduled int `json:"currentNumberScheduled"` + CurrentNumberScheduled int32 `json:"currentNumberScheduled"` // NumberMisscheduled is the number of nodes that are running the daemon pod, but are // not supposed to run the daemon pod. // More info: http://releases.k8s.io/HEAD/docs/admin/daemon.md - NumberMisscheduled int `json:"numberMisscheduled"` + NumberMisscheduled int32 `json:"numberMisscheduled"` // DesiredNumberScheduled is the total number of nodes that should be running the daemon // pod (including nodes correctly running the daemon pod). // More info: http://releases.k8s.io/HEAD/docs/admin/daemon.md - DesiredNumberScheduled int `json:"desiredNumberScheduled"` + DesiredNumberScheduled int32 `json:"desiredNumberScheduled"` } // DaemonSet represents the configuration of a daemon set. @@ -400,12 +400,12 @@ type JobSpec struct { // be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), // i.e. when the work left to do is less than max parallelism. // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md - Parallelism *int `json:"parallelism,omitempty"` + Parallelism *int32 `json:"parallelism,omitempty"` // Completions specifies the desired number of successfully finished pods the // job should be run with. Defaults to 1. // More info: http://releases.k8s.io/HEAD/docs/user-guide/jobs.md - Completions *int `json:"completions,omitempty"` + Completions *int32 `json:"completions,omitempty"` // Selector is a label query over pods that should match the pod count. // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors @@ -435,13 +435,13 @@ type JobStatus struct { CompletionTime *unversioned.Time `json:"completionTime,omitempty"` // Active is the number of actively running pods. - Active int `json:"active,omitempty"` + Active int32 `json:"active,omitempty"` // Succeeded is the number of pods which reached Phase Succeeded. - Succeeded int `json:"succeeded,omitempty"` + Succeeded int32 `json:"succeeded,omitempty"` // Failed is the number of pods which reached Phase Failed. - Failed int `json:"failed,omitempty"` + Failed int32 `json:"failed,omitempty"` } type JobConditionType string @@ -621,10 +621,10 @@ type NodeUtilization struct { // Configuration of the Cluster Autoscaler type ClusterAutoscalerSpec struct { // Minimum number of nodes that the cluster should have. - MinNodes int `json:"minNodes"` + MinNodes int32 `json:"minNodes"` // Maximum number of nodes that the cluster should have. - MaxNodes int `json:"maxNodes"` + MaxNodes int32 `json:"maxNodes"` // Target average utilization of the cluster nodes. New nodes will be added if one of the // targets is exceeded. Cluster size will be decreased if the current utilization is too low diff --git a/pkg/apis/extensions/validation/validation.go b/pkg/apis/extensions/validation/validation.go index df4a88bc87..932aa7ef12 100644 --- a/pkg/apis/extensions/validation/validation.go +++ b/pkg/apis/extensions/validation/validation.go @@ -249,7 +249,7 @@ func getIntOrPercentValue(intOrStringValue intstr.IntOrString) int { if isPercent { return value } - return intOrStringValue.IntVal + return intOrStringValue.IntValue() } func IsNotMoreThan100Percent(intOrStringValue intstr.IntOrString, fieldName string) validation.ErrorList { @@ -525,7 +525,7 @@ func validateIngressBackend(backend *extensions.IngressBackend) validation.Error if !validation.IsValidPortName(backend.ServicePort.StrVal) { allErrs = append(allErrs, validation.NewInvalidError("servicePort", backend.ServicePort.StrVal, apivalidation.PortNameErrorMsg)) } - } else if !validation.IsValidPortNum(backend.ServicePort.IntVal) { + } else if !validation.IsValidPortNum(backend.ServicePort.IntValue()) { allErrs = append(allErrs, validation.NewInvalidError("servicePort", backend.ServicePort, apivalidation.PortRangeErrorMsg)) } return allErrs diff --git a/pkg/apiserver/apiserver.go b/pkg/apiserver/apiserver.go index 1e4efd1e50..6e645503d9 100644 --- a/pkg/apiserver/apiserver.go +++ b/pkg/apiserver/apiserver.go @@ -420,8 +420,9 @@ func prettyJSON(codec runtime.Codec, object runtime.Object, w http.ResponseWrite // errorJSON renders an error to the response. Returns the HTTP status code of the error. func errorJSON(err error, codec runtime.Codec, w http.ResponseWriter) int { status := errToAPIStatus(err) - writeJSON(status.Code, codec, status, w, true) - return status.Code + code := int(status.Code) + writeJSON(code, codec, status, w, true) + return code } // errorJSONFatal renders an error to the response, and if codec fails will render plaintext. @@ -429,16 +430,17 @@ func errorJSON(err error, codec runtime.Codec, w http.ResponseWriter) int { func errorJSONFatal(err error, codec runtime.Codec, w http.ResponseWriter) int { util.HandleError(fmt.Errorf("apiserver was unable to write a JSON response: %v", err)) status := errToAPIStatus(err) + code := int(status.Code) output, err := codec.Encode(status) if err != nil { - w.WriteHeader(status.Code) + w.WriteHeader(code) fmt.Fprintf(w, "%s: %s", status.Reason, status.Message) - return status.Code + return code } w.Header().Set("Content-Type", "application/json") - w.WriteHeader(status.Code) + w.WriteHeader(code) w.Write(output) - return status.Code + return code } // writeRawJSON writes a non-API object in JSON. diff --git a/pkg/apiserver/errors.go b/pkg/apiserver/errors.go index 00508be4c8..f83704a4f2 100644 --- a/pkg/apiserver/errors.go +++ b/pkg/apiserver/errors.go @@ -62,7 +62,7 @@ func errToAPIStatus(err error) *unversioned.Status { util.HandleError(fmt.Errorf("apiserver received an error that is not an unversioned.Status: %v", err)) return &unversioned.Status{ Status: unversioned.StatusFailure, - Code: status, + Code: int32(status), Reason: unversioned.StatusReasonUnknown, Message: err.Error(), } diff --git a/pkg/apiserver/proxy.go b/pkg/apiserver/proxy.go index d693f78a7e..6740dd0816 100644 --- a/pkg/apiserver/proxy.go +++ b/pkg/apiserver/proxy.go @@ -109,8 +109,9 @@ func (r *ProxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { if err != nil { httplog.LogOf(req, w).Addf("Error getting ResourceLocation: %v", err) status := errToAPIStatus(err) - writeJSON(status.Code, r.codec, status, w, true) - httpCode = status.Code + code := int(status.Code) + writeJSON(code, r.codec, status, w, true) + httpCode = code return } if location == nil { @@ -144,9 +145,10 @@ func (r *ProxyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) { newReq, err := http.NewRequest(req.Method, location.String(), req.Body) if err != nil { status := errToAPIStatus(err) - writeJSON(status.Code, r.codec, status, w, true) + code := int(status.Code) + writeJSON(code, r.codec, status, w, true) notFound(w, req) - httpCode = status.Code + httpCode = code return } httpCode = http.StatusOK @@ -211,7 +213,8 @@ func (r *ProxyHandler) tryUpgrade(w http.ResponseWriter, req, newReq *http.Reque backendConn, err := proxyutil.DialURL(location, transport) if err != nil { status := errToAPIStatus(err) - writeJSON(status.Code, r.codec, status, w, true) + code := int(status.Code) + writeJSON(code, r.codec, status, w, true) return true } defer backendConn.Close() @@ -222,14 +225,16 @@ func (r *ProxyHandler) tryUpgrade(w http.ResponseWriter, req, newReq *http.Reque requestHijackedConn, _, err := w.(http.Hijacker).Hijack() if err != nil { status := errToAPIStatus(err) - writeJSON(status.Code, r.codec, status, w, true) + code := int(status.Code) + writeJSON(code, r.codec, status, w, true) return true } defer requestHijackedConn.Close() if err = newReq.Write(backendConn); err != nil { status := errToAPIStatus(err) - writeJSON(status.Code, r.codec, status, w, true) + code := int(status.Code) + writeJSON(code, r.codec, status, w, true) return true } diff --git a/pkg/controller/endpoint/endpoints_controller.go b/pkg/controller/endpoint/endpoints_controller.go index be2f4a6cbe..e86353cf6e 100644 --- a/pkg/controller/endpoint/endpoints_controller.go +++ b/pkg/controller/endpoint/endpoints_controller.go @@ -419,7 +419,7 @@ func findPort(pod *api.Pod, svcPort *api.ServicePort) (int, error) { } } case intstr.Int: - return portName.IntVal, nil + return portName.IntValue(), nil } return 0, fmt.Errorf("no suitable port for manifest: %s", pod.UID) diff --git a/pkg/kubectl/rolling_updater.go b/pkg/kubectl/rolling_updater.go index 7639cf981a..61cb81041c 100644 --- a/pkg/kubectl/rolling_updater.go +++ b/pkg/kubectl/rolling_updater.go @@ -489,7 +489,7 @@ func extractMaxValue(field intstr.IntOrString, name string, value int) (int, err if field.IntVal < 0 { return 0, fmt.Errorf("%s must be >= 0", name) } - return field.IntVal, nil + return field.IntValue(), nil case intstr.String: s := strings.Replace(field.StrVal, "%", "", -1) v, err := strconv.Atoi(s) diff --git a/pkg/kubelet/lifecycle/handlers.go b/pkg/kubelet/lifecycle/handlers.go index 354a186e6e..a24145713e 100644 --- a/pkg/kubelet/lifecycle/handlers.go +++ b/pkg/kubelet/lifecycle/handlers.go @@ -68,19 +68,17 @@ func (hr *HandlerRunner) Run(containerID kubecontainer.ContainerID, pod *api.Pod // port is found, an error is returned. func resolvePort(portReference intstr.IntOrString, container *api.Container) (int, error) { if portReference.Type == intstr.Int { - return portReference.IntVal, nil - } else { - portName := portReference.StrVal - port, err := strconv.Atoi(portName) - if err == nil { - return port, nil + return portReference.IntValue(), nil + } + portName := portReference.StrVal + port, err := strconv.Atoi(portName) + if err == nil { + return port, nil + } + for _, portSpec := range container.Ports { + if portSpec.Name == portName { + return portSpec.ContainerPort, nil } - for _, portSpec := range container.Ports { - if portSpec.Name == portName { - return portSpec.ContainerPort, nil - } - } - } return -1, fmt.Errorf("couldn't find port: %v in %v", portReference, container) } diff --git a/pkg/kubelet/prober/prober.go b/pkg/kubelet/prober/prober.go index 7a7d85676c..0ebff53484 100644 --- a/pkg/kubelet/prober/prober.go +++ b/pkg/kubelet/prober/prober.go @@ -163,7 +163,7 @@ func extractPort(param intstr.IntOrString, container api.Container) (int, error) var err error switch param.Type { case intstr.Int: - port = param.IntVal + port = param.IntValue() case intstr.String: if port, err = findPortByName(container, param.StrVal); err != nil { // Last ditch effort - maybe it was an int stored as string? diff --git a/pkg/kubelet/prober/worker.go b/pkg/kubelet/prober/worker.go index bb6febdd14..ee217c4eee 100644 --- a/pkg/kubelet/prober/worker.go +++ b/pkg/kubelet/prober/worker.go @@ -163,7 +163,7 @@ func (w *worker) doProbe() (keepGoing bool) { w.pod.Spec.RestartPolicy != api.RestartPolicyNever } - if int64(time.Since(c.State.Running.StartedAt.Time).Seconds()) < w.spec.InitialDelaySeconds { + if int(time.Since(c.State.Running.StartedAt.Time).Seconds()) < w.spec.InitialDelaySeconds { return true } diff --git a/pkg/util/intstr/intstr.go b/pkg/util/intstr/intstr.go index 07fed23d7a..426375e397 100644 --- a/pkg/util/intstr/intstr.go +++ b/pkg/util/intstr/intstr.go @@ -24,13 +24,13 @@ import ( "github.com/google/gofuzz" ) -// IntOrString is a type that can hold an int or a string. When used in +// IntOrString is a type that can hold an int32 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 + IntVal int32 StrVal string } @@ -44,7 +44,7 @@ const ( // FromInt creates an IntOrString object with an int value. func FromInt(val int) IntOrString { - return IntOrString{Type: Int, IntVal: val} + return IntOrString{Type: Int, IntVal: int32(val)} } // FromString creates an IntOrString object with a string value. @@ -67,7 +67,17 @@ func (intstr *IntOrString) String() string { if intstr.Type == String { return intstr.StrVal } - return strconv.Itoa(intstr.IntVal) + return strconv.Itoa(intstr.IntValue()) +} + +// IntValue returns the IntVal cast as int32 if type Int, or if +// it is a String, will attempt a conversion to int. +func (intstr *IntOrString) IntValue() int { + if intstr.Type == String { + i, _ := strconv.Atoi(intstr.StrVal) + return i + } + return int(intstr.IntVal) } // MarshalJSON implements the json.Marshaller interface. diff --git a/pkg/util/util.go b/pkg/util/util.go index db1a724e5a..2d386f4fc3 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -136,14 +136,14 @@ func Until(f func(), period time.Duration, stopCh <-chan struct{}) { func GetIntOrPercentValue(intOrStr *intstr.IntOrString) (int, bool, error) { switch intOrStr.Type { case intstr.Int: - return intOrStr.IntVal, false, nil + return intOrStr.IntValue(), false, nil case intstr.String: s := strings.Replace(intOrStr.StrVal, "%", "", -1) v, err := strconv.Atoi(s) if err != nil { return 0, false, fmt.Errorf("invalid value %q: %v", intOrStr.StrVal, err) } - return v, true, nil + return int(v), true, nil } return 0, false, fmt.Errorf("invalid value: neither int nor percentage") } diff --git a/test/e2e/kubectl.go b/test/e2e/kubectl.go index b8d050f2d7..39d6c92ea3 100644 --- a/test/e2e/kubectl.go +++ b/test/e2e/kubectl.go @@ -616,7 +616,7 @@ var _ = Describe("Kubectl client", func() { if port.Port != servicePort { Failf("Wrong service port: %d", port.Port) } - if port.TargetPort.IntVal != redisPort { + if port.TargetPort.IntValue() != redisPort { Failf("Wrong target port: %d") } }