diff --git a/pkg/service/v1/config-service.go b/pkg/service/v1/config-service.go index 25747d95b9c83c5ac1c6e3c99a34e484abbe29af..6bdfadaa56d9f6f3e85801861292f33746815183 100644 --- a/pkg/service/v1/config-service.go +++ b/pkg/service/v1/config-service.go @@ -222,7 +222,7 @@ func (s *configServiceServer) DeleteIfExists(ctx context.Context, req *v1.Instan //check if configmap exist _, err = s.kubeAPI.CoreV1().ConfigMaps(depl.Namespace).Get(depl.Uid, metav1.GetOptions{}) if err != nil { - return prepareResponse(v1.Status_OK,"ConfigMap not exists or is unavailable"), nil + return prepareResponse(v1.Status_OK, "ConfigMap not exists or is unavailable"), nil } //delete configmap @@ -414,25 +414,29 @@ func (s *readinessServiceServer) CheckIfReady(ctx context.Context, req *v1.Insta return prepareResponse(v1.Status_FAILED, namespaceNotFound), err } - //looking for deployment and checking its status + log.Print("looking for deployment and checking its status") dep, err := s.kubeAPI.ExtensionsV1beta1().Deployments(depl.Namespace).Get(depl.Uid, metav1.GetOptions{}) - if err == nil { - if *dep.Spec.Replicas == dep.Status.ReadyReplicas { - return prepareResponse(v1.Status_OK, "Deployment is ready"), nil - } - return prepareResponse(v1.Status_PENDING, "Waiting for deployment"), err - } else { - //deployment not found, looking for statefulset and checking its status + if err != nil { + log.Print("deployment not found, looking for statefulset and checking its status") sts, err2 := s.kubeAPI.AppsV1().StatefulSets(depl.Namespace).Get(depl.Uid, metav1.GetOptions{}) - if err2 == nil { + if err2 != nil { + log.Print("statefulset not found as well") + return prepareResponse(v1.Status_FAILED, "Neither Deployment nor StatefulSet found!"), err2 + } else { + log.Print("statefulset found, verifying status") if *sts.Spec.Replicas == sts.Status.ReadyReplicas { return prepareResponse(v1.Status_OK, "StatefulSet is ready"), nil } - return prepareResponse(v1.Status_PENDING, "Waiting for deployment"), err + return prepareResponse(v1.Status_PENDING, "Waiting for statefulset"), nil + } + } else { + log.Print("deployment found, verifying status") + if *dep.Spec.Replicas == dep.Status.ReadyReplicas { + return prepareResponse(v1.Status_OK, "Deployment is ready"), nil } + return prepareResponse(v1.Status_PENDING, "Waiting for deployment"), nil } - return prepareResponse(v1.Status_FAILED, "Neither Deployment nor StatefulSet found!"), err } func (s *informationServiceServer) RetrieveServiceIp(ctx context.Context, req *v1.InstanceRequest) (*v1.InfoServiceResponse, error) { diff --git a/pkg/service/v1/config-service_test.go b/pkg/service/v1/config-service_test.go index d536e353f034ee82c4aef2e34caefe0d058e97a8..48aa0cfb3eb08dffbc460668472e922d7fed1005 100644 --- a/pkg/service/v1/config-service_test.go +++ b/pkg/service/v1/config-service_test.go @@ -114,17 +114,17 @@ func TestReadinessServiceServer_CheckIfReadyWithStatefulSet(t *testing.T) { } //create mock statefulset that is fully deployed - sts := appsv1.StatefulSet{} - sts.Name = "test-uid" - q := int32(5) - sts.Spec.Replicas = &q - sts.Status.ReadyReplicas = q - _, _ = client.AppsV1().StatefulSets("test-namespace").Create(&sts) - - res, err = server.CheckIfReady(context.Background(), &req) - if err != nil || res.Status != v1.Status_OK { - t.Fail() - } + sts := appsv1.StatefulSet{} + sts.Name = "test-uid" + q := int32(5) + sts.Spec.Replicas = &q + sts.Status.ReadyReplicas = q + _, _ = client.AppsV1().StatefulSets("test-namespace").Create(&sts) + + res, err = server.CheckIfReady(context.Background(), &req) + if err != nil || res.Status != v1.Status_OK { + t.Fail() + } } func TestInformationServiceServer_RetrieveServiceIp(t *testing.T) {