diff --git a/libcloud/common/openstack.py b/libcloud/common/openstack.py
index db71e5b..c4c11aa 100644
--- a/libcloud/common/openstack.py
+++ b/libcloud/common/openstack.py
@@ -17,6 +17,8 @@
 Common utilities for OpenStack
 """
 import sys
+import binascii
+import os
 
 from libcloud.utils.py3 import httplib
 from libcloud.utils.py3 import urlparse
@@ -354,3 +356,11 @@ def _populate_hosts_and_request_paths(self):
 
             # Set up connection info
             (self.host, self.port, self.secure, self.request_path) = self._tuple_from_url(self._ex_force_base_url or self.get_endpoint())
+
+    def _add_cache_busting_to_params(self, params):
+        cache_busting_number = binascii.hexlify(os.urandom(8))
+
+        if isinstance(params, dict):
+            params['cache-busting'] = cache_busting_number
+        else:
+            params.append(('cache-busting', cache_busting_number))
diff --git a/libcloud/compute/drivers/openstack.py b/libcloud/compute/drivers/openstack.py
index 4a119f2..469b48d 100644
--- a/libcloud/compute/drivers/openstack.py
+++ b/libcloud/compute/drivers/openstack.py
@@ -143,7 +143,7 @@ def request(self, action, params=None, data='', headers=None,
             headers = {'Content-Type': self.default_content_type}
 
         if method == "GET":
-            params['cache-busting'] = binascii.hexlify(os.urandom(8))
+            self._add_cache_busting_to_params(params)
 
         return super(OpenStackComputeConnection, self).request(
             action=action,
diff --git a/libcloud/loadbalancer/drivers/rackspace.py b/libcloud/loadbalancer/drivers/rackspace.py
index 9ff9388..7d2069f 100644
--- a/libcloud/loadbalancer/drivers/rackspace.py
+++ b/libcloud/loadbalancer/drivers/rackspace.py
@@ -245,7 +245,7 @@ def request(self, action, params=None, data='', headers=None,
         if method in ('POST', 'PUT'):
             headers['Content-Type'] = 'application/json'
         if method == 'GET':
-            params['cache-busing'] = binascii.hexlify(os.urandom(8))
+            self._add_cache_busting_to_params(params)
 
         return super(RackspaceConnection, self).request(action=action,
                 params=params, data=data, method=method, headers=headers)
diff --git a/test/compute/test_openstack.py b/test/compute/test_openstack.py
index 991b5e2..777d97e 100644
--- a/test/compute/test_openstack.py
+++ b/test/compute/test_openstack.py
@@ -714,6 +714,13 @@ def test_extract_image_id_from_url(self):
         self.assertEqual(image_id, '1d4a8ea9-aae7-4242-a42d-5ff4702f2f14')
         self.assertEqual(image_id_two, '13')
 
+    def test_cache_busts(self):
+        self.driver.connection.request("/servers/12066", params={"key": "value"})
+
+    def test_cache_busts_with_list_of_tuples(self):
+        params = [("key", "value1"), ("key", "value2") ]
+        self.driver.connection.request("/servers/12067", params=params)
+
 
 class OpenStack_1_1_FactoryMethodTests(OpenStack_1_1_Tests):
     should_list_locations = False
@@ -792,6 +799,28 @@ def _v1_1_slug_servers_12065(self, method, url, body, headers):
         else:
             raise NotImplementedError()
 
+    # Cache Busting Test -- parameters as a dictionary
+    def _v1_1_slug_servers_12066(self, method, url, body, headers):
+        if method == "GET":
+            self.assertTrue("cache-busting=" in url, msg="Did not add cache-busting query string")
+            self.assertTrue("key=value" in url, msg="Did not add parameters")
+            body = self.fixtures.load('_servers_12064.json')
+            return (httplib.OK, body, self.json_content_headers, httplib.responses[httplib.OK])
+
+        raise NotImplementedError()
+
+    # Cache Busting Test -- parameters as a list of tuples
+    def _v1_1_slug_servers_12067(self, method, url, body, headers):
+        if method == "GET":
+            self.assertTrue("cache-busting=" in url, msg="Did not add cache-busting query string")
+            self.assertTrue("key=value1" in url, msg="Did not add parameters")
+            self.assertTrue("key=value2" in url, msg="Did not add parameters")
+            body = self.fixtures.load('_servers_12064.json')
+            return (httplib.OK, body, self.json_content_headers, httplib.responses[httplib.OK])
+
+        raise NotImplementedError()
+
+
     def _v1_1_slug_servers_12064(self, method, url, body, headers):
         if method == "GET":
             body = self.fixtures.load('_servers_12064.json')
