Tempest: wait for access rule to be deleted

The tests targeting user based access rules do not wait when
deleting such access rules. As multiple tests will create access
rules for the same user, this operation will fail if the previous
rule was not deleted in time.

This patch fixes those tests by waiting for the access rule delete
operation to complete.

The wait_for_resource_deletion method is updated to work with
access rules, re-adding previously existing functionality, removed
as unused and also requested by bug/1429952.

Closes-Bug: #1489367

Change-Id: Ie48fba56668ad663be84b74cd64927e3e5d6c675
This commit is contained in:
Alin Balutoiu 2015-08-27 12:35:32 +03:00
parent 641a5e985e
commit ddb276f629
2 changed files with 22 additions and 5 deletions

View File

@ -34,6 +34,8 @@ def _create_delete_ro_access_rule(self):
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
self.shares_client.delete_access_rule(self.share["id"], rule["id"])
self.shares_client.wait_for_resource_deletion(
rule_id=rule["id"], share_id=self.share['id'])
class ShareIpRulesForNFSTest(base.BaseSharesTest):
@ -63,8 +65,10 @@ class ShareIpRulesForNFSTest(base.BaseSharesTest):
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
# delete rule
# delete rule and wait for deletion
self.shares_client.delete_access_rule(self.share["id"], rule["id"])
self.shares_client.wait_for_resource_deletion(
rule_id=rule["id"], share_id=self.share['id'])
@test.attr(type=["gate", ])
def test_create_delete_access_rule_with_cidr(self):
@ -79,8 +83,10 @@ class ShareIpRulesForNFSTest(base.BaseSharesTest):
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
# delete rule
# delete rule and wait for deletion
self.shares_client.delete_access_rule(self.share["id"], rule["id"])
self.shares_client.wait_for_resource_deletion(
rule_id=rule["id"], share_id=self.share['id'])
@test.attr(type=["gate", ])
@testtools.skipIf(
@ -126,8 +132,10 @@ class ShareUserRulesForNFSTest(base.BaseSharesTest):
self.shares_client.wait_for_access_rule_status(
self.share["id"], rule["id"], "active")
# delete rule
# delete rule and wait for deletion
self.shares_client.delete_access_rule(self.share["id"], rule["id"])
self.shares_client.wait_for_resource_deletion(
rule_id=rule["id"], share_id=self.share['id'])
@test.attr(type=["gate", ])
@testtools.skipIf(

View File

@ -365,8 +365,17 @@ class SharesClient(rest_client.RestClient):
:raises share_exceptions.InvalidResource
"""
if "share_id" in kwargs:
return self._is_resource_deleted(
self.get_share, kwargs.get("share_id"))
if "rule_id" in kwargs:
rule_id = kwargs.get("rule_id")
share_id = kwargs.get("share_id")
rules = self.list_access_rules(share_id)
for rule in rules:
if rule["id"] == rule_id:
return False
return True
else:
return self._is_resource_deleted(
self.get_share, kwargs.get("share_id"))
elif "snapshot_id" in kwargs:
return self._is_resource_deleted(
self.get_snapshot, kwargs.get("snapshot_id"))