Skip to content
Snippets Groups Projects
Commit ca460f08 authored by Lukasz Lopatowski's avatar Lukasz Lopatowski
Browse files

Fixed StatefulSet handling

parent 6e2a742b
No related branches found
No related tags found
No related merge requests found
...@@ -222,7 +222,7 @@ func (s *configServiceServer) DeleteIfExists(ctx context.Context, req *v1.Instan ...@@ -222,7 +222,7 @@ func (s *configServiceServer) DeleteIfExists(ctx context.Context, req *v1.Instan
//check if configmap exist //check if configmap exist
_, err = s.kubeAPI.CoreV1().ConfigMaps(depl.Namespace).Get(depl.Uid, metav1.GetOptions{}) _, err = s.kubeAPI.CoreV1().ConfigMaps(depl.Namespace).Get(depl.Uid, metav1.GetOptions{})
if err != nil { 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 //delete configmap
...@@ -414,25 +414,29 @@ func (s *readinessServiceServer) CheckIfReady(ctx context.Context, req *v1.Insta ...@@ -414,25 +414,29 @@ func (s *readinessServiceServer) CheckIfReady(ctx context.Context, req *v1.Insta
return prepareResponse(v1.Status_FAILED, namespaceNotFound), err 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{}) dep, err := s.kubeAPI.ExtensionsV1beta1().Deployments(depl.Namespace).Get(depl.Uid, metav1.GetOptions{})
if err == nil { if err != nil {
if *dep.Spec.Replicas == dep.Status.ReadyReplicas { log.Print("deployment not found, looking for statefulset and checking its status")
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
sts, err2 := s.kubeAPI.AppsV1().StatefulSets(depl.Namespace).Get(depl.Uid, metav1.GetOptions{}) 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 { if *sts.Spec.Replicas == sts.Status.ReadyReplicas {
return prepareResponse(v1.Status_OK, "StatefulSet is ready"), nil 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) { func (s *informationServiceServer) RetrieveServiceIp(ctx context.Context, req *v1.InstanceRequest) (*v1.InfoServiceResponse, error) {
......
...@@ -114,17 +114,17 @@ func TestReadinessServiceServer_CheckIfReadyWithStatefulSet(t *testing.T) { ...@@ -114,17 +114,17 @@ func TestReadinessServiceServer_CheckIfReadyWithStatefulSet(t *testing.T) {
} }
//create mock statefulset that is fully deployed //create mock statefulset that is fully deployed
sts := appsv1.StatefulSet{} sts := appsv1.StatefulSet{}
sts.Name = "test-uid" sts.Name = "test-uid"
q := int32(5) q := int32(5)
sts.Spec.Replicas = &q sts.Spec.Replicas = &q
sts.Status.ReadyReplicas = q sts.Status.ReadyReplicas = q
_, _ = client.AppsV1().StatefulSets("test-namespace").Create(&sts) _, _ = client.AppsV1().StatefulSets("test-namespace").Create(&sts)
res, err = server.CheckIfReady(context.Background(), &req) res, err = server.CheckIfReady(context.Background(), &req)
if err != nil || res.Status != v1.Status_OK { if err != nil || res.Status != v1.Status_OK {
t.Fail() t.Fail()
} }
} }
func TestInformationServiceServer_RetrieveServiceIp(t *testing.T) { func TestInformationServiceServer_RetrieveServiceIp(t *testing.T) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment