diff --git a/tempest/openstack.py b/tempest/openstack.py
index 920ff14..1d73e21 100644
--- a/tempest/openstack.py
+++ b/tempest/openstack.py
@@ -3,6 +3,8 @@
 from tempest.services.nova.json.servers_client import ServersClient
 from tempest.services.nova.json.limits_client import LimitsClient
 from tempest.services.nova.json.extensions_client import ExtensionsClient
+from tempest.services.nova.json.extensions_client import SecurityGroupsClient
+
 import tempest.config
 
 
@@ -40,7 +42,11 @@
                                               self.config.nova.api_key,
                                               self.config.nova.auth_url,
                                               self.config.nova.tenant_name)
-
+            self.security_groups_client = SecurityGroupsClient(self.config,
+                                              self.config.nova.username,
+                                              self.config.nova.api_key,
+                                              self.config.nova.auth_url,
+                                              self.config.nova.tenant_name)
         else:
             #Assuming basic/native authentication
             self.servers_client = ServersClient(self.config,
@@ -63,3 +69,7 @@
                                               self.config.nova.username,
                                               self.config.nova.api_key,
                                               self.config.nova.auth_url)
+            self.security_groups_client = SecurityGroupsClient(self.config,
+                                              self.config.nova.username,
+                                              self.config.nova.api_key,
+                                              self.config.nova.auth_url)
diff --git a/tempest/services/nova/json/security_groups_client.py b/tempest/services/nova/json/security_groups_client.py
new file mode 100644
index 0000000..b365ce5
--- /dev/null
+++ b/tempest/services/nova/json/security_groups_client.py
@@ -0,0 +1,40 @@
+from tempest.common import rest_client
+import json
+
+
+class SecurityGroupsClient(object):
+
+    def __init__(self, config, username, key, auth_url, tenant_name=None):
+        self.config = config
+        self.client = rest_client.RestClient(config, username, key,
+                                             auth_url, 'nova', tenant_name)
+
+    def list_security_groups(self, params=None):
+        """List all security groups for a user"""
+
+        url = 'os-security-groups'
+        if params != None:
+            param_list = []
+            for param, value in params.iteritems():
+                param_list.append("%s=%s&" % (param, value))
+
+            url += '?' + ' '.join(param_list)
+
+        resp, body = self.client.get(url)
+        body = json.loads(body)
+        return resp, body
+
+    def list_security_groups_with_detail(self, params=None):
+        """List security groups with detail"""
+
+        url = 'os-security-groups/detail'
+        if params != None:
+            param_list = []
+            for param, value in params.iteritems():
+                param_list.append("%s=%s&" % (param, value))
+
+            url += '?' + ' '.join(param_list)
+
+        resp, body = self.client.get(url)
+        body = json.loads(body)
+        return resp, body
