diff --git a/pkg/operator/ceph/object/user/controller.go b/pkg/operator/ceph/object/user/controller.go index 87f99e651..ce69d97c6 100644 --- a/pkg/operator/ceph/object/user/controller.go +++ b/pkg/operator/ceph/object/user/controller.go @@ -191,9 +191,9 @@ func deleteUser(context *clusterd.Context, u *cephv1.CephObjectStoreUser) error } } - err = context.Clientset.CoreV1().Secrets(u.Namespace).Delete("rook-ceph-object-user-"+u.Name, &metav1.DeleteOptions{}) + err = context.Clientset.CoreV1().Secrets(u.Namespace).Delete(fmt.Sprintf("rook-ceph-object-user-%s-%s", u.Spec.Store, u.Name), &metav1.DeleteOptions{}) if err != nil { - logger.Warningf("failed to delete user %s secret. %+v", u.Name, err) + logger.Warningf("failed to delete user %s secret. %+v", fmt.Sprintf("rook-ceph-object-user-%s-%s", u.Spec.Store, u.Name), err) } logger.Infof("user %s deleted successfully", u.Name) diff --git a/tests/framework/clients/object_user.go b/tests/framework/clients/object_user.go index 547f046f2..b17c64938 100644 --- a/tests/framework/clients/object_user.go +++ b/tests/framework/clients/object_user.go @@ -22,6 +22,7 @@ import ( rgw "github.com/rook/rook/pkg/operator/ceph/object" "github.com/rook/rook/tests/framework/installer" "github.com/rook/rook/tests/framework/utils" + "strings" ) // ObjectUserOperation is wrapper for k8s rook object user operations @@ -48,8 +49,12 @@ func (o *ObjectUserOperation) GetUser(namespace string, store string, userid str // UserSecretExists Function to check that user secret was created func (o *ObjectUserOperation) UserSecretExists(namespace string, store string, userid string) bool { - _, err := o.k8sh.GetResource("-n", namespace, "secrets", "-l", "rook_object_store="+store, "-l", "user="+userid) - if err == nil { + message, err := o.k8sh.GetResource("-n", namespace, "secrets", "-l", "rook_object_store="+store, "-l", "user="+userid) + //GetResource(blah) returns success if blah is or is not found. + //err = success and found_sec not "No resources found." means it was found + //err = success and found_sec contains "No resources found." means it was not found + //err != success is an other error + if err == nil && !strings.Contains(message, "No resources found.") { logger.Infof("Object User Secret Exists") return true } @@ -70,7 +75,7 @@ func (o *ObjectUserOperation) Create(namespace string, userid string, displayNam func (o *ObjectUserOperation) Delete(namespace string, userid string) error { logger.Infof("Deleting the object store user via CRD") - if err := o.k8sh.DeleteResource("-n", namespace, "ObjectStoreUser", userid); err != nil { + if err := o.k8sh.DeleteResource("-n", namespace, "CephObjectStoreUser", userid); err != nil { return err } return nil diff --git a/tests/integration/base_object_test.go b/tests/integration/base_object_test.go index 51b19d7c9..918c47567 100644 --- a/tests/integration/base_object_test.go +++ b/tests/integration/base_object_test.go @@ -56,13 +56,20 @@ func runObjectE2ETest(helper *clients.TestClient, k8sh *utils.K8sHelper, s suite logger.Infof("Step 1 : Create Object Store User") cosuErr := helper.ObjectUserClient.Create(namespace, userid, userdisplayname, storeName) require.Nil(s.T(), cosuErr) - logger.Infof("Waiting 5 seconds to ensure user was created") - time.Sleep(5 * time.Second) - require.True(s.T(), helper.ObjectUserClient.UserSecretExists(namespace, userid, storeName), "make sure user secret was created") + logger.Infof("Waiting 10 seconds to ensure user was created") + time.Sleep(10 * time.Second) userInfo, gosuErr := helper.ObjectUserClient.GetUser(namespace, storeName, userid) require.Nil(s.T(), gosuErr) require.Equal(s.T(), userid, userInfo.UserID) require.Equal(s.T(), userdisplayname, *userInfo.DisplayName) + logger.Infof("Checking to see if the user secret has been created") + i := 0 + for i = 0; i < 4 && helper.ObjectUserClient.UserSecretExists(namespace, storeName, userid) == false; i++ { + logger.Infof("(%d) secret check sleeping for 5 seconds ...", i) + time.Sleep(5 * time.Second) + } + assert.True(s.T(), helper.ObjectUserClient.UserSecretExists(namespace, storeName, userid)) + logger.Infof("Object store user created successfully") /* TODO: We need bucket management tests. @@ -123,6 +130,13 @@ func runObjectE2ETest(helper *clients.TestClient, k8sh *utils.K8sHelper, s suite dosuErr := helper.ObjectUserClient.Delete(namespace, userid) require.Nil(s.T(), dosuErr) logger.Infof("Object store user deleted successfully") + logger.Infof("Checking to see if the user secret has been deleted") + i = 0 + for i = 0; i < 4 && helper.ObjectUserClient.UserSecretExists(namespace, storeName, userid) == true; i++ { + logger.Infof("(%d) secret check sleeping for 5 seconds ...", i) + time.Sleep(5 * time.Second) + } + assert.False(s.T(), helper.ObjectUserClient.UserSecretExists(namespace, storeName, userid)) logger.Infof("Check that MGRs are not in a crashloop") assert.True(s.T(), k8sh.CheckPodCountAndState("rook-ceph-mgr", namespace, 1, "Running"))