Delete servers before deleting its share network
When deleting a share network, the belonging share servers were being deleted automatically. However, any possible errors were being ignored, possibly leaving share servers in the backend. The patch https://review.openstack.org/644560 avoids this by making the Manila API to return an error if the share network about to be deleted still has any share server, which in turn has `is_auto_deletable=True` or contains any share. This patch modifies the base test class tearDown method, to delete the share servers before the share network they belong to. Change-Id: I7d330b8b5fb3f08d3cbdae2c1735e266e75a70d3 Depends-On: I4144a532d5827b929a1dce0d4d642e6d1cee47b1 Related-Bug: #1820118
This commit is contained in:
parent
370569423e
commit
9743939c6c
|
@ -131,6 +131,14 @@ class ManageNFSShareTest(base.BaseSharesAdminTest):
|
|||
# Delete share
|
||||
self._delete_share_and_wait(managed_share)
|
||||
|
||||
# Delete share server, since it can't be "auto-deleted"
|
||||
if (CONF.share.multitenancy_enabled and
|
||||
not CONF.share.share_network_id):
|
||||
# For a pre-configured share_network_id, we don't
|
||||
# delete the share server.
|
||||
self._delete_share_server_and_wait(
|
||||
managed_share['share_server_id'])
|
||||
|
||||
@tc.attr(base.TAG_POSITIVE, base.TAG_API_WITH_BACKEND)
|
||||
@base.skip_if_microversion_not_supported("2.5")
|
||||
def test_manage_with_os_share_manage_url(self):
|
||||
|
|
|
@ -59,14 +59,11 @@ class ManageNFSShareNegativeTest(base.BaseSharesAdminTest):
|
|||
cleanup_in_class=True,
|
||||
extra_specs=cls.extra_specs)
|
||||
|
||||
def _manage_share_for_cleanup_and_wait(self, params,
|
||||
state=constants.STATUS_AVAILABLE):
|
||||
# Manage the share, schedule its deletion upon tearDown and wait for
|
||||
# the expected state.
|
||||
def _manage_share_and_wait(self, params,
|
||||
state=constants.STATUS_AVAILABLE):
|
||||
# Manage the share and wait for the expected state.
|
||||
# Return the managed share object.
|
||||
managed_share = self.shares_v2_client.manage_share(**params)
|
||||
self.addCleanup(self._reset_state_and_delete_share,
|
||||
managed_share)
|
||||
self.shares_v2_client.wait_for_share_status(
|
||||
managed_share['id'], state)
|
||||
|
||||
|
@ -128,8 +125,17 @@ class ManageNFSShareNegativeTest(base.BaseSharesAdminTest):
|
|||
**invalid_params
|
||||
)
|
||||
|
||||
# manage it properly and schedule cleanup upon tearDown
|
||||
self._manage_share_for_cleanup_and_wait(valid_params)
|
||||
# manage it properly and cleanup
|
||||
managed_share = self._manage_share_and_wait(valid_params)
|
||||
self._delete_share_and_wait(managed_share)
|
||||
|
||||
# Delete share server, since it can't be "auto-deleted"
|
||||
if (CONF.share.multitenancy_enabled and
|
||||
not CONF.share.share_network_id):
|
||||
# For a pre-configured share_network_id, we don't
|
||||
# delete the share server.
|
||||
self._delete_share_server_and_wait(
|
||||
managed_share['share_server_id'])
|
||||
|
||||
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
|
||||
def test_manage_invalid_param_manage_error(self):
|
||||
|
@ -163,8 +169,17 @@ class ManageNFSShareNegativeTest(base.BaseSharesAdminTest):
|
|||
# cleanup
|
||||
self._unmanage_share_and_wait(invalid_share)
|
||||
|
||||
# manage it properly and schedule cleanup upon tearDown
|
||||
self._manage_share_for_cleanup_and_wait(valid_params)
|
||||
# manage it properly and cleanup
|
||||
managed_share = self._manage_share_and_wait(valid_params)
|
||||
self._delete_share_and_wait(managed_share)
|
||||
|
||||
# Delete share server, since it can't be "auto-deleted"
|
||||
if (CONF.share.multitenancy_enabled and
|
||||
not CONF.share.share_network_id):
|
||||
# For a pre-configured share_network_id, we don't
|
||||
# delete the share server.
|
||||
self._delete_share_server_and_wait(
|
||||
managed_share['share_server_id'])
|
||||
|
||||
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
|
||||
def test_manage_share_duplicate(self):
|
||||
|
@ -174,7 +189,7 @@ class ManageNFSShareNegativeTest(base.BaseSharesAdminTest):
|
|||
self._unmanage_share_and_wait(share)
|
||||
|
||||
# manage the share for the first time
|
||||
managed_share = self._manage_share_for_cleanup_and_wait(manage_params)
|
||||
managed_share = self._manage_share_and_wait(manage_params)
|
||||
|
||||
# update managed share's reference
|
||||
managed_share = self.shares_v2_client.get_share(managed_share['id'])
|
||||
|
@ -187,6 +202,17 @@ class ManageNFSShareNegativeTest(base.BaseSharesAdminTest):
|
|||
**manage_params
|
||||
)
|
||||
|
||||
# cleanup
|
||||
self._delete_share_and_wait(managed_share)
|
||||
|
||||
# Delete share server, since it can't be "auto-deleted"
|
||||
if (CONF.share.multitenancy_enabled and
|
||||
not CONF.share.share_network_id):
|
||||
# For a pre-configured share_network_id, we don't
|
||||
# delete the share server.
|
||||
self._delete_share_server_and_wait(
|
||||
managed_share['share_server_id'])
|
||||
|
||||
@testtools.skipUnless(CONF.share.multitenancy_enabled,
|
||||
'Multitenancy tests are disabled.')
|
||||
@utils.skip_if_microversion_not_supported("2.49")
|
||||
|
@ -203,7 +229,17 @@ class ManageNFSShareNegativeTest(base.BaseSharesAdminTest):
|
|||
**manage_params)
|
||||
|
||||
manage_params['share_server_id'] = share_server_id
|
||||
self._manage_share_for_cleanup_and_wait(manage_params)
|
||||
|
||||
managed_share = self._manage_share_and_wait(manage_params)
|
||||
self._delete_share_and_wait(managed_share)
|
||||
|
||||
# Delete share server, since it can't be "auto-deleted"
|
||||
if (CONF.share.multitenancy_enabled and
|
||||
not CONF.share.share_network_id):
|
||||
# For a pre-configured share_network_id, we don't
|
||||
# delete the share server.
|
||||
self._delete_share_server_and_wait(
|
||||
managed_share['share_server_id'])
|
||||
|
||||
@tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)
|
||||
def test_delete_share_in_manage_error(self):
|
||||
|
@ -230,7 +266,16 @@ class ManageNFSShareNegativeTest(base.BaseSharesAdminTest):
|
|||
|
||||
# cleanup
|
||||
self.shares_v2_client.unmanage_share(invalid_share['id'])
|
||||
self._manage_share_for_cleanup_and_wait(valid_params)
|
||||
managed_share = self._manage_share_and_wait(valid_params)
|
||||
self._delete_share_and_wait(managed_share)
|
||||
|
||||
# Delete share server, since it can't be "auto-deleted"
|
||||
if (CONF.share.multitenancy_enabled and
|
||||
not CONF.share.share_network_id):
|
||||
# For a pre-configured share_network_id, we don't
|
||||
# delete the share server.
|
||||
self._delete_share_server_and_wait(
|
||||
managed_share['share_server_id'])
|
||||
|
||||
@testtools.skipUnless(CONF.share.run_snapshot_tests,
|
||||
'Snapshot tests are disabled.')
|
||||
|
|
|
@ -260,6 +260,11 @@ class ManageShareServersNegativeTest(base.BaseSharesAdminTest):
|
|||
invalid_params
|
||||
)
|
||||
|
||||
# unmanage the share server in manage_error
|
||||
search_opts = {'identifier': 'invalid_id'}
|
||||
invalid_servers = self.shares_v2_client.list_share_servers(search_opts)
|
||||
self._unmanage_share_server_and_wait(invalid_servers[0])
|
||||
|
||||
# manage in the correct way
|
||||
managed_share_server = self._manage_share_server(share_server)
|
||||
managed_share_server = self.shares_v2_client.show_share_server(
|
||||
|
@ -318,3 +323,9 @@ class ManageShareServersNegativeTest(base.BaseSharesAdminTest):
|
|||
|
||||
# delete share
|
||||
self._delete_share_and_wait(share)
|
||||
|
||||
# Delete share server, since it can't be "auto-deleted"
|
||||
if not CONF.share.share_network_id:
|
||||
# For a pre-configured share_network_id, we don't
|
||||
# delete the share server.
|
||||
self._delete_share_server_and_wait(share_server['id'])
|
||||
|
|
Loading…
Reference in New Issue