X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_object.py;h=1b0fadae569c9fda56a5af5cc4dec9f7cf38bde5;hb=7c03ed4;hp=0d74baa53aba86350d95ac4581ba3876ba1e72b2;hpb=acb9b8e8c3394d06964ad0f8387b764c01f43152;p=vpp.git diff --git a/test/vpp_object.py b/test/vpp_object.py index 0d74baa53ab..1b0fadae569 100644 --- a/test/vpp_object.py +++ b/test/vpp_object.py @@ -2,6 +2,8 @@ from abc import ABCMeta, abstractmethod +from six import moves + class VppObject(object): """ Abstract vpp object """ @@ -46,9 +48,16 @@ class VppObjectRegistry(object): if obj.object_id() not in self._object_dict: self._object_registry.append(obj) self._object_dict[obj.object_id()] = obj + logger.debug("REG: registering %s" % obj) else: logger.debug("REG: duplicate add, ignoring (%s)" % obj) + def unregister_all(self, logger): + """ Remove all object registrations from registry. """ + logger.debug("REG: removing all object registrations") + self._object_registry = [] + self._object_dict = dict() + def remove_vpp_config(self, logger): """ Remove configuration (if present) from vpp and then remove all objects @@ -59,23 +68,21 @@ class VppObjectRegistry(object): return logger.info("REG: Removing VPP configuration for registered objects") # remove the config in reverse order as there might be dependencies + failed = [] for obj in reversed(self._object_registry): if obj.query_vpp_config(): logger.info("REG: Removing configuration for %s" % obj) obj.remove_vpp_config() + if obj.query_vpp_config(): + failed.append(obj) else: logger.info( "REG: Skipping removal for %s, configuration not present" % obj) - failed = [] - for obj in self._object_registry: - if obj.query_vpp_config(): - failed.append(obj) - self._object_registry = [] - self._object_dict = dict() + self.unregister_all(logger) if failed: logger.error("REG: Couldn't remove configuration for object(s):") for obj in failed: - logger.error(repr(obj)) + logger.error(moves.reprlib.repr(obj)) raise Exception("Couldn't remove configuration for object(s): %s" % (", ".join(str(x) for x in failed)))