From 63951be9f84a514ef16c552b3ce0f49b2428cc30 Mon Sep 17 00:00:00 2001 From: Rafael Acevedo Date: Wed, 30 Oct 2019 19:08:41 -0300 Subject: [PATCH] avoid lossy type conversion when parsing number of available replicas (#1800) --- pkg/apis/common/v1beta1/common.go | 2 +- pkg/controller/apmserver/state.go | 2 +- pkg/controller/elasticsearch/reconcile/state.go | 4 ++-- pkg/controller/kibana/state.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/apis/common/v1beta1/common.go b/pkg/apis/common/v1beta1/common.go index cc6c24506c3..f9e7567d3b6 100644 --- a/pkg/apis/common/v1beta1/common.go +++ b/pkg/apis/common/v1beta1/common.go @@ -16,7 +16,7 @@ import ( // ReconcilerStatus represents status information about desired/available nodes. type ReconcilerStatus struct { - AvailableNodes int `json:"availableNodes,omitempty"` + AvailableNodes int64 `json:"availableNodes,omitempty"` } // SecretRef is a reference to a secret that exists in the same namespace. diff --git a/pkg/controller/apmserver/state.go b/pkg/controller/apmserver/state.go index d69e85dc090..a836ec51ad1 100644 --- a/pkg/controller/apmserver/state.go +++ b/pkg/controller/apmserver/state.go @@ -30,7 +30,7 @@ func NewState(request reconcile.Request, as *v1beta1.ApmServer) State { // UpdateApmServerState updates the ApmServer status based on the given deployment. func (s State) UpdateApmServerState(deployment v1.Deployment, apmServerSecret corev1.Secret) { s.ApmServer.Status.SecretTokenSecretName = apmServerSecret.Name - s.ApmServer.Status.AvailableNodes = int(deployment.Status.AvailableReplicas) // TODO lossy type conversion + s.ApmServer.Status.AvailableNodes = int64(deployment.Status.AvailableReplicas) s.ApmServer.Status.Health = v1beta1.ApmServerRed for _, c := range deployment.Status.Conditions { if c.Type == v1.DeploymentAvailable && c.Status == corev1.ConditionTrue { diff --git a/pkg/controller/elasticsearch/reconcile/state.go b/pkg/controller/elasticsearch/reconcile/state.go index 720234e1e37..efd43bbeb79 100644 --- a/pkg/controller/elasticsearch/reconcile/state.go +++ b/pkg/controller/elasticsearch/reconcile/state.go @@ -43,7 +43,7 @@ func (s *State) updateWithPhase( resourcesState ResourcesState, observedState observer.State, ) *State { - s.status.AvailableNodes = len(AvailableElasticsearchNodes(resourcesState.CurrentPods)) + s.status.AvailableNodes = int64(len(AvailableElasticsearchNodes(resourcesState.CurrentPods))) s.status.Phase = phase s.status.Health = v1beta1.ElasticsearchUnknownHealth @@ -76,7 +76,7 @@ func (s *State) IsElasticsearchReady(observedState observer.State) bool { // UpdateElasticsearchApplyingChanges marks Elasticsearch as being the applying changes phase in the resource status. func (s *State) UpdateElasticsearchApplyingChanges(pods []corev1.Pod) *State { - s.status.AvailableNodes = len(AvailableElasticsearchNodes(pods)) + s.status.AvailableNodes = int64(len(AvailableElasticsearchNodes(pods))) s.status.Phase = v1beta1.ElasticsearchApplyingChangesPhase s.status.Health = v1beta1.ElasticsearchRedHealth return s diff --git a/pkg/controller/kibana/state.go b/pkg/controller/kibana/state.go index b7475014bfe..d085b32f06f 100644 --- a/pkg/controller/kibana/state.go +++ b/pkg/controller/kibana/state.go @@ -28,7 +28,7 @@ func NewState(request reconcile.Request, kb *v1beta1.Kibana) State { // UpdateKibanaState updates the Kibana status based on the given deployment. func (s State) UpdateKibanaState(deployment v1.Deployment) { - s.Kibana.Status.AvailableNodes = int(deployment.Status.AvailableReplicas) // TODO lossy type conversion + s.Kibana.Status.AvailableNodes = int64(deployment.Status.AvailableReplicas) s.Kibana.Status.Health = v1beta1.KibanaRed for _, c := range deployment.Status.Conditions { if c.Type == v1.DeploymentAvailable && c.Status == corev1.ConditionTrue {