From 0e623f2337361206656f202c590bcbf42c4338d7 Mon Sep 17 00:00:00 2001 From: Luke Sneeringer Date: Wed, 1 Oct 2014 16:36:34 -0500 Subject: [PATCH] Start of HA middleware. --- awx/main/managers.py | 4 ++++ awx/main/middleware.py | 11 +++++++++++ awx/settings/defaults.py | 1 + 3 files changed, 16 insertions(+) diff --git a/awx/main/managers.py b/awx/main/managers.py index bb14078dc9..fe0fc6b1e7 100644 --- a/awx/main/managers.py +++ b/awx/main/managers.py @@ -23,3 +23,7 @@ class InstanceManager(models.Manager): if self.me().primary: return 'primary' return 'secondary' + + def primary(self): + """Return the primary instance.""" + return self.get(primary=True) diff --git a/awx/main/middleware.py b/awx/main/middleware.py index a9d111249e..b553ffed87 100644 --- a/awx/main/middleware.py +++ b/awx/main/middleware.py @@ -61,3 +61,14 @@ class ActivityStreamMiddleware(threading.local): else: if instance.id not in self.instance_ids: self.instance_ids.append(instance.id) + + +class HAMiddlware(object): + """A middleware class that checks to see whether the request is being + served on a secondary instance, and redirects the request back to the + primary instance if so. + """ + def process_request(self, request): + """Process the request, and redirect if this is a request on a + secondary node. + """ diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index ea34f44161..e71f62b562 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -116,6 +116,7 @@ TEMPLATE_CONTEXT_PROCESSORS += ( ) MIDDLEWARE_CLASSES += ( + 'awx.main.middleware.HAMiddleware', 'awx.main.middleware.ActivityStreamMiddleware', 'crum.CurrentRequestUserMiddleware', )