diff --git a/moto/backends.py b/moto/backends.py index 5d48b124b..5847ad85e 100644 --- a/moto/backends.py +++ b/moto/backends.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals import importlib import moto +import sys decorators = [ @@ -26,8 +27,16 @@ def backends(): yield _import_backend(module_name, backends_name) -def named_backends(): - for name, (module_name, backends_name) in BACKENDS.items(): +def loaded_backends(): + loaded_modules = sys.modules.keys() + loaded_modules = [m for m in loaded_modules if m.startswith("moto.")] + imported_backends = [ + name + for name, (module_name, _) in BACKENDS.items() + if f"moto.{module_name}" in loaded_modules + ] + for name in imported_backends: + module_name, backends_name = BACKENDS[name] yield name, _import_backend(module_name, backends_name) diff --git a/moto/core/models.py b/moto/core/models.py index 885a2ad45..3857908f7 100644 --- a/moto/core/models.py +++ b/moto/core/models.py @@ -840,7 +840,7 @@ class MotoAPIBackend(BaseBackend): def reset(self): import moto.backends as backends - for name, backends_ in backends.named_backends(): + for name, backends_ in backends.loaded_backends(): if name == "moto_api": continue for region_name, backend in backends_.items(): diff --git a/moto/mediapackage/models.py b/moto/mediapackage/models.py index 1e6fb9940..744a3fd21 100644 --- a/moto/mediapackage/models.py +++ b/moto/mediapackage/models.py @@ -74,13 +74,13 @@ class MediaPackageBackend(BaseBackend): def __init__(self, region_name=None): super(MediaPackageBackend, self).__init__() self.region_name = region_name + self._channels = OrderedDict() + self._origin_endpoints = OrderedDict() def reset(self): region_name = self.region_name self.__dict__ = {} self.__init__(region_name) - self._channels = OrderedDict() - self._origin_endpoints = OrderedDict() def create_channel(self, description, id, tags): arn = "arn:aws:mediapackage:channel:{}".format(id) diff --git a/moto/server.py b/moto/server.py index 18d741642..88ae89768 100644 --- a/moto/server.py +++ b/moto/server.py @@ -68,10 +68,13 @@ class DomainDispatcherApplication(object): if pattern.match("http://%s" % host): return backend - print( - "Unable to find appropriate URL for {}." - "Remember to add the URL to urls.py, and run script/update_backend_index.py to index it." - ) + if "amazonaws.com" in host: + print( + "Unable to find appropriate backend for {}." + "Remember to add the URL to urls.py, and run script/update_backend_index.py to index it.".format( + host + ) + ) def infer_service_region_host(self, environ): auth = environ.get("HTTP_AUTHORIZATION")