python-barbicanclient/functionaltests/common/cleanup.py

90 lines
3.2 KiB
Python

"""
Copyright 2015 IBM
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.
"""
class CleanUp(object):
def __init__(self, barbicanclient):
self.created_entities = {
'secret': [],
'container': [],
'acl': [],
'order': []
}
self.barbicanclient = barbicanclient
def delete_all_entities(self):
"""Helper method to delete all containers and secrets used for
testing"""
self._delete_all_acls()
self._delete_all_containers()
self._delete_all_orders()
self._delete_all_secrets()
def add_entity(self, entity):
"""Stores an entity in Barbican to be used for testing
and keeps track of entity for removal after tests are
run"""
entity_type = str(type(entity)).lower()
if 'acl' in entity_type:
entity_ref = entity.submit()
entity_type = 'acl'
elif 'secret' in entity_type:
entity_ref = entity.store()
entity_type = 'secret'
elif 'container' in entity_type:
entity_ref = entity.store()
entity_type = 'container'
else:
entity_ref = entity.submit()
entity_type = 'order'
self.created_entities[entity_type].append(entity_ref)
return entity_ref
def _delete_all_containers(self):
"""Helper method to delete all containers used for
testing"""
for container_ref in self.created_entities['container']:
self.barbicanclient.containers.delete(container_ref)
def _delete_all_secrets(self):
"""Helper method to delete all secrets used for testing"""
for secret_ref in self.created_entities['secret']:
self.barbicanclient.secrets.delete(secret_ref)
def _delete_all_acls(self):
"""Helper method to delete all acls used for testing"""
for acl_ref in self.created_entities['acl']:
entity_ref = acl_ref.replace("/acl", "")
blank_acl_entity = self.barbicanclient.acls.create(
entity_ref=entity_ref)
blank_acl_entity.remove()
def _delete_all_orders(self):
"""Helper method to delete all orders and secrets used for testing"""
for order_ref in self.created_entities['order']:
order = self.barbicanclient.orders.get(order_ref)
if order.secret_ref:
self.barbicanclient.secrets.delete(order.secret_ref)
# see if containers are supported
container_attr_exists = getattr(order, "container_ref", None)
if container_attr_exists and order.container_ref:
self.barbicanclient.containers.delete(order.container_ref)
self.barbicanclient.orders.delete(order_ref)