blob: 7ffdc428bb8e646b08145c63242256bd9e30e576 [file] [log] [blame]
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from oslo_log import log
from tempest import config
from tempest.lib import exceptions as lib_exc
CONF = config.CONF
LOG = log.getLogger(__name__)
def delete_containers(containers, container_client, object_client):
"""Remove containers and all objects in them.
The containers should be visible from the container_client given.
Will not throw any error if the containers don't exist.
:param containers: List of containers(or string of a container)
to be deleted
:param container_client: Client to be used to delete containers
:param object_client: Client to be used to delete objects
"""
if isinstance(containers, str):
containers = [containers]
for cont in containers:
try:
delete_objects(cont, container_client, object_client)
container_client.delete_container(cont)
container_client.wait_for_resource_deletion(cont)
except lib_exc.NotFound:
LOG.warning(f"Container {cont} wasn't deleted as it wasn't found.")
def delete_objects(container, container_client, object_client):
"""Remove all objects from container.
Will not throw any error if the objects do not exist
:param container: Name of the container that contains the objects to be
deleted
:param container_client: Client to be used to list objects in
the container
:param object_client: Client to be used to delete objects
"""
params = {'limit': 9999, 'format': 'json'}
_, objlist = container_client.list_container_objects(container, params)
for obj in objlist:
try:
object_client.delete_object(container, obj['name'])
object_client.wait_for_resource_deletion(obj['name'], container)
except lib_exc.NotFound:
LOG.warning(f"Object {obj} wasn't deleted as it wasn't found.")