From 674a85ba0bfbb9023d751249a0ee53bf4670dafe Mon Sep 17 00:00:00 2001
From: Steve Pulec <spulec@gmail.com>
Date: Fri, 26 Jul 2013 15:14:34 -0400
Subject: [PATCH] Cleanup backend finding

---
 moto/backends.py | 17 +++++++++++++++++
 moto/server.py   | 18 +++---------------
 2 files changed, 20 insertions(+), 15 deletions(-)
 create mode 100644 moto/backends.py

diff --git a/moto/backends.py b/moto/backends.py
new file mode 100644
index 000000000..6898ad169
--- /dev/null
+++ b/moto/backends.py
@@ -0,0 +1,17 @@
+from moto.dynamodb import dynamodb_backend
+from moto.ec2 import ec2_backend
+from moto.elb import elb_backend
+from moto.s3 import s3_backend
+from moto.ses import ses_backend
+from moto.sqs import sqs_backend
+from moto.sts import sts_backend
+
+BACKENDS = {
+    'dynamodb': dynamodb_backend,
+    'ec2': ec2_backend,
+    'elb': elb_backend,
+    's3': s3_backend,
+    'ses': ses_backend,
+    'sqs': sqs_backend,
+    'sts': sts_backend,
+}
diff --git a/moto/server.py b/moto/server.py
index 645ce8fe4..9ef135359 100644
--- a/moto/server.py
+++ b/moto/server.py
@@ -4,14 +4,7 @@ import argparse
 from flask import Flask
 from werkzeug.routing import BaseConverter
 
-from moto.dynamodb import dynamodb_backend  # flake8: noqa
-from moto.ec2 import ec2_backend  # flake8: noqa
-from moto.elb import elb_backend  # flake8: noqa
-from moto.s3 import s3_backend  # flake8: noqa
-from moto.ses import ses_backend  # flake8: noqa
-from moto.sqs import sqs_backend  # flake8: noqa
-from moto.sts import sts_backend  # flake8: noqa
-
+from moto.backends import BACKENDS
 from moto.core.utils import convert_flask_to_httpretty_response
 
 app = Flask(__name__)
@@ -26,8 +19,7 @@ class RegexConverter(BaseConverter):
 
 
 def configure_urls(service):
-    module = sys.modules[__name__]
-    backend = getattr(module, "{}_backend".format(service))
+    backend = BACKENDS[service]
     from werkzeug.routing import Map
     # Reset view functions to reset the app
     app.view_functions = {}
@@ -38,11 +30,7 @@ def configure_urls(service):
 
 
 def main(argv=sys.argv[1:]):
-    # Yes, I'm using those imports in the beginning of the file to create a
-    # dynamic list of available services to be shown in the help text when the
-    # user tries to interact with moto_server.
-    available_services = [
-        x.split('_')[0] for x in globals() if x.endswith('_backend')]
+    available_services = BACKENDS.keys()
 
     parser = argparse.ArgumentParser()
     parser.add_argument(