# License for the specific language governing permissions and limitations
# under the License.
#
+import functools
import fixtures
+from neutronclient.common import exceptions
from neutron.tests import base
+def _safe_method(f):
+ @functools.wraps(f)
+ def delete(*args, **kwargs):
+ try:
+ return f(*args, **kwargs)
+ except exceptions.NotFound:
+ pass
+ return delete
+
+
class ClientFixture(fixtures.Fixture):
"""Manage and cleanup neutron resources."""
body = {resource_type: spec}
resp = create(body=body)
data = resp[resource_type]
- self.addCleanup(delete, data['id'])
+ self.addCleanup(_safe_method(delete), data['id'])
return data
def create_router(self, tenant_id, name=None, ha=False):
def add_router_interface(self, router_id, subnet_id):
body = {'subnet_id': subnet_id}
self.client.add_interface_router(router=router_id, body=body)
- self.addCleanup(self.client.remove_interface_router,
+ self.addCleanup(_safe_method(self.client.remove_interface_router),
router=router_id, body=body)