diff --git a/modules/openstack_project/files/zuul/openstack_functions.py b/modules/openstack_project/files/zuul/openstack_functions.py
index 7e48872a7e..8be03152de 100644
--- a/modules/openstack_project/files/zuul/openstack_functions.py
+++ b/modules/openstack_project/files/zuul/openstack_functions.py
@@ -37,7 +37,19 @@ def reusable_node(item, job, params):
 
 
 def devstack_params(item, job, params):
-    params['ZUUL_NODE'] = 'devstack-precise'
+    change = item.change
+    # Note we can't fallback on the default labels because
+    # jenkins uses 'devstack-precise || devstack-trusty'.
+    # This is necessary to get the gearman plugin to register
+    # gearman jobs with both node labels.
+    if ((hasattr(change, 'branch') and
+        change.branch == 'stable/havana' or
+        change.branch == 'stable/icehouse') or
+        ('havana' in job.name or
+        'icehouse' in job.name)):
+        params['ZUUL_NODE'] = 'devstack-precise'
+    else:
+        params['ZUUL_NODE'] = 'devstack-trusty'
 
 
 def default_params_precise(item, job, params):