diff options
author | John Warren <jswarren@us.ibm.com> | 2015-09-29 10:24:48 -0400 |
---|---|---|
committer | John Warren <jswarren@us.ibm.com> | 2015-09-29 17:01:37 -0400 |
commit | 9b099798d1470f54b263151d7bd8e30eed02ea6d (patch) | |
tree | 27b7cecf35e26e2170e6e4b70cd78f4b65c6ccaa | |
parent | 6757c130b97974754b4a18518ee7598920ce1f8b (diff) | |
download | tempest-lib-9b099798d1470f54b263151d7bd8e30eed02ea6d.tar.gz |
Migrated security_group_default_rules_client.py
This migrates the above files from tempest. This includes tempest commits:
* security_group_default_rules_client.py: Ie39cb8a0d710c1412836f93ce6b3df60faad9f76
* test_security_group_default_rules_client.py: I3ad6761651cec5e66012d08e6b63322f53286a5c
* security_group_default_rule.py: Ica929c402a3d042ae751302384e68853eb28b405
to see the commit history for these files refer to the above Change-Ids in the tempest repository
Partially implements blueprint migrate-service-clients-to-tempest-lib
Change-Id: I8b652aeb82d2a7335212ef7cc021a969ad297c6a
3 files changed, 218 insertions, 0 deletions
diff --git a/tempest_lib/api_schema/response/compute/v2_1/security_group_default_rule.py b/tempest_lib/api_schema/response/compute/v2_1/security_group_default_rule.py new file mode 100644 index 0000000..2ec2826 --- /dev/null +++ b/tempest_lib/api_schema/response/compute/v2_1/security_group_default_rule.py @@ -0,0 +1,65 @@ +# 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_default_rule_info = { + 'type': 'object', + 'properties': { + 'from_port': {'type': 'integer'}, + 'id': {'type': 'integer'}, + 'ip_protocol': {'type': 'string'}, + 'ip_range': { + 'type': 'object', + 'properties': { + 'cidr': {'type': 'string'} + }, + 'additionalProperties': False, + 'required': ['cidr'], + }, + 'to_port': {'type': 'integer'}, + }, + 'additionalProperties': False, + 'required': ['from_port', 'id', 'ip_protocol', 'ip_range', 'to_port'], +} + +create_get_security_group_default_rule = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'security_group_default_rule': + common_security_group_default_rule_info + }, + 'additionalProperties': False, + 'required': ['security_group_default_rule'] + } +} + +delete_security_group_default_rule = { + 'status_code': [204] +} + +list_security_group_default_rules = { + 'status_code': [200], + 'response_body': { + 'type': 'object', + 'properties': { + 'security_group_default_rules': { + 'type': 'array', + 'items': common_security_group_default_rule_info + } + }, + 'additionalProperties': False, + 'required': ['security_group_default_rules'] + } +} diff --git a/tempest_lib/services/compute/security_group_default_rules_client.py b/tempest_lib/services/compute/security_group_default_rules_client.py new file mode 100644 index 0000000..9e0b6e4 --- /dev/null +++ b/tempest_lib/services/compute/security_group_default_rules_client.py @@ -0,0 +1,65 @@ +# 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. + +from oslo_serialization import jsonutils as json + +from tempest_lib.api_schema.response.compute.v2_1 import \ + security_group_default_rule as schema +from tempest_lib.common import rest_client + + +class SecurityGroupDefaultRulesClient(rest_client.RestClient): + + def create_security_default_group_rule(self, **kwargs): + """Creating security group default rules. + + ip_protocol : ip_protocol (icmp, tcp, udp). + from_port: Port at start of range. + to_port : Port at end of range. + cidr : CIDR for address range. + """ + post_body = json.dumps({'security_group_default_rule': kwargs}) + url = 'os-security-group-default-rules' + resp, body = self.post(url, post_body) + body = json.loads(body) + self.validate_response(schema.create_get_security_group_default_rule, + resp, body) + return rest_client.ResponseBody(resp, body) + + def delete_security_group_default_rule(self, + security_group_default_rule_id): + """Deletes the provided Security Group default rule.""" + resp, body = self.delete('os-security-group-default-rules/%s' % ( + security_group_default_rule_id)) + self.validate_response(schema.delete_security_group_default_rule, + resp, body) + return rest_client.ResponseBody(resp, body) + + def list_security_group_default_rules(self): + """List all Security Group default rules.""" + resp, body = self.get('os-security-group-default-rules') + body = json.loads(body) + self.validate_response(schema.list_security_group_default_rules, + resp, body) + return rest_client.ResponseBody(resp, body) + + def show_security_group_default_rule(self, security_group_default_rule_id): + """Return the details of provided Security Group default rule.""" + resp, body = self.get('os-security-group-default-rules/%s' % + security_group_default_rule_id) + body = json.loads(body) + self.validate_response(schema.create_get_security_group_default_rule, + resp, body) + return rest_client.ResponseBody(resp, body) diff --git a/tempest_lib/tests/services/compute/test_security_group_default_rules_client.py b/tempest_lib/tests/services/compute/test_security_group_default_rules_client.py new file mode 100644 index 0000000..d8a5f64 --- /dev/null +++ b/tempest_lib/tests/services/compute/test_security_group_default_rules_client.py @@ -0,0 +1,88 @@ +# 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_lib.services.compute import security_group_default_rules_client +from tempest_lib.tests import fake_auth_provider +from tempest_lib.tests.services.compute import base + + +class TestSecurityGroupDefaultRulesClient(base.BaseComputeServiceTest): + FAKE_RULE = { + "from_port": 80, + "id": 1, + "ip_protocol": "TCP", + "ip_range": { + "cidr": "10.10.10.0/24" + }, + "to_port": 80 + } + + def setUp(self): + super(TestSecurityGroupDefaultRulesClient, self).setUp() + fake_auth = fake_auth_provider.FakeAuthProvider() + self.client = (security_group_default_rules_client. + SecurityGroupDefaultRulesClient(fake_auth, 'compute', + 'regionOne')) + + def _test_list_security_group_default_rules(self, bytes_body=False): + self.check_service_client_function( + self.client.list_security_group_default_rules, + 'tempest_lib.common.rest_client.RestClient.get', + {"security_group_default_rules": [self.FAKE_RULE]}, + to_utf=bytes_body) + + def test_list_security_group_default_rules_with_str_body(self): + self._test_list_security_group_default_rules() + + def test_list_security_group_default_rules_with_bytes_body(self): + self._test_list_security_group_default_rules(bytes_body=True) + + def _test_show_security_group_default_rule(self, bytes_body=False): + self.check_service_client_function( + self.client.show_security_group_default_rule, + 'tempest_lib.common.rest_client.RestClient.get', + {"security_group_default_rule": self.FAKE_RULE}, + to_utf=bytes_body, + security_group_default_rule_id=1) + + def test_show_security_group_default_rule_with_str_body(self): + self._test_show_security_group_default_rule() + + def test_show_security_group_default_rule_with_bytes_body(self): + self._test_show_security_group_default_rule(bytes_body=True) + + def _test_create_security_default_group_rule(self, bytes_body=False): + request_body = { + "to_port": 80, + "from_port": 80, + "ip_protocol": "TCP", + "cidr": "10.10.10.0/24" + } + self.check_service_client_function( + self.client.create_security_default_group_rule, + 'tempest_lib.common.rest_client.RestClient.post', + {"security_group_default_rule": self.FAKE_RULE}, + to_utf=bytes_body, **request_body) + + def test_create_security_default_group_rule_with_str_body(self): + self._test_create_security_default_group_rule() + + def test_create_security_default_group_rule_with_bytes_body(self): + self._test_create_security_default_group_rule(bytes_body=True) + + def test_delete_security_group_default_rule(self): + self.check_service_client_function( + self.client.delete_security_group_default_rule, + 'tempest_lib.common.rest_client.RestClient.delete', + {}, status=204, security_group_default_rule_id=1) |