diff --git a/libcloud/common/openstack.py b/libcloud/common/openstack.py
index d96a284..48ee418 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
@@ -324,3 +326,11 @@ def _populate_hosts_and_request_paths(self):
                 setattr(self, '__request_path_%s' % (key), request_path)
 
             (self.host, self.port, self.secure, self.request_path) = self._tuple_from_url(self.base_url)
+
+    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 ade1644..2676ddc 100644
--- a/libcloud/compute/drivers/openstack.py
+++ b/libcloud/compute/drivers/openstack.py
@@ -131,7 +131,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 b8f37fd..c966452 100644
--- a/libcloud/loadbalancer/drivers/rackspace.py
+++ b/libcloud/loadbalancer/drivers/rackspace.py
@@ -181,7 +181,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 55fc1ec..97392bd 100644
--- a/test/compute/test_openstack.py
+++ b/test/compute/test_openstack.py
@@ -12,6 +12,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+from collections import defaultdict
 import sys
 import unittest
 import types
@@ -673,6 +674,14 @@ def test_ex_delete_image(self):
         result = self.driver.ex_delete_image(image)
         self.assertTrue(result)
 
+    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
 
@@ -713,6 +722,7 @@ def _v1_1_slug_servers(self, method, url, body, headers):
         if method == "POST":
             body = self.fixtures.load('_servers_create.json')
         elif method == "GET":
+            print url
             body = self.fixtures.load('_servers.json')
         else:
             raise NotImplementedError()
@@ -745,6 +755,29 @@ 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')
+            print url
+            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')
