Merge "Use Tempest-lib's compute security_group_rules_client"
diff --git a/tempest/api_schema/response/compute/v2_1/security_groups.py b/tempest/api_schema/response/compute/v2_1/security_groups.py
deleted file mode 100644
index 5ed5a5c..0000000
--- a/tempest/api_schema/response/compute/v2_1/security_groups.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright 2014 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.
-
-common_security_group_rule = {
- 'from_port': {'type': ['integer', 'null']},
- 'to_port': {'type': ['integer', 'null']},
- 'group': {
- 'type': 'object',
- 'properties': {
- 'tenant_id': {'type': 'string'},
- 'name': {'type': 'string'}
- },
- 'additionalProperties': False,
- },
- 'ip_protocol': {'type': ['string', 'null']},
- # 'parent_group_id' can be UUID so defining it as 'string' also.
- 'parent_group_id': {'type': ['string', 'integer', 'null']},
- 'ip_range': {
- 'type': 'object',
- 'properties': {
- 'cidr': {'type': 'string'}
- },
- 'additionalProperties': False,
- # When optional argument is provided in request body
- # like 'group_id' then, attribute 'cidr' does not
- # comes in response body. So it is not 'required'.
- },
- 'id': {'type': ['string', 'integer']}
-}
-
-common_security_group = {
- 'type': 'object',
- 'properties': {
- 'id': {'type': ['integer', 'string']},
- 'name': {'type': 'string'},
- 'tenant_id': {'type': 'string'},
- 'rules': {
- 'type': 'array',
- 'items': {
- 'type': ['object', 'null'],
- 'properties': common_security_group_rule,
- 'additionalProperties': False,
- }
- },
- 'description': {'type': 'string'},
- },
- 'additionalProperties': False,
- 'required': ['id', 'name', 'tenant_id', 'rules', 'description'],
-}
-
-list_security_groups = {
- 'status_code': [200],
- 'response_body': {
- 'type': 'object',
- 'properties': {
- 'security_groups': {
- 'type': 'array',
- 'items': common_security_group
- }
- },
- 'additionalProperties': False,
- 'required': ['security_groups']
- }
-}
-
-get_security_group = create_security_group = update_security_group = {
- 'status_code': [200],
- 'response_body': {
- 'type': 'object',
- 'properties': {
- 'security_group': common_security_group
- },
- 'additionalProperties': False,
- 'required': ['security_group']
- }
-}
-
-delete_security_group = {
- 'status_code': [202]
-}
-
-create_security_group_rule = {
- 'status_code': [200],
- 'response_body': {
- 'type': 'object',
- 'properties': {
- 'security_group_rule': {
- 'type': 'object',
- 'properties': common_security_group_rule,
- 'additionalProperties': False,
- 'required': ['from_port', 'to_port', 'group', 'ip_protocol',
- 'parent_group_id', 'id', 'ip_range']
- }
- },
- 'additionalProperties': False,
- 'required': ['security_group_rule']
- }
-}
-
-delete_security_group_rule = {
- 'status_code': [202]
-}
diff --git a/tempest/clients.py b/tempest/clients.py
index 1241a9a..3bd3f37 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -51,6 +51,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_group_rules_client import \
+ SecurityGroupRulesClient
from tempest_lib.services.compute.security_groups_client import \
SecurityGroupsClient as ComputeSecurityGroupsClient
from tempest_lib.services.compute.services_client import ServicesClient
@@ -73,8 +75,6 @@
from tempest.services.baremetal.v1.json.baremetal_client import \
BaremetalClient
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.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 cf34b7c..c0c645c 100755
--- a/tempest/cmd/javelin.py
+++ b/tempest/cmd/javelin.py
@@ -119,13 +119,13 @@
from tempest_lib import exceptions as lib_exc
from tempest_lib.services.compute import flavors_client
from tempest_lib.services.compute import floating_ips_client
+from tempest_lib.services.compute import security_group_rules_client
from tempest_lib.services.compute import security_groups_client
import yaml
from tempest.common import identity
from tempest.common import waiters
from tempest import config
-from tempest.services.compute.json import security_group_rules_client
from tempest.services.compute.json import servers_client
from tempest.services.identity.v2.json import identity_client
from tempest.services.identity.v2.json import roles_client
diff --git a/tempest/services/compute/json/security_group_rules_client.py b/tempest/services/compute/json/security_group_rules_client.py
deleted file mode 100644
index 314b1ed..0000000
--- a/tempest/services/compute/json/security_group_rules_client.py
+++ /dev/null
@@ -1,47 +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 tempest.api_schema.response.compute.v2_1 import security_groups as schema
-from tempest.common import service_client
-
-
-class SecurityGroupRulesClient(service_client.ServiceClient):
-
- def create_security_group_rule(self, **kwargs):
- """Creating a new security group rules.
-
- parent_group_id :ID of Security group
- ip_protocol : ip_proto (icmp, tcp, udp).
- from_port: Port at start of range.
- to_port : Port at end of range.
- Following optional keyword arguments are accepted:
- cidr : CIDR for address range.
- group_id : ID of the Source group
- """
- post_body = json.dumps({'security_group_rule': kwargs})
- url = 'os-security-group-rules'
- resp, body = self.post(url, post_body)
- body = json.loads(body)
- self.validate_response(schema.create_security_group_rule, resp, body)
- return service_client.ResponseBody(resp, body)
-
- def delete_security_group_rule(self, group_rule_id):
- """Deletes the provided Security Group rule."""
- resp, body = self.delete('os-security-group-rules/%s' %
- group_rule_id)
- self.validate_response(schema.delete_security_group_rule, resp, body)
- return service_client.ResponseBody(resp, body)
diff --git a/tempest/tests/common/test_service_clients.py b/tempest/tests/common/test_service_clients.py
index 6dfec2d..86c4021 100644
--- a/tempest/tests/common/test_service_clients.py
+++ b/tempest/tests/common/test_service_clients.py
@@ -17,7 +17,6 @@
import six
from tempest.services.baremetal.v1.json import baremetal_client
-from tempest.services.compute.json import security_group_rules_client
from tempest.services.compute.json import server_groups_client
from tempest.services.compute.json import servers_client
from tempest.services.data_processing.v1_1 import data_processing_client
@@ -86,7 +85,6 @@
def test_service_client_creations_with_specified_args(self, mock_init):
test_clients = [
baremetal_client.BaremetalClient,
- security_group_rules_client.SecurityGroupRulesClient,
server_groups_client.ServerGroupsClient,
servers_client.ServersClient,
data_processing_client.DataProcessingClient,
diff --git a/tempest/tests/services/compute/test_security_group_rules_client.py b/tempest/tests/services/compute/test_security_group_rules_client.py
deleted file mode 100644
index c182742..0000000
--- a/tempest/tests/services/compute/test_security_group_rules_client.py
+++ /dev/null
@@ -1,66 +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 tempest.services.compute.json import security_group_rules_client
-from tempest.tests import fake_auth_provider
-from tempest.tests.services.compute import base
-
-
-class TestSecurityGroupRulesClient(base.BaseComputeServiceTest):
-
- FAKE_SECURITY_GROUP_RULE = {
- "security_group_rule": {
- "id": "2d021cf1-ce4b-4292-994f-7a785d62a144",
- "ip_range": {
- "cidr": "0.0.0.0/0"
- },
- "parent_group_id": "48700ff3-30b8-4e63-845f-a79c9633e9fb",
- "to_port": 443,
- "ip_protocol": "tcp",
- "group": {},
- "from_port": 443
- }
- }
-
- def setUp(self):
- super(TestSecurityGroupRulesClient, self).setUp()
- fake_auth = fake_auth_provider.FakeAuthProvider()
- self.client = security_group_rules_client.SecurityGroupRulesClient(
- fake_auth, 'compute', 'regionOne')
-
- def _test_create_security_group_rule(self, bytes_body=False):
- req_body = {
- "from_port": "443",
- "ip_protocol": "tcp",
- "to_port": "443",
- "cidr": "0.0.0.0/0",
- "parent_group_id": "48700ff3-30b8-4e63-845f-a79c9633e9fb"
- }
- self.check_service_client_function(
- self.client.create_security_group_rule,
- 'tempest.common.service_client.ServiceClient.post',
- self.FAKE_SECURITY_GROUP_RULE,
- to_utf=bytes_body, **req_body)
-
- def test_create_security_group_rule_with_str_body(self):
- self._test_create_security_group_rule()
-
- def test_create_security_group_rule_with_bytes_body(self):
- self._test_create_security_group_rule(bytes_body=True)
-
- def test_delete_security_group_rule(self):
- self.check_service_client_function(
- self.client.delete_security_group_rule,
- 'tempest.common.service_client.ServiceClient.delete',
- {}, status=202, group_rule_id='group-id')