Merge "Use Tempest-lib's compute security_groups_client"
diff --git a/tempest/clients.py b/tempest/clients.py
index b6f2545..59009ac 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -47,6 +47,8 @@
 from tempest_lib.services.compute.quotas_client import QuotasClient
 from tempest_lib.services.compute.security_group_default_rules_client import \
     SecurityGroupDefaultRulesClient
+from tempest_lib.services.compute.security_groups_client import \
+    SecurityGroupsClient
 from tempest_lib.services.identity.v2.token_client import TokenClient
 from tempest_lib.services.identity.v3.token_client import V3TokenClient
 
@@ -64,8 +66,6 @@
 from tempest.services.compute.json.keypairs_client import KeyPairsClient
 from tempest.services.compute.json.security_group_rules_client import \
     SecurityGroupRulesClient
-from tempest.services.compute.json.security_groups_client import \
-    SecurityGroupsClient
 from tempest.services.compute.json.server_groups_client import \
     ServerGroupsClient
 from tempest.services.compute.json.servers_client import ServersClient
diff --git a/tempest/cmd/javelin.py b/tempest/cmd/javelin.py
index 3df19fc..184bb9a 100755
--- a/tempest/cmd/javelin.py
+++ b/tempest/cmd/javelin.py
@@ -118,6 +118,7 @@
 from tempest_lib import auth
 from tempest_lib import exceptions as lib_exc
 from tempest_lib.services.compute import flavors_client
+from tempest_lib.services.compute import security_groups_client
 import yaml
 
 from tempest.common import identity
@@ -125,7 +126,6 @@
 from tempest import config
 from tempest.services.compute.json import floating_ips_client
 from tempest.services.compute.json import security_group_rules_client
-from tempest.services.compute.json import security_groups_client
 from tempest.services.compute.json import servers_client
 from tempest.services.identity.v2.json import identity_client
 from tempest.services.image.v2.json import image_client
