diff --git a/tempest/api/compute/admin/test_fixed_ips.py b/tempest/api/compute/admin/test_fixed_ips.py index 69c8a82316..ebba73ccf2 100644 --- a/tempest/api/compute/admin/test_fixed_ips.py +++ b/tempest/api/compute/admin/test_fixed_ips.py @@ -29,6 +29,8 @@ class FixedIPsTestJson(base.BaseV2ComputeAdminTest): if CONF.service_available.neutron: msg = ("%s skipped as neutron is available" % cls.__name__) raise cls.skipException(msg) + if not utils.get_service_list()['network']: + raise cls.skipException("network service not enabled.") @classmethod def setup_clients(cls): @@ -49,17 +51,14 @@ class FixedIPsTestJson(base.BaseV2ComputeAdminTest): break @decorators.idempotent_id('16b7d848-2f7c-4709-85a3-2dfb4576cc52') - @utils.services('network') def test_list_fixed_ip_details(self): fixed_ip = self.client.show_fixed_ip(self.ip) self.assertEqual(fixed_ip['fixed_ip']['address'], self.ip) @decorators.idempotent_id('5485077b-7e46-4cec-b402-91dc3173433b') - @utils.services('network') def test_set_reserve(self): self.client.reserve_fixed_ip(self.ip, reserve="None") @decorators.idempotent_id('7476e322-b9ff-4710-bf82-49d51bac6e2e') - @utils.services('network') def test_set_unreserve(self): self.client.reserve_fixed_ip(self.ip, unreserve="None") diff --git a/tempest/api/compute/admin/test_fixed_ips_negative.py b/tempest/api/compute/admin/test_fixed_ips_negative.py index c54c86689c..a5deb3cdbf 100644 --- a/tempest/api/compute/admin/test_fixed_ips_negative.py +++ b/tempest/api/compute/admin/test_fixed_ips_negative.py @@ -29,6 +29,8 @@ class FixedIPsNegativeTestJson(base.BaseV2ComputeAdminTest): if CONF.service_available.neutron: msg = ("%s skipped as neutron is available" % cls.__name__) raise cls.skipException(msg) + if not utils.get_service_list()['network']: + raise cls.skipException("network service not enabled.") @classmethod def setup_clients(cls): @@ -51,14 +53,12 @@ class FixedIPsNegativeTestJson(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('9f17f47d-daad-4adc-986e-12370c93e407') - @utils.services('network') def test_list_fixed_ip_details_with_non_admin_user(self): self.assertRaises(lib_exc.Forbidden, self.non_admin_client.show_fixed_ip, self.ip) @decorators.attr(type=['negative']) @decorators.idempotent_id('ce60042c-fa60-4836-8d43-1c8e3359dc47') - @utils.services('network') def test_set_reserve_with_non_admin_user(self): self.assertRaises(lib_exc.Forbidden, self.non_admin_client.reserve_fixed_ip, @@ -66,7 +66,6 @@ class FixedIPsNegativeTestJson(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('f1f7a35b-0390-48c5-9803-5f27461439db') - @utils.services('network') def test_set_unreserve_with_non_admin_user(self): self.assertRaises(lib_exc.Forbidden, self.non_admin_client.reserve_fixed_ip, @@ -74,7 +73,6 @@ class FixedIPsNegativeTestJson(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('f51cf464-7fc5-4352-bc3e-e75cfa2cb717') - @utils.services('network') def test_set_reserve_with_invalid_ip(self): # NOTE(maurosr): since this exercises the same code snippet, we do it # only for reserve action @@ -87,7 +85,6 @@ class FixedIPsNegativeTestJson(base.BaseV2ComputeAdminTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('fd26ef50-f135-4232-9d32-281aab3f9176') - @utils.services('network') def test_fixed_ip_with_invalid_action(self): self.assertRaises(lib_exc.BadRequest, self.client.reserve_fixed_ip, diff --git a/tempest/api/compute/floating_ips/test_floating_ips_actions.py b/tempest/api/compute/floating_ips/test_floating_ips_actions.py index 4001e26f47..9ee0ac99bd 100644 --- a/tempest/api/compute/floating_ips/test_floating_ips_actions.py +++ b/tempest/api/compute/floating_ips/test_floating_ips_actions.py @@ -32,6 +32,8 @@ class FloatingIPsTestJSON(base.BaseFloatingIPsTest): @classmethod def skip_checks(cls): super(FloatingIPsTestJSON, cls).skip_checks() + if not utils.get_service_list()['network']: + raise cls.skipException("network service not enabled.") if not CONF.network_feature_enabled.floating_ips: raise cls.skipException("Floating ips are not available") @@ -62,7 +64,6 @@ class FloatingIPsTestJSON(base.BaseFloatingIPsTest): super(FloatingIPsTestJSON, cls).resource_cleanup() @decorators.idempotent_id('f7bfb946-297e-41b8-9e8c-aba8e9bb5194') - @utils.services('network') def test_allocate_floating_ip(self): # Positive test:Allocation of a new floating IP to a project # should be successful @@ -78,7 +79,6 @@ class FloatingIPsTestJSON(base.BaseFloatingIPsTest): self.assertIn(floating_ip_details, body) @decorators.idempotent_id('de45e989-b5ca-4a9b-916b-04a52e7bbb8b') - @utils.services('network') def test_delete_floating_ip(self): # Positive test:Deletion of valid floating IP from project # should be successful @@ -93,7 +93,6 @@ class FloatingIPsTestJSON(base.BaseFloatingIPsTest): self.client.wait_for_resource_deletion(floating_ip_body['id']) @decorators.idempotent_id('307efa27-dc6f-48a0-8cd2-162ce3ef0b52') - @utils.services('network') @testtools.skipUnless(CONF.network.public_network_id, 'The public_network_id option must be specified.') def test_associate_disassociate_floating_ip(self): @@ -116,7 +115,6 @@ class FloatingIPsTestJSON(base.BaseFloatingIPsTest): self.server_id) @decorators.idempotent_id('6edef4b2-aaf1-4abc-bbe3-993e2561e0fe') - @utils.services('network') @testtools.skipUnless(CONF.network.public_network_id, 'The public_network_id option must be specified.') def test_associate_already_associated_floating_ip(self): diff --git a/tempest/api/compute/floating_ips/test_floating_ips_actions_negative.py b/tempest/api/compute/floating_ips/test_floating_ips_actions_negative.py index 3455a81ac3..c3d7816733 100644 --- a/tempest/api/compute/floating_ips/test_floating_ips_actions_negative.py +++ b/tempest/api/compute/floating_ips/test_floating_ips_actions_negative.py @@ -30,6 +30,8 @@ class FloatingIPsNegativeTestJSON(base.BaseFloatingIPsTest): @classmethod def skip_checks(cls): super(FloatingIPsNegativeTestJSON, cls).skip_checks() + if not utils.get_service_list()['network']: + raise cls.skipException("network service not enabled.") if not CONF.network_feature_enabled.floating_ips: raise cls.skipException("Floating ips are not available") @@ -58,7 +60,6 @@ class FloatingIPsNegativeTestJSON(base.BaseFloatingIPsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('6e0f059b-e4dd-48fb-8207-06e3bba5b074') - @utils.services('network') def test_allocate_floating_ip_from_nonexistent_pool(self): # Negative test:Allocation of a new floating IP from a nonexistent_pool # to a project should fail @@ -68,7 +69,6 @@ class FloatingIPsNegativeTestJSON(base.BaseFloatingIPsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('ae1c55a8-552b-44d4-bfb6-2a115a15d0ba') - @utils.services('network') def test_delete_nonexistent_floating_ip(self): # Negative test:Deletion of a nonexistent floating IP # from project should fail @@ -79,7 +79,6 @@ class FloatingIPsNegativeTestJSON(base.BaseFloatingIPsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('595fa616-1a71-4670-9614-46564ac49a4c') - @utils.services('network') def test_associate_nonexistent_floating_ip(self): # Negative test:Association of a non existent floating IP # to specific server should fail @@ -90,7 +89,6 @@ class FloatingIPsNegativeTestJSON(base.BaseFloatingIPsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('0a081a66-e568-4e6b-aa62-9587a876dca8') - @utils.services('network') def test_dissociate_nonexistent_floating_ip(self): # Negative test:Dissociation of a non existent floating IP should fail # Dissociating non existent floating IP @@ -100,7 +98,6 @@ class FloatingIPsNegativeTestJSON(base.BaseFloatingIPsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('804b4fcb-bbf5-412f-925d-896672b61eb3') - @utils.services('network') def test_associate_ip_to_server_without_passing_floating_ip(self): # Negative test:Association of empty floating IP to specific server # should raise NotFound or BadRequest(In case of Nova V2.1) exception. @@ -110,7 +107,6 @@ class FloatingIPsNegativeTestJSON(base.BaseFloatingIPsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('58a80596-ffb2-11e6-9393-fa163e4fa634') - @utils.services('network') @testtools.skipUnless(CONF.network.public_network_id, 'The public_network_id option must be specified.') def test_associate_ip_to_server_with_floating_ip(self): diff --git a/tempest/api/compute/floating_ips/test_list_floating_ips.py b/tempest/api/compute/floating_ips/test_list_floating_ips.py index 04d18c01a3..2314433ab3 100644 --- a/tempest/api/compute/floating_ips/test_list_floating_ips.py +++ b/tempest/api/compute/floating_ips/test_list_floating_ips.py @@ -26,6 +26,8 @@ class FloatingIPDetailsTestJSON(base.BaseV2ComputeTest): @classmethod def skip_checks(cls): super(FloatingIPDetailsTestJSON, cls).skip_checks() + if not utils.get_service_list()['network']: + raise cls.skipException("network service not enabled.") if not CONF.network_feature_enabled.floating_ips: raise cls.skipException("Floating ips are not available") @@ -53,7 +55,6 @@ class FloatingIPDetailsTestJSON(base.BaseV2ComputeTest): super(FloatingIPDetailsTestJSON, cls).resource_cleanup() @decorators.idempotent_id('16db31c3-fb85-40c9-bbe2-8cf7b67ff99f') - @utils.services('network') def test_list_floating_ips(self): # Positive test:Should return the list of floating IPs body = self.client.list_floating_ips()['floating_ips'] @@ -64,7 +65,6 @@ class FloatingIPDetailsTestJSON(base.BaseV2ComputeTest): self.assertIn(self.floating_ip[i], floating_ips) @decorators.idempotent_id('eef497e0-8ff7-43c8-85ef-558440574f84') - @utils.services('network') def test_get_floating_ip_details(self): # Positive test:Should be able to GET the details of floatingIP # Creating a floating IP for which details are to be checked @@ -86,7 +86,6 @@ class FloatingIPDetailsTestJSON(base.BaseV2ComputeTest): self.assertEqual(floating_ip_id, body['id']) @decorators.idempotent_id('df389fc8-56f5-43cc-b290-20eda39854d3') - @utils.services('network') def test_list_floating_ip_pools(self): # Positive test:Should return the list of floating IP Pools floating_ip_pools = self.pools_client.list_floating_ip_pools() diff --git a/tempest/api/compute/floating_ips/test_list_floating_ips_negative.py b/tempest/api/compute/floating_ips/test_list_floating_ips_negative.py index f0b9fa5118..0ade872bb0 100644 --- a/tempest/api/compute/floating_ips/test_list_floating_ips_negative.py +++ b/tempest/api/compute/floating_ips/test_list_floating_ips_negative.py @@ -28,6 +28,8 @@ class FloatingIPDetailsNegativeTestJSON(base.BaseV2ComputeTest): @classmethod def skip_checks(cls): super(FloatingIPDetailsNegativeTestJSON, cls).skip_checks() + if not utils.get_service_list()['network']: + raise cls.skipException("network service not enabled.") if not CONF.network_feature_enabled.floating_ips: raise cls.skipException("Floating ips are not available") @@ -38,7 +40,6 @@ class FloatingIPDetailsNegativeTestJSON(base.BaseV2ComputeTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('7ab18834-4a4b-4f28-a2c5-440579866695') - @utils.services('network') def test_get_nonexistent_floating_ip_details(self): # Negative test:Should not be able to GET the details # of non-existent floating IP diff --git a/tempest/api/compute/security_groups/base.py b/tempest/api/compute/security_groups/base.py index 5260a99bb7..54a6da8c26 100644 --- a/tempest/api/compute/security_groups/base.py +++ b/tempest/api/compute/security_groups/base.py @@ -23,6 +23,12 @@ CONF = config.CONF class BaseSecurityGroupsTest(base.BaseV2ComputeTest): + @classmethod + def skip_checks(cls): + super(BaseSecurityGroupsTest, cls).skip_checks() + if not utils.get_service_list()['network']: + raise cls.skipException("network service not enabled.") + @classmethod def setup_credentials(cls): # A network and a subnet will be created for these tests diff --git a/tempest/api/compute/security_groups/test_security_group_rules.py b/tempest/api/compute/security_groups/test_security_group_rules.py index 06edc1ca72..4c99ea62bc 100644 --- a/tempest/api/compute/security_groups/test_security_group_rules.py +++ b/tempest/api/compute/security_groups/test_security_group_rules.py @@ -14,7 +14,6 @@ # under the License. from tempest.api.compute.security_groups import base -from tempest.common import utils from tempest.lib import decorators @@ -55,7 +54,6 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type='smoke') @decorators.idempotent_id('850795d7-d4d3-4e55-b527-a774c0123d3a') - @utils.services('network') def test_security_group_rules_create(self): # Positive test: Creation of Security Group rule # should be successful @@ -73,7 +71,6 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest): self._check_expected_response(rule) @decorators.idempotent_id('7a01873e-3c38-4f30-80be-31a043cfe2fd') - @utils.services('network') def test_security_group_rules_create_with_optional_cidr(self): # Positive test: Creation of Security Group rule # with optional argument cidr @@ -96,7 +93,6 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest): self._check_expected_response(rule) @decorators.idempotent_id('7f5d2899-7705-4d4b-8458-4505188ffab6') - @utils.services('network') def test_security_group_rules_create_with_optional_group_id(self): # Positive test: Creation of Security Group rule # with optional argument group_id @@ -125,7 +121,6 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type='smoke') @decorators.idempotent_id('a6154130-5a55-4850-8be4-5e9e796dbf17') - @utils.services('network') def test_security_group_rules_list(self): # Positive test: Created Security Group rules should be # in the list of all rules @@ -163,7 +158,6 @@ class SecurityGroupRulesTestJSON(base.BaseSecurityGroupsTest): self.assertNotEmpty([i for i in rules if i['id'] == rule2_id]) @decorators.idempotent_id('fc5c5acf-2091-43a6-a6ae-e42760e9ffaf') - @utils.services('network') def test_security_group_rules_delete_when_peer_group_deleted(self): # Positive test:rule will delete when peer group deleting # Creating a Security Group to add rules to it diff --git a/tempest/api/compute/security_groups/test_security_group_rules_negative.py b/tempest/api/compute/security_groups/test_security_group_rules_negative.py index f344d84743..8283aae22c 100644 --- a/tempest/api/compute/security_groups/test_security_group_rules_negative.py +++ b/tempest/api/compute/security_groups/test_security_group_rules_negative.py @@ -14,7 +14,6 @@ # under the License. from tempest.api.compute.security_groups import base -from tempest.common import utils from tempest.lib.common.utils import data_utils from tempest.lib import decorators from tempest.lib import exceptions as lib_exc @@ -29,7 +28,6 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('1d507e98-7951-469b-82c3-23f1e6b8c254') - @utils.services('network') def test_create_security_group_rule_with_non_existent_id(self): # Negative test: Creation of Security Group rule should FAIL # with non existent Parent group id @@ -46,7 +44,6 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('2244d7e4-adb7-4ecb-9930-2d77e123ce4f') - @utils.services('network') def test_create_security_group_rule_with_invalid_id(self): # Negative test: Creation of Security Group rule should FAIL # with Parent group id which is not integer @@ -63,7 +60,6 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('8bd56d02-3ffa-4d67-9933-b6b9a01d6089') - @utils.services('network') def test_create_security_group_rule_duplicate(self): # Negative test: Create Security Group rule duplicate should fail # Creating a Security Group to add rule to it @@ -88,7 +84,6 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('84c81249-9f6e-439c-9bbf-cbb0d2cddbdf') - @utils.services('network') def test_create_security_group_rule_with_invalid_ip_protocol(self): # Negative test: Creation of Security Group rule should FAIL # with invalid ip_protocol @@ -108,7 +103,6 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('12bbc875-1045-4f7a-be46-751277baedb9') - @utils.services('network') def test_create_security_group_rule_with_invalid_from_port(self): # Negative test: Creation of Security Group rule should FAIL # with invalid from_port @@ -127,7 +121,6 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('ff88804d-144f-45d1-bf59-dd155838a43a') - @utils.services('network') def test_create_security_group_rule_with_invalid_to_port(self): # Negative test: Creation of Security Group rule should FAIL # with invalid to_port @@ -146,7 +139,6 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('00296fa9-0576-496a-ae15-fbab843189e0') - @utils.services('network') def test_create_security_group_rule_with_invalid_port_range(self): # Negative test: Creation of Security Group rule should FAIL # with invalid port range. @@ -165,7 +157,6 @@ class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('56fddcca-dbb8-4494-a0db-96e9f869527c') - @utils.services('network') def test_delete_security_group_rule_with_non_existent_id(self): # Negative test: Deletion of Security Group rule should be FAIL # with non existent id diff --git a/tempest/api/compute/security_groups/test_security_groups.py b/tempest/api/compute/security_groups/test_security_groups.py index 01b19caab8..eeb423e3af 100644 --- a/tempest/api/compute/security_groups/test_security_groups.py +++ b/tempest/api/compute/security_groups/test_security_groups.py @@ -14,7 +14,6 @@ # under the License. from tempest.api.compute.security_groups import base -from tempest.common import utils from tempest.common import waiters from tempest.lib.common.utils import data_utils from tempest.lib import decorators @@ -30,7 +29,6 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type='smoke') @decorators.idempotent_id('eb2b087d-633d-4d0d-a7bd-9e6ba35b32de') - @utils.services('network') def test_security_groups_create_list_delete(self): # Positive test:Should return the list of Security Groups # Create 3 Security Groups @@ -62,7 +60,6 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest): for m_group in deleted_sgs)) @decorators.idempotent_id('ecc0da4a-2117-48af-91af-993cca39a615') - @utils.services('network') def test_security_group_create_get_delete(self): # Security Group should be created, fetched and deleted # with char space between name along with @@ -83,7 +80,6 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest): self.client.wait_for_resource_deletion(securitygroup['id']) @decorators.idempotent_id('fe4abc0d-83f5-4c50-ad11-57a1127297a2') - @utils.services('network') def test_server_security_groups(self): # Checks that security groups may be added and linked to a server # and not deleted if the server is active. @@ -125,7 +121,6 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest): self.client.delete_security_group(sg2['id']) @decorators.idempotent_id('7d4e1d3c-3209-4d6d-b020-986304ebad1f') - @utils.services('network') def test_update_security_groups(self): # Update security group name and description # Create a security group @@ -144,7 +139,6 @@ class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest): self.assertEqual(s_new_des, fetched_group['description']) @decorators.idempotent_id('79517d60-535a-438f-af3d-e6feab1cbea7') - @utils.services('network') def test_list_security_groups_by_server(self): # Create a couple security groups that we will use # for the server resource this test creates diff --git a/tempest/api/compute/security_groups/test_security_groups_negative.py b/tempest/api/compute/security_groups/test_security_groups_negative.py index e727dbbd78..9c44bb28ee 100644 --- a/tempest/api/compute/security_groups/test_security_groups_negative.py +++ b/tempest/api/compute/security_groups/test_security_groups_negative.py @@ -16,7 +16,6 @@ import testtools from tempest.api.compute.security_groups import base -from tempest.common import utils from tempest import config from tempest.lib.common.utils import data_utils from tempest.lib import decorators @@ -34,7 +33,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('673eaec1-9b3e-48ed-bdf1-2786c1b9661c') - @utils.services('network') def test_security_group_get_nonexistent_group(self): # Negative test:Should not be able to GET the details # of non-existent Security Group @@ -46,7 +44,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): condition=CONF.service_available.neutron) @decorators.attr(type=['negative']) @decorators.idempotent_id('1759c3cb-b0fc-44b7-86ce-c99236be911d') - @utils.services('network') def test_security_group_create_with_invalid_group_name(self): # Negative test: Security Group should not be created with group name # as an empty string/with white spaces/chars more than 255 @@ -69,7 +66,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): condition=CONF.service_available.neutron) @decorators.attr(type=['negative']) @decorators.idempotent_id('777b6f14-aca9-4758-9e84-38783cfa58bc') - @utils.services('network') def test_security_group_create_with_invalid_group_description(self): # Negative test: Security Group should not be created with description # longer than 255 chars. Empty description is allowed by the API @@ -85,7 +81,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @testtools.skipIf(CONF.service_available.neutron, "Neutron allows duplicate names for security groups") @decorators.attr(type=['negative']) - @utils.services('network') def test_security_group_create_with_duplicate_name(self): # Negative test:Security Group with duplicate name should not # be created @@ -99,7 +94,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('36a1629f-c6da-4a26-b8b8-55e7e5d5cd58') - @utils.services('network') def test_delete_the_default_security_group(self): # Negative test:Deletion of the "default" Security Group should Fail default_security_group_id = None @@ -115,7 +109,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('6727c00b-214c-4f9e-9a52-017ac3e98411') - @utils.services('network') def test_delete_nonexistent_security_group(self): # Negative test:Deletion of a non-existent Security Group should fail non_exist_id = self.generate_random_security_group_id() @@ -124,7 +117,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('1438f330-8fa4-4aeb-8a94-37c250106d7f') - @utils.services('network') def test_delete_security_group_without_passing_id(self): # Negative test:Deletion of a Security Group with out passing ID # should Fail @@ -135,7 +127,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @testtools.skipIf(CONF.service_available.neutron, "Neutron does not check the security group ID") @decorators.attr(type=['negative']) - @utils.services('network') def test_update_security_group_with_invalid_sg_id(self): # Update security_group with invalid sg_id should fail s_name = data_utils.rand_name('sg') @@ -150,7 +141,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @testtools.skipIf(CONF.service_available.neutron, "Neutron does not check the security group name") @decorators.attr(type=['negative']) - @utils.services('network') def test_update_security_group_with_invalid_sg_name(self): # Update security_group with invalid sg_name should fail securitygroup = self.create_security_group() @@ -165,7 +155,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @testtools.skipIf(CONF.service_available.neutron, "Neutron does not check the security group description") @decorators.attr(type=['negative']) - @utils.services('network') def test_update_security_group_with_invalid_sg_des(self): # Update security_group with invalid sg_des should fail securitygroup = self.create_security_group() @@ -178,7 +167,6 @@ class SecurityGroupsNegativeTestJSON(base.BaseSecurityGroupsTest): @decorators.attr(type=['negative']) @decorators.idempotent_id('27edee9c-873d-4da6-a68a-3c256efebe8f') - @utils.services('network') def test_update_non_existent_security_group(self): # Update a non-existent Security Group should Fail non_exist_id = self.generate_random_security_group_id()