CORD-2964 Any class that descends from SyncStep is a syncstep

Change-Id: Idf7a528948f537e8d4057317a35332cee47730c6
diff --git a/xos/synchronizers/new_base/backend.py b/xos/synchronizers/new_base/backend.py
index 679fc5e..e9a9a56 100644
--- a/xos/synchronizers/new_base/backend.py
+++ b/xos/synchronizers/new_base/backend.py
@@ -87,10 +87,11 @@
                     # make sure 'c' is a descendent of SyncStep and has a
                     # provides field (this eliminates the abstract base classes
                     # since they don't have a provides)
-                    
+
                     if inspect.isclass(c):
-                        base_names = [b.__name__ for b in c.__bases__]
-                        if ('SyncStep' in base_names or 'OpenStackSyncStep' in base_names or 'SyncInstanceUsingAnsible' in base_names) and (hasattr(c,"provides") or hasattr(c,"observes")) and (c not in sync_steps):
+                        bases = inspect.getmro(c)
+                        base_names = [b.__name__ for b in bases]
+                        if ('SyncStep' in base_names) and (hasattr(c,"provides") or hasattr(c,"observes")) and (c not in sync_steps):
                             sync_steps.append(c)
 
         self.log.info("Loaded sync steps", steps = sync_steps)