diff --git a/tempest/services/compute/json/security_groups_client.py b/tempest/services/compute/json/security_groups_client.py
deleted file mode 100644
index c996079..0000000
--- a/tempest/services/compute/json/security_groups_client.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright 2012 OpenStack Foundation
-# All Rights Reserved.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, 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 oslo_serialization import jsonutils as json
-from six.moves.urllib import parse as urllib
-from tempest_lib import exceptions as lib_exc
-
-from tempest.api_schema.response.compute.v2_1 import security_groups as schema
-from tempest.common import service_client
-
-
-class SecurityGroupsClient(service_client.ServiceClient):
-
-    def list_security_groups(self, **params):
-        """List all security groups for a user."""
-
-        url = 'os-security-groups'
-        if params:
-            url += '?%s' % urllib.urlencode(params)
-
-        resp, body = self.get(url)
-        body = json.loads(body)
-        self.validate_response(schema.list_security_groups, resp, body)
-        return service_client.ResponseBody(resp, body)
-
-    def show_security_group(self, security_group_id):
-        """Get the details of a Security Group."""
-        url = "os-security-groups/%s" % security_group_id
-        resp, body = self.get(url)
-        body = json.loads(body)
-        self.validate_response(schema.get_security_group, resp, body)
-        return service_client.ResponseBody(resp, body)
-
-    def create_security_group(self, **kwargs):
-        """Creates a new security group.
-
-        name (Required): Name of security group.
-        description (Required): Description of security group.
-        """
-        post_body = json.dumps({'security_group': kwargs})
-        resp, body = self.post('os-security-groups', post_body)
-        body = json.loads(body)
-        self.validate_response(schema.get_security_group, resp, body)
-        return service_client.ResponseBody(resp, body)
-
-    def update_security_group(self, security_group_id, **kwargs):
-        """Update a security group.
-
-        security_group_id: a security_group to update
-        name: new name of security group
-        description: new description of security group
-        """
-        post_body = json.dumps({'security_group': kwargs})
-        resp, body = self.put('os-security-groups/%s' % security_group_id,
-                              post_body)
-        body = json.loads(body)
-        self.validate_response(schema.update_security_group, resp, body)
-        return service_client.ResponseBody(resp, body)
-
-    def delete_security_group(self, security_group_id):
-        """Deletes the provided Security Group."""
-        resp, body = self.delete(
-            'os-security-groups/%s' % security_group_id)
-        self.validate_response(schema.delete_security_group, resp, body)
-        return service_client.ResponseBody(resp, body)
-
-    def is_resource_deleted(self, id):
-        try:
-            self.show_security_group(id)
-        except lib_exc.NotFound:
-            return True
-        return False
-
-    @property
-    def resource_type(self):
-        """Returns the primary type of resource this client works with."""
-        return 'security_group'
diff --git a/tempest/tests/services/compute/test_security_groups_client.py b/tempest/tests/services/compute/test_security_groups_client.py
deleted file mode 100644
index 9e40b96..0000000
--- a/tempest/tests/services/compute/test_security_groups_client.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright 2015 NEC Corporation.  All rights reserved.
-#
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, 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 oslotest import mockpatch
-from tempest_lib import exceptions as lib_exc
-from tempest_lib.tests import fake_auth_provider
-
-from tempest.services.compute.json import security_groups_client
-from tempest.tests.services.compute import base
-
-
-class TestSecurityGroupsClient(base.BaseComputeServiceTest):
-
-    FAKE_SECURITY_GROUP_INFO = [{
-        "description": "default",
-        "id": "3fb26eb3-581b-4420-9963-b0879a026506",
-        "name": "default",
-        "rules": [],
-        "tenant_id": "openstack"
-    }]
-
-    def setUp(self):
-        super(TestSecurityGroupsClient, self).setUp()
-        fake_auth = fake_auth_provider.FakeAuthProvider()
-        self.client = security_groups_client.SecurityGroupsClient(
-            fake_auth, 'compute', 'regionOne')
-
-    def _test_list_security_groups(self, bytes_body=False):
-        self.check_service_client_function(
-            self.client.list_security_groups,
-            'tempest.common.service_client.ServiceClient.get',
-            {"security_groups": self.FAKE_SECURITY_GROUP_INFO},
-            to_utf=bytes_body)
-
-    def test_list_security_groups_with_str_body(self):
-        self._test_list_security_groups()
-
-    def test_list_security_groups_with_bytes_body(self):
-        self._test_list_security_groups(bytes_body=True)
-
-    def _test_show_security_group(self, bytes_body=False):
-        self.check_service_client_function(
-            self.client.show_security_group,
-            'tempest.common.service_client.ServiceClient.get',
-            {"security_group": self.FAKE_SECURITY_GROUP_INFO[0]},
-            to_utf=bytes_body,
-            security_group_id='fake-id')
-
-    def test_show_security_group_with_str_body(self):
-        self._test_show_security_group()
-
-    def test_show_security_group_with_bytes_body(self):
-        self._test_show_security_group(bytes_body=True)
-
-    def _test_create_security_group(self, bytes_body=False):
-        post_body = {"name": "test", "description": "test_group"}
-        self.check_service_client_function(
-            self.client.create_security_group,
-            'tempest.common.service_client.ServiceClient.post',
-            {"security_group": self.FAKE_SECURITY_GROUP_INFO[0]},
-            to_utf=bytes_body,
-            kwargs=post_body)
-
-    def test_create_security_group_with_str_body(self):
-        self._test_create_security_group()
-
-    def test_create_security_group_with_bytes_body(self):
-        self._test_create_security_group(bytes_body=True)
-
-    def _test_update_security_group(self, bytes_body=False):
-        req_body = {"name": "test", "description": "test_group"}
-        self.check_service_client_function(
-            self.client.update_security_group,
-            'tempest.common.service_client.ServiceClient.put',
-            {"security_group": self.FAKE_SECURITY_GROUP_INFO[0]},
-            to_utf=bytes_body,
-            security_group_id='fake-id',
-            kwargs=req_body)
-
-    def test_update_security_group_with_str_body(self):
-        self._test_update_security_group()
-
-    def test_update_security_group_with_bytes_body(self):
-        self._test_update_security_group(bytes_body=True)
-
-    def test_delete_security_group(self):
-        self.check_service_client_function(
-            self.client.delete_security_group,
-            'tempest.common.service_client.ServiceClient.delete',
-            {}, status=202, security_group_id='fake-id')
-
-    def test_is_resource_deleted_true(self):
-        mod = ('tempest.services.compute.json.security_groups_client.'
-               'SecurityGroupsClient.show_security_group')
-        self.useFixture(mockpatch.Patch(mod, side_effect=lib_exc.NotFound))
-        self.assertTrue(self.client.is_resource_deleted('fake-id'))
-
-    def test_is_resource_deleted_false(self):
-        mod = ('tempest.services.compute.json.security_groups_client.'
-               'SecurityGroupsClient.show_security_group')
-        self.useFixture(mockpatch.Patch(mod, return_value='success'))
-        self.assertFalse(self.client.is_resource_deleted('fake-id'